diff --git a/apps/web/src/app/settings/settings.component.spec.ts b/apps/web/src/app/settings/settings.component.spec.ts index 2cd48a890..006f003c7 100644 --- a/apps/web/src/app/settings/settings.component.spec.ts +++ b/apps/web/src/app/settings/settings.component.spec.ts @@ -705,6 +705,10 @@ describe('SettingsComponent', () => { .mockResolvedValue(undefined); browserFixture.detectChanges(); + expect(browserComponent.isDesktop).toBe(false); + expect(browserComponent.isPwa).toBe(true); + expect(browserComponent.settingsForm.get('epgUrl')).toBeNull(); + mockStore.overrideSelector(selectAllPlaylistsMeta, [ createPlaylistMeta({ _id: 'browser-m3u' }), ]); diff --git a/apps/web/src/app/settings/settings.component.ts b/apps/web/src/app/settings/settings.component.ts index 5c229ac67..010f6cd93 100644 --- a/apps/web/src/app/settings/settings.component.ts +++ b/apps/web/src/app/settings/settings.component.ts @@ -43,6 +43,7 @@ import { PlaylistBackupImportSummary, PlaylistBackupService, PlaylistsService, + RuntimeCapabilitiesService, } from '@iptvnator/services'; import { EmbeddedMpvSupport, @@ -121,6 +122,7 @@ export class SettingsComponent implements OnInit, OnDestroy { private matDialog = inject(MatDialog); private playlistBackupService = inject(PlaylistBackupService); private readonly databaseService = inject(DatabaseService); + private readonly runtime = inject(RuntimeCapabilitiesService); private readonly dialogData = inject<{ isDialog: boolean } | null>( MAT_DIALOG_DATA, { optional: true } @@ -134,13 +136,13 @@ export class SettingsComponent implements OnInit, OnDestroy { readonly streamFormatEnum = StreamFormat; /** Flag that indicates whether the app runs in electron environment */ - readonly isDesktop = !!window.electron; + readonly isDesktop = this.runtime.isElectron; readonly embeddedMpvSupport = signal(null); readonly supportsEmbeddedMpv = computed( () => this.isDesktop && !!this.embeddedMpvSupport()?.supported ); - isPwa = this.dataService.getAppEnvironment() === 'pwa'; + readonly isPwa = this.runtime.isPwa; private readonly settingsCtx = inject(SettingsContextService); readonly activeSection = this.settingsCtx.activeSection;