import { Button, FormLabel, Modal, Switch } from '@mui/material'; import { twc } from 'react-twc'; import { useGlobalSettings } from '../../Hooks/useGlobalSettings'; import { ModalWrapper } from './InfoModal'; import { Separator } from './Separator'; import { Paragraph } from './TextComponents'; import { useEffect, useState } from 'react'; import { Cross } from '../../Icons/generated'; const SettingContainer = twc.div`w-full flex flex-col mb-2`; const ToggleContainer = twc.div`flex flex-row justify-between items-center -mb-1`; const Container = twc.div`flex flex-col items-center w-full`; const Description = twc.p`mr-16 text-xs text-left text-text-secondary`; type SettingsModalProps = { isOpen: boolean; closeModal: () => void; }; export const SettingsModal = ({ isOpen, closeModal }: SettingsModalProps) => { const { settings, setSettings, isPWA } = useGlobalSettings(); const [isLatestVersion, setIsLatestVersion] = useState(false); const [newVersion, setNewVersion] = useState(undefined); useEffect(() => { if (!isOpen) { return; } async function checkIfLatestVersion() { try { const result = await fetch( 'https://api.github.com/repos/Vikeo/LifeTrinket/releases/latest', { headers: { /* @ts-expect-error is defined in vite.config.ts*/ Authorization: `Bearer ${REPO_READ_ACCESS_TOKEN}`, Accept: 'application/vnd.github+json', 'X-GitHub-Api-Version': '2022-11-28', }, } ); const data = await result.json(); if (!data.name) { setNewVersion(undefined); setIsLatestVersion(false); return; } setNewVersion(data.name); /* @ts-expect-error is defined in vite.config.ts*/ if (data.name === APP_VERSION) { setIsLatestVersion(true); return; } setIsLatestVersion(false); } catch (error) { console.error('error getting latest version string', error); } } checkIfLatestVersion(); }, [isOpen]); return ( <>

⚙️ Settings ⚙️

Show Start Player { setSettings({ ...settings, showStartingPlayer: !settings.showStartingPlayer, }); }} /> On start or reset of game, will pick a random player who will start first if this is enabled. Show Player Menu Cog { setSettings({ ...settings, showPlayerMenuCog: !settings.showPlayerMenuCog, }); }} /> A cog on the top right of each player's card will be shown if this is enabled. Randomize starting player with interval { setSettings({ ...settings, useRandomStartingPlayerInterval: !settings.useRandomStartingPlayerInterval, }); }} /> Will randomize between all players at when starting a game, pressing the screen aborts the interval and chooses the player that has the crown. Keep Awake { setSettings({ ...settings, keepAwake: !settings.keepAwake, }); }} /> Will prevent device from going to sleep while this app is open if this is enabled. Go fullscreen on start (Android only) { setSettings({ ...settings, goFullscreenOnStart: !settings.goFullscreenOnStart, }); }} /> Will enter fullscreen mode when starting a game if this is enabled. {!isPWA && ( <> Tip: You can{' '} add this webapp to your home page on iOS or{' '} install it on Android to have it act just like a normal app! If you do, this app will work offline and the toolbar will be automatically hidden. )} {/* @ts-expect-error is defined in vite.config.ts*/} Current version: {APP_VERSION}{' '} {isLatestVersion && ( (latest) )} {!isLatestVersion && newVersion && ( New version ({newVersion}) is available!{' '} )} {!isLatestVersion && newVersion && ( )}
); };