diff --git a/src/hooks/useSettings.ts b/src/hooks/useSettings.ts index 7dc62db..3a16603 100644 --- a/src/hooks/useSettings.ts +++ b/src/hooks/useSettings.ts @@ -36,7 +36,7 @@ export interface AppSettings { enableBackgroundPlayback: boolean; cacheLimit: number; useExternalPlayer: boolean; - preferredPlayer: 'internal' | 'vlc' | 'infuse' | 'outplayer' | 'vidhub' | 'external'; + preferredPlayer: 'internal' | 'vlc' | 'infuse' | 'outplayer' | 'vidhub' | 'infuse_livecontainer' | 'external'; showHeroSection: boolean; featuredContentSource: 'tmdb' | 'catalogs'; heroStyle: 'legacy' | 'carousel'; @@ -244,4 +244,4 @@ export const useSettings = () => { }; }; -export default useSettings; \ No newline at end of file +export default useSettings; diff --git a/src/screens/PlayerSettingsScreen.tsx b/src/screens/PlayerSettingsScreen.tsx index 275b6c8..821791f 100644 --- a/src/screens/PlayerSettingsScreen.tsx +++ b/src/screens/PlayerSettingsScreen.tsx @@ -127,6 +127,12 @@ const PlayerSettingsScreen: React.FC = () => { description: 'Open streams in VidHub player', icon: 'ondemand-video', }, + { + id: 'infuse_livecontainer', + title: 'Infuse Livecontainer', + description: 'Open streams in Infuse player LiveContainer', + icon: 'smart-display', + }, ] : [ { id: 'external', @@ -420,4 +426,4 @@ const styles = StyleSheet.create({ }, }); -export default PlayerSettingsScreen; \ No newline at end of file +export default PlayerSettingsScreen; diff --git a/src/screens/StreamsScreen.tsx b/src/screens/StreamsScreen.tsx index a863c56..6f90751 100644 --- a/src/screens/StreamsScreen.tsx +++ b/src/screens/StreamsScreen.tsx @@ -1289,6 +1289,18 @@ export const StreamsScreen = () => { ]; break; + case 'infuse_livecontainer': + const infuseUrls = [ + `infuse://x-callback-url/play?url=${streamUrl}`, + `infuse://play?url=${streamUrl}`, + `infuse://${streamUrl}` + ]; + externalPlayerUrls = infuseUrls.map(infuseUrl => { + const encoded = Buffer.from(infuseUrl).toString('base64'); + return `livecontainer://open-web-page?url=${encoded}`; + }); + break; + default: // If no matching player or the setting is somehow invalid, use internal player navigateToPlayer(stream);