diff --git a/web/src/lib/components/asset-viewer/photo-viewer.spec.ts b/web/src/lib/components/asset-viewer/photo-viewer.spec.ts index e1372e37da..2e20bedece 100644 --- a/web/src/lib/components/asset-viewer/photo-viewer.spec.ts +++ b/web/src/lib/components/asset-viewer/photo-viewer.spec.ts @@ -23,6 +23,28 @@ describe('PhotoViewer component', () => { beforeAll(() => { getAssetOriginalUrlSpy = vi.spyOn(utils, 'getAssetOriginalUrl'); getAssetThumbnailUrlSpy = vi.spyOn(utils, 'getAssetThumbnailUrl'); + vi.stubGlobal('cast', { + framework: { + CastState: { + NO_DEVICES_AVAILABLE: 'NO_DEVICES_AVAILABLE', + }, + RemotePlayer: vi.fn().mockImplementation(() => ({})), + RemotePlayerEventType: { + ANY_CHANGE: 'anyChanged', + }, + RemotePlayerController: vi.fn().mockImplementation(() => ({ addEventListener: vi.fn() })), + CastContext: { + getInstance: vi.fn().mockImplementation(() => ({ setOptions: vi.fn(), addEventListener: vi.fn() })), + }, + CastContextEventType: { + SESSION_STATE_CHANGED: 'sessionstatechanged', + CAST_STATE_CHANGED: 'caststatechanged', + }, + }, + }); + vi.stubGlobal('chrome', { + cast: { media: { PlayerState: { IDLE: 'IDLE' } }, AutoJoinPolicy: { ORIGIN_SCOPED: 'origin_scoped' } }, + }); }); beforeEach(() => { diff --git a/web/src/lib/components/cast/cast-button.svelte b/web/src/lib/components/cast/cast-button.svelte index d4a745e093..87df177e1a 100644 --- a/web/src/lib/components/cast/cast-button.svelte +++ b/web/src/lib/components/cast/cast-button.svelte @@ -2,6 +2,7 @@ import CastPlayer, { loadCastFramework } from '$lib/utils/cast-player'; import Button from '$lib/components/elements/buttons/button.svelte'; import { onMount } from 'svelte'; + onMount(async () => { await loadCastFramework(); CastPlayer.getInstance(); diff --git a/web/svelte.config.js b/web/svelte.config.js index f6d980e5ea..a9413a54d5 100644 --- a/web/svelte.config.js +++ b/web/svelte.config.js @@ -24,6 +24,7 @@ const config = { '$lib/*': 'src/lib/*', '@test-data': 'src/test-data', $i18n: '../i18n', + 'chromecast-caf-sender': './node_modules/@types/chromecast-caf-sender/index.d.ts', }, }, }; diff --git a/web/tsconfig.json b/web/tsconfig.json index 01a5497e72..63e16e7976 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -6,9 +6,6 @@ "forceConsistentCasingInFileNames": true, "module": "es2020", "moduleResolution": "bundler", - "paths": { - "chromecast-caf-sender": ["./node_modules/@types/chromecast-caf-sender/index.d.ts"] - }, "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, diff --git a/web/vite.config.js b/web/vite.config.js index 95c1235d12..266312e137 100644 --- a/web/vite.config.js +++ b/web/vite.config.js @@ -4,7 +4,6 @@ import { svelteTesting } from '@testing-library/svelte/vite'; import path from 'node:path'; import { visualizer } from 'rollup-plugin-visualizer'; import { defineConfig } from 'vite'; -import tsconfigPaths from 'vite-tsconfig-paths'; const upstream = { target: process.env.IMMICH_SERVER_URL || 'http://immich-server:2283/', @@ -20,7 +19,6 @@ export default defineConfig({ 'xmlhttprequest-ssl': './node_modules/engine.io-client/lib/xmlhttprequest.js', // eslint-disable-next-line unicorn/prefer-module '@test-data': path.resolve(__dirname, './src/test-data'), - 'chromecast-caf-sender': path.resolve(__dirname, 'node_modules/@types/chromecast-caf-sender/index.d.ts'), }, }, server: { @@ -41,7 +39,6 @@ export default defineConfig({ : undefined, enhancedImages(), svelteTesting(), - tsconfigPaths(), ], optimizeDeps: { entries: ['src/**/*.{svelte,ts,html}'],