import { useFocusEffect } from "@react-navigation/native"; import React, { useCallback, useMemo, useState } from "react"; import { NativeModules, View } from "react-native"; import { FAB, Text, useTheme } from "react-native-paper"; import { ProgressCircle } from "react-native-svg-charts"; import AppFab from "./AppFab"; import { darkenRgba } from "./colors"; import { MARGIN, PADDING } from "./constants"; import { settingsRepo } from "./db"; import DrawerHeader from "./DrawerHeader"; import Settings from "./settings"; import useTimer from "./use-timer"; export interface TickEvent { minutes: string; seconds: string; } export default function TimerPage() { const { minutes, seconds, update } = useTimer(); const [settings, setSettings] = useState(); const { colors } = useTheme(); useFocusEffect( useCallback(() => { settingsRepo.findOne({ where: {} }).then(setSettings); }, []) ); const stop = () => { NativeModules.AlarmModule.stop(); update(); }; const add = async () => { console.log(`${TimerPage.name}.add:`, settings); NativeModules.AlarmModule.add(); update(); }; const progress = useMemo(() => { return (Number(minutes) * 60 + Number(seconds)) / 210; }, [minutes, seconds]); const backgroundColor = useMemo(() => { if (colors.primary.match(/rgba/)) return darkenRgba(colors.primary, 0.6); return colors.primary + "80"; }, [colors.primary]); return ( <> {minutes}:{seconds} ); }