Delete Timer page
Maybe i'll try add this again if anyone wants it.
This commit is contained in:
parent
a9bd2fb0b5
commit
4599da7c28
|
@ -11,7 +11,6 @@ import PlanPage from './PlanPage';
|
||||||
import Route from './route';
|
import Route from './route';
|
||||||
import {getSettings, settings} from './settings.service';
|
import {getSettings, settings} from './settings.service';
|
||||||
import SettingsPage from './SettingsPage';
|
import SettingsPage from './SettingsPage';
|
||||||
import TimerPage from './TimerPage';
|
|
||||||
import WorkoutsPage from './WorkoutsPage';
|
import WorkoutsPage from './WorkoutsPage';
|
||||||
|
|
||||||
const Drawer = createDrawerNavigator<DrawerParamList>();
|
const Drawer = createDrawerNavigator<DrawerParamList>();
|
||||||
|
@ -37,7 +36,6 @@ export default function Routes() {
|
||||||
{name: 'Plans', component: PlanPage, icon: 'calendar'},
|
{name: 'Plans', component: PlanPage, icon: 'calendar'},
|
||||||
{name: 'Best', component: BestPage, icon: 'stats-chart'},
|
{name: 'Best', component: BestPage, icon: 'stats-chart'},
|
||||||
{name: 'Workouts', component: WorkoutsPage, icon: 'barbell'},
|
{name: 'Workouts', component: WorkoutsPage, icon: 'barbell'},
|
||||||
{name: 'Timer', component: TimerPage, icon: 'time'},
|
|
||||||
{name: 'Settings', component: SettingsPage, icon: 'settings'},
|
{name: 'Settings', component: SettingsPage, icon: 'settings'},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ export default function SetItem({
|
||||||
<>
|
<>
|
||||||
<List.Item
|
<List.Item
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
navigation.navigate('EditSet', {set: item, workouts: []})
|
navigation.navigate('EditSet', {set: item, workouts: [], count: 0})
|
||||||
}
|
}
|
||||||
title={item.name}
|
title={item.name}
|
||||||
description={`${item.reps} x ${item.weight}${item.unit || 'kg'}`}
|
description={`${item.reps} x ${item.weight}${item.unit || 'kg'}`}
|
||||||
|
|
|
@ -1,93 +0,0 @@
|
||||||
import {useFocusEffect} from '@react-navigation/native';
|
|
||||||
import React, {useCallback, useEffect, useState} from 'react';
|
|
||||||
import {NativeModules, View} from 'react-native';
|
|
||||||
import {Button, Text} from 'react-native-paper';
|
|
||||||
import {MARGIN, PADDING} from './constants';
|
|
||||||
import {
|
|
||||||
getNext,
|
|
||||||
getSettings,
|
|
||||||
settings,
|
|
||||||
updateSettings,
|
|
||||||
} from './settings.service';
|
|
||||||
|
|
||||||
export default function TimerPage() {
|
|
||||||
const [next, setNext] = useState(new Date());
|
|
||||||
const [ms, setMs] = useState(0);
|
|
||||||
const [intervalId, setIntervalId] = useState(0);
|
|
||||||
|
|
||||||
const seconds =
|
|
||||||
ms > 0
|
|
||||||
? Math.floor((ms / 1000) % 60)
|
|
||||||
.toString()
|
|
||||||
.padStart(2, '0')
|
|
||||||
: '00';
|
|
||||||
|
|
||||||
const minutes =
|
|
||||||
ms > 0
|
|
||||||
? Math.floor(ms / 1000 / 60)
|
|
||||||
.toString()
|
|
||||||
.padStart(2, '0')
|
|
||||||
: '00';
|
|
||||||
|
|
||||||
useFocusEffect(
|
|
||||||
useCallback(() => {
|
|
||||||
getNext().then(nextIso =>
|
|
||||||
setNext(nextIso ? new Date(nextIso) : new Date()),
|
|
||||||
);
|
|
||||||
}, []),
|
|
||||||
);
|
|
||||||
|
|
||||||
const tick = (date: Date) => {
|
|
||||||
const remaining = date.getTime() - new Date().getTime();
|
|
||||||
console.log(`${TimerPage.name}.useEffect`, {remaining});
|
|
||||||
if (remaining <= 0) return;
|
|
||||||
setMs(remaining);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log(`${TimerPage.name}.useEffect:`, {next});
|
|
||||||
const date = next || new Date();
|
|
||||||
tick(date);
|
|
||||||
const id = setInterval(() => {
|
|
||||||
tick(date);
|
|
||||||
}, 1000);
|
|
||||||
setIntervalId(oldId => {
|
|
||||||
clearInterval(oldId);
|
|
||||||
return id;
|
|
||||||
});
|
|
||||||
return () => clearInterval(id);
|
|
||||||
}, [next]);
|
|
||||||
|
|
||||||
const stop = () => {
|
|
||||||
NativeModules.AlarmModule.stop();
|
|
||||||
setNext(new Date());
|
|
||||||
updateSettings({...settings, nextAlarm: undefined});
|
|
||||||
getSettings();
|
|
||||||
tick(new Date());
|
|
||||||
setMs(0);
|
|
||||||
};
|
|
||||||
|
|
||||||
const add = async () => {
|
|
||||||
console.log(`${TimerPage.name}.add:`, {intervalId, next});
|
|
||||||
const date = next || new Date();
|
|
||||||
date.setTime(date.getTime() + 1000 * 60);
|
|
||||||
await updateSettings({...settings, nextAlarm: date.toISOString()});
|
|
||||||
setNext(date);
|
|
||||||
NativeModules.AlarmModule.add(ms, !!settings.vibrate, settings.sound);
|
|
||||||
tick(date);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={{padding: PADDING, alignItems: 'center'}}>
|
|
||||||
<Text>
|
|
||||||
{minutes}:{seconds}
|
|
||||||
</Text>
|
|
||||||
<Button style={{marginTop: MARGIN}} onPress={stop}>
|
|
||||||
Stop
|
|
||||||
</Button>
|
|
||||||
<Button style={{marginTop: MARGIN}} onPress={add}>
|
|
||||||
Add 1 min
|
|
||||||
</Button>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
|
@ -4,5 +4,4 @@ export type DrawerParamList = {
|
||||||
Best: {};
|
Best: {};
|
||||||
Plans: {};
|
Plans: {};
|
||||||
Workouts: {};
|
Workouts: {};
|
||||||
Timer: {};
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user