From 64d4d54dbe35da01c029c44d84c218a158c9d3ac Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 8 Dec 2024 20:03:05 +0100 Subject: [PATCH] feat(data-service): add fetchData method to DataService and its implementations --- src/app/services/data.service.ts | 3 +++ src/app/services/pwa.service.ts | 5 +++++ src/app/services/tauri.service.ts | 21 ++++++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/app/services/data.service.ts b/src/app/services/data.service.ts index 29c4bcfe2..10a199d5c 100644 --- a/src/app/services/data.service.ts +++ b/src/app/services/data.service.ts @@ -1,3 +1,5 @@ +import { Params } from '@angular/router'; + export abstract class DataService { get isElectron(): boolean { return !!(window && window.process && (window.process as any).type); @@ -11,6 +13,7 @@ export abstract class DataService { abstract getAppVersion(): string; abstract sendIpcEvent(type: string, payload?: unknown); abstract removeAllListeners(type: string): void; + abstract fetchData(url: string, queryParams: Params): any; abstract listenOn( command: string, callback: (...args: any[]) => void diff --git a/src/app/services/pwa.service.ts b/src/app/services/pwa.service.ts index a9aa4dd6b..77bfe1bb3 100644 --- a/src/app/services/pwa.service.ts +++ b/src/app/services/pwa.service.ts @@ -1,6 +1,7 @@ import { HttpClient } from '@angular/common/http'; import { inject, Injectable } from '@angular/core'; import { MatSnackBar } from '@angular/material/snack-bar'; +import { Params } from '@angular/router'; import { SwUpdate } from '@angular/service-worker'; import { Store } from '@ngrx/store'; import { TranslateService } from '@ngx-translate/core'; @@ -236,4 +237,8 @@ export class PwaService extends DataService { getAppEnvironment(): string { return 'pwa'; } + + fetchData(url: string, queryParams: Params) { + // not implemented + } } diff --git a/src/app/services/tauri.service.ts b/src/app/services/tauri.service.ts index e83f28725..8c8017ea2 100644 --- a/src/app/services/tauri.service.ts +++ b/src/app/services/tauri.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { Params } from '@angular/router'; import { invoke } from '@tauri-apps/api/core'; import { fetch } from '@tauri-apps/plugin-http'; import { parse } from 'iptv-playlist-parser'; @@ -37,7 +38,6 @@ export class TauriService extends DataService { payload as { url: string; params: Record } ); } else if (type === 'STALKER_REQUEST') { - console.log('STALKER_REQUEST'); this.fetchStalkerData( payload as { url: string; @@ -83,7 +83,6 @@ export class TauriService extends DataService { params: Record; }) { try { - console.log(payload); const url = new URL(payload.url); Object.entries(payload.params).forEach(([key, value]) => { @@ -104,7 +103,6 @@ export class TauriService extends DataService { } const result = await response.json(); - console.log(result); window.postMessage({ type: 'STALKER_RESPONSE', payload: result, @@ -203,4 +201,21 @@ export class TauriService extends DataService { getAppEnvironment(): string { return 'tauri'; } + + async fetchData(url: string, queryParams: Params) { + const urlObject = new URL(url); + Object.entries(queryParams).forEach(([key, value]) => { + urlObject.searchParams.append(key, value); + }); + const response = await fetch(urlObject.toString()); + if (!response.ok) { + throw new Error( + `Error: ${response.statusText} (Status: ${response.status})` + ); + } + + console.log(url, queryParams); + const result = await response.json(); + return result; + } }