diff --git a/apps/web/src/assets/i18n/ar.json b/apps/web/src/assets/i18n/ar.json index 680a15b6c..8a5f94d5b 100644 --- a/apps/web/src/assets/i18n/ar.json +++ b/apps/web/src/assets/i18n/ar.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/ary.json b/apps/web/src/assets/i18n/ary.json index c7c4cfb4c..8b3eb0d20 100644 --- a/apps/web/src/assets/i18n/ary.json +++ b/apps/web/src/assets/i18n/ary.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/by.json b/apps/web/src/assets/i18n/by.json index 2060c6ca3..c007f27bc 100644 --- a/apps/web/src/assets/i18n/by.json +++ b/apps/web/src/assets/i18n/by.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index 95fd05a28..7622e95a0 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/el.json b/apps/web/src/assets/i18n/el.json index e28a5e744..0ffdabd73 100644 --- a/apps/web/src/assets/i18n/el.json +++ b/apps/web/src/assets/i18n/el.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/en.json b/apps/web/src/assets/i18n/en.json index b257f2546..ef090ecc2 100644 --- a/apps/web/src/assets/i18n/en.json +++ b/apps/web/src/assets/i18n/en.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/es.json b/apps/web/src/assets/i18n/es.json index c897e37c2..7147f48dd 100644 --- a/apps/web/src/assets/i18n/es.json +++ b/apps/web/src/assets/i18n/es.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/fr.json b/apps/web/src/assets/i18n/fr.json index c920d55d6..965fad288 100644 --- a/apps/web/src/assets/i18n/fr.json +++ b/apps/web/src/assets/i18n/fr.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/it.json b/apps/web/src/assets/i18n/it.json index 362a8d6bd..2cdc39636 100644 --- a/apps/web/src/assets/i18n/it.json +++ b/apps/web/src/assets/i18n/it.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/ja.json b/apps/web/src/assets/i18n/ja.json index e0ef7e25c..30db48e09 100644 --- a/apps/web/src/assets/i18n/ja.json +++ b/apps/web/src/assets/i18n/ja.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/ko.json b/apps/web/src/assets/i18n/ko.json index 60f7d98ae..cd288bd82 100644 --- a/apps/web/src/assets/i18n/ko.json +++ b/apps/web/src/assets/i18n/ko.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/nl.json b/apps/web/src/assets/i18n/nl.json index 0ad6db9c4..82713e78f 100644 --- a/apps/web/src/assets/i18n/nl.json +++ b/apps/web/src/assets/i18n/nl.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/pl.json b/apps/web/src/assets/i18n/pl.json index 25ea5a431..69e3909d5 100644 --- a/apps/web/src/assets/i18n/pl.json +++ b/apps/web/src/assets/i18n/pl.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/pt.json b/apps/web/src/assets/i18n/pt.json index 334411167..23dee464d 100644 --- a/apps/web/src/assets/i18n/pt.json +++ b/apps/web/src/assets/i18n/pt.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/ru.json b/apps/web/src/assets/i18n/ru.json index 32b022f5c..6b2154d49 100644 --- a/apps/web/src/assets/i18n/ru.json +++ b/apps/web/src/assets/i18n/ru.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "Браузерный плеер не получил доступ к потоку", "DESCRIPTION": "Запрос может быть заблокирован CORS, mixed content или требованиями провайдера/прокси к заголовкам. MPV или VLC часто обходят такие ограничения браузерного плеера.", - "PWA_DESCRIPTION": "Запрос может быть заблокирован CORS, mixed content или требованиями провайдера/прокси к заголовкам. Скопируйте URL потока и откройте его вручную во внешнем плеере, например MPV, VLC или IINA." + "PWA_DESCRIPTION": "Запрос может быть заблокирован CORS, mixed content или требованиями провайдера/прокси к заголовкам. PWA не может запускать внешние плееры напрямую: нажмите «Скопировать URL потока» и откройте его вручную в MPV, VLC, IINA или другом плеере." }, "DRM_OR_ENCRYPTION": { "TITLE": "Поток может быть зашифрован или защищен DRM", diff --git a/apps/web/src/assets/i18n/tr.json b/apps/web/src/assets/i18n/tr.json index 9b2dda25c..09de557b1 100644 --- a/apps/web/src/assets/i18n/tr.json +++ b/apps/web/src/assets/i18n/tr.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/zh.json b/apps/web/src/assets/i18n/zh.json index feb0602a4..0106a2665 100644 --- a/apps/web/src/assets/i18n/zh.json +++ b/apps/web/src/assets/i18n/zh.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/apps/web/src/assets/i18n/zhtw.json b/apps/web/src/assets/i18n/zhtw.json index 256c21258..d16b14a9a 100644 --- a/apps/web/src/assets/i18n/zhtw.json +++ b/apps/web/src/assets/i18n/zhtw.json @@ -408,7 +408,7 @@ "BROWSER_ACCESS_ERROR": { "TITLE": "The browser player could not access this stream", "DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.", - "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. Copy the stream URL and open it manually in an external player such as MPV, VLC, or IINA to bypass browser-player access limits." + "PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player." }, "DRM_OR_ENCRYPTION": { "TITLE": "This stream may be encrypted or DRM-protected", diff --git a/libs/ui/playback/src/lib/web-player-view/web-player-view.component.spec.ts b/libs/ui/playback/src/lib/web-player-view/web-player-view.component.spec.ts index f83ce3fe5..8a49f8424 100644 --- a/libs/ui/playback/src/lib/web-player-view/web-player-view.component.spec.ts +++ b/libs/ui/playback/src/lib/web-player-view/web-player-view.component.spec.ts @@ -9,6 +9,7 @@ import { StorageMap } from '@ngx-pwa/local-storage'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; import { VideoPlayer } from '@iptvnator/shared/interfaces'; +import { RuntimeCapabilitiesService } from '@iptvnator/services'; import type { WebPlayerViewComponent as WebPlayerViewComponentInstance } from './web-player-view.component'; import { PlaybackDiagnostic, @@ -79,7 +80,7 @@ describe('WebPlayerViewComponent', () => { const storageMap = { get: jest.fn(() => of({ player: VideoPlayer.VideoJs })), }; - const originalElectron = window.electron; + let runtimeCapabilities: { supportsManagedExternalPlayers: boolean }; beforeAll(async () => { ({ WebPlayerViewComponent } = @@ -87,9 +88,17 @@ describe('WebPlayerViewComponent', () => { }); beforeEach(async () => { + runtimeCapabilities = { supportsManagedExternalPlayers: false }; + await TestBed.configureTestingModule({ imports: [WebPlayerViewComponent, TranslateModule.forRoot()], - providers: [{ provide: StorageMap, useValue: storageMap }], + providers: [ + { provide: StorageMap, useValue: storageMap }, + { + provide: RuntimeCapabilitiesService, + useValue: runtimeCapabilities, + }, + ], }) .overrideComponent(WebPlayerViewComponent, { set: { @@ -119,7 +128,6 @@ describe('WebPlayerViewComponent', () => { }); afterEach(() => { - window.electron = originalElectron; fixture.destroy(); }); @@ -129,17 +137,9 @@ describe('WebPlayerViewComponent', () => { expect(fixture.nativeElement.classList).toContain('web-player-view'); }); - it('renders diagnostics and emits MPV fallback requests on desktop', () => { + it('renders diagnostics and emits MPV fallback requests when managed external players are available', () => { const requests: unknown[] = []; - fixture.destroy(); - window.electron = {} as typeof window.electron; - fixture = TestBed.createComponent(WebPlayerViewComponent); - component = fixture.componentInstance; - fixture.componentRef.setInput( - 'streamUrl', - 'https://example.com/archive/movie.mkv' - ); - fixture.componentRef.setInput('title', 'Example Movie'); + runtimeCapabilities.supportsManagedExternalPlayers = true; component.externalFallbackRequested.subscribe((request) => requests.push(request) ); @@ -315,14 +315,7 @@ describe('WebPlayerViewComponent', () => { }); it('keeps the desktop browser access diagnostic description key', () => { - fixture.destroy(); - window.electron = {} as typeof window.electron; - fixture = TestBed.createComponent(WebPlayerViewComponent); - component = fixture.componentInstance; - fixture.componentRef.setInput( - 'streamUrl', - 'https://example.com/archive/movie.mkv' - ); + runtimeCapabilities.supportsManagedExternalPlayers = true; const issue = createBrowserAccessDiagnostic(); expect(component.getDiagnosticDescriptionKey(issue)).toBe( diff --git a/libs/ui/playback/src/lib/web-player-view/web-player-view.component.ts b/libs/ui/playback/src/lib/web-player-view/web-player-view.component.ts index 8d381f286..2d5aeca66 100644 --- a/libs/ui/playback/src/lib/web-player-view/web-player-view.component.ts +++ b/libs/ui/playback/src/lib/web-player-view/web-player-view.component.ts @@ -25,6 +25,7 @@ import { VideoPlayer, } from '@iptvnator/shared/interfaces'; import type { ExternalPlayerName } from '@iptvnator/shared/interfaces'; +import { RuntimeCapabilitiesService } from '@iptvnator/services'; import { ArtPlayerComponent } from '../art-player/art-player.component'; import { EmbeddedMpvPlayerComponent } from '../embedded-mpv-player/embedded-mpv-player.component'; import { HtmlVideoPlayerComponent } from '../html-video-player/html-video-player.component'; @@ -64,6 +65,7 @@ type PlaybackDiagnosticDetail = { }) export class WebPlayerViewComponent { storage = inject(StorageMap); + private readonly runtime = inject(RuntimeCapabilitiesService); streamUrl = input.required(); title = input(''); @@ -89,12 +91,11 @@ export class WebPlayerViewComponent { reloadToken: number; sources: { src: string; type: string }[]; }; - readonly isDesktop = signal(this.detectDesktop()); readonly reloadToken = signal(0); readonly playbackDiagnostic = signal(null); readonly canShowExternalFallbackActions = computed( () => - this.isDesktop() && + this.runtime.supportsManagedExternalPlayers && !!this.playbackDiagnostic()?.externalFallbackRecommended ); readonly diagnosticHeadlineKey = computed(() => @@ -224,7 +225,7 @@ export class WebPlayerViewComponent { getDiagnosticDescriptionKey(issue: PlaybackDiagnostic): string { if ( issue.code === PlaybackDiagnosticCode.BrowserAccessError && - !this.isDesktop() + !this.runtime.supportsManagedExternalPlayers ) { return 'PLAYBACK_DIAGNOSTICS.BROWSER_ACCESS_ERROR.PWA_DESCRIPTION'; } @@ -312,10 +313,6 @@ export class WebPlayerViewComponent { } } - private detectDesktop(): boolean { - return typeof window !== 'undefined' && !!window.electron; - } - private isLivePlayback(playback: ResolvedPortalPlayback): boolean { if (typeof playback.isLive === 'boolean') { return playback.isLive;