feat(app): mount FullscreenProvider at app root

Wrap the router with <FullscreenProvider> so a single provider instance
spans the whole app lifetime. The legacy useFullscreen hook is still
intact and continues to drive consumers; the provider is in place but
not yet consumed. Splitting this from the consumer cutover keeps each
commit independently buildable.

Made-with: Cursor
This commit is contained in:
AK 2026-04-27 01:50:51 -04:00
parent 60df6860d7
commit c97a9f1566

View file

@ -7,6 +7,7 @@ const { Router } = require('stremio-router');
const { Core, Shell, Chromecast, DragAndDrop, KeyboardShortcuts, ServicesProvider } = require('stremio/services'); const { Core, Shell, Chromecast, DragAndDrop, KeyboardShortcuts, ServicesProvider } = require('stremio/services');
const { NotFound } = require('stremio/routes'); const { NotFound } = require('stremio/routes');
const { FileDropProvider, PlatformProvider, ToastProvider, TooltipProvider, ShortcutsProvider, CONSTANTS, withCoreSuspender, useShell, useBinaryState } = require('stremio/common'); const { FileDropProvider, PlatformProvider, ToastProvider, TooltipProvider, ShortcutsProvider, CONSTANTS, withCoreSuspender, useShell, useBinaryState } = require('stremio/common');
const { FullscreenProvider } = require('stremio/common/Fullscreen');
const ServicesToaster = require('./ServicesToaster'); const ServicesToaster = require('./ServicesToaster');
const DeepLinkHandler = require('./DeepLinkHandler'); const DeepLinkHandler = require('./DeepLinkHandler');
const SearchParamsHandler = require('./SearchParamsHandler'); const SearchParamsHandler = require('./SearchParamsHandler');
@ -214,18 +215,20 @@ const App = () => {
<TooltipProvider className={styles['tooltip-container']}> <TooltipProvider className={styles['tooltip-container']}>
<FileDropProvider className={styles['file-drop-container']}> <FileDropProvider className={styles['file-drop-container']}>
<ShortcutsProvider onShortcut={onShortcut}> <ShortcutsProvider onShortcut={onShortcut}>
{ <FullscreenProvider>
shortcutModalOpen && <ShortcutsModal onClose={closeShortcutsModal}/> {
} shortcutModalOpen && <ShortcutsModal onClose={closeShortcutsModal}/>
<ServicesToaster /> }
<DeepLinkHandler /> <ServicesToaster />
<SearchParamsHandler /> <DeepLinkHandler />
<UpdaterBanner className={styles['updater-banner-container']} /> <SearchParamsHandler />
<RouterWithProtectedRoutes <UpdaterBanner className={styles['updater-banner-container']} />
className={styles['router']} <RouterWithProtectedRoutes
viewsConfig={routerViewsConfig} className={styles['router']}
onPathNotMatch={onPathNotMatch} viewsConfig={routerViewsConfig}
/> onPathNotMatch={onPathNotMatch}
/>
</FullscreenProvider>
</ShortcutsProvider> </ShortcutsProvider>
</FileDropProvider> </FileDropProvider>
</TooltipProvider> </TooltipProvider>