Merge pull request #510 from Stremio/fixes-PWA

Fixes pwa
This commit is contained in:
Tim 2023-11-17 14:54:07 +01:00 committed by GitHub
commit 3b8278303a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 7 deletions

View file

@ -7,6 +7,7 @@ const { default: Icon } = require('@stremio/stremio-icons/react');
const Button = require('stremio/common/Button');
const Image = require('stremio/common/Image');
const useFullscreen = require('stremio/common/useFullscreen');
const usePWA = require('stremio/common/usePWA');
const SearchBar = require('./SearchBar');
const NavMenu = require('./NavMenu');
const styles = require('./styles');
@ -17,6 +18,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto
window.history.back();
}, []);
const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();
const isPWA = usePWA();
const renderNavMenuLabel = React.useCallback(({ ref, className, onClick, children, }) => (
<Button ref={ref} className={classnames(className, styles['button-container'], styles['menu-button-container'])} tabIndex={-1} onClick={onClick}>
<Icon className={styles['icon']} name={'person-outline'} />
@ -61,7 +63,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto
null
}
{
fullscreenButton ?
!isPWA && fullscreenButton ?
<Button className={styles['button-container']} title={fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')} tabIndex={-1} onClick={fullscreen ? exitFullscreen : requestFullscreen}>
<Icon className={styles['icon']} name={fullscreen ? 'minimize' : 'maximize'} />
</Button>

View file

@ -9,6 +9,7 @@ const { useServices } = require('stremio/services');
const Button = require('stremio/common/Button');
const useFullscreen = require('stremio/common/useFullscreen');
const useProfile = require('stremio/common/useProfile');
const usePWA = require('stremio/common/usePWA');
const useTorrent = require('stremio/common/useTorrent');
const { withCoreSuspender } = require('stremio/common/CoreSuspender');
const styles = require('./styles');
@ -19,6 +20,7 @@ const NavMenuContent = ({ onClick }) => {
const profile = useProfile();
const { createTorrentFromMagnet } = useTorrent();
const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();
const isPWA = usePWA();
const logoutButtonOnClick = React.useCallback(() => {
core.transport.dispatch({
action: 'Ctx',
@ -59,12 +61,17 @@ const NavMenuContent = ({ onClick }) => {
</Button>
</div>
</div>
{
!isPWA ?
<div className={styles['nav-menu-section']}>
<Button className={styles['nav-menu-option-container']} title={fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')} onClick={fullscreen ? exitFullscreen : requestFullscreen}>
<Icon className={styles['icon']} name={fullscreen ? 'minimize' : 'maximize'} />
<div className={styles['nav-menu-option-label']}>{fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')}</div>
</Button>
</div>
:
null
}
<div className={styles['nav-menu-section']}>
<Button className={styles['nav-menu-option-container']} title={ t('SETTINGS') } href={'#/settings'}>
<Icon className={styles['icon']} name={'settings'} />

14
src/common/usePWA.js Normal file
View file

@ -0,0 +1,14 @@
// Copyright (C) 2017-2023 Smart code 203358507
const React = require('react');
const usePWA = () => {
const isPWA = React.useMemo(() => {
const isIOSPWA = window.navigator.standalone;
const isAndroidPWA = window.matchMedia('(display-mode: standalone)').matches;
return isIOSPWA || isAndroidPWA;
}, []);
return isPWA;
};
module.exports = usePWA;