Add setting for showing date by default

Closes #52
This commit is contained in:
Brandon Presley 2022-09-26 19:02:25 +13:00
parent 023041b846
commit e8715162a0
5 changed files with 31 additions and 5 deletions

View File

@ -26,7 +26,7 @@ export default function SetList() {
const [offset, setOffset] = useState(0);
const [search, setSearch] = useState('');
const [end, setEnd] = useState(false);
const [dates, setDates] = useState(false);
const [dates, setDates] = useState(!!settings.showDate);
const [images, setImages] = useState(true);
const navigation = useNavigation<NavigationProp<HomePageParams>>();
@ -75,6 +75,7 @@ export default function SetList() {
headerRight: () => <DrawerMenu name="Home" />,
});
setImages(!!settings.images);
setDates(!!settings.showDate);
}, [refresh, navigation]),
);

View File

@ -28,6 +28,7 @@ export default function SettingsPage() {
const [workouts, setWorkouts] = useState(!!settings.workouts);
const [steps, setSteps] = useState(!!settings.steps);
const [date, setDate] = useState('%Y-%m-%d %H:%M');
const [showDate, setShowDate] = useState(false);
const {color, setColor} = useContext(CustomTheme);
const {toast} = useContext(SnackbarContext);
@ -50,6 +51,7 @@ export default function SettingsPage() {
workouts: +workouts,
steps: +steps,
date,
showDate: +showDate,
});
getSettings();
}, [
@ -64,6 +66,7 @@ export default function SettingsPage() {
workouts,
steps,
date,
showDate,
]);
const changeAlarmEnabled = useCallback(
@ -149,6 +152,15 @@ export default function SettingsPage() {
[toast],
);
const changeShowDate = useCallback(
(enabled: boolean) => {
setShowDate(enabled);
if (enabled) toast('Show date for sets by default.', 4000);
else toast('Stopped showing date for sets by default.', 4000);
},
[toast],
);
const switches: Input<boolean>[] = [
{name: 'Rest timers', value: alarm, onChange: changeAlarmEnabled},
{name: 'Vibrate', value: vibrate, onChange: changeVibrate},
@ -158,6 +170,7 @@ export default function SettingsPage() {
{name: 'Show unit', value: showUnit, onChange: changeUnit},
{name: 'Show workouts', value: workouts, onChange: changeWorkouts},
{name: 'Show steps', value: steps, onChange: changeSteps},
{name: 'Show date', value: showDate, onChange: changeShowDate},
];
return (

View File

@ -39,17 +39,18 @@ export default function TimerPage() {
const tick = (date: Date) => {
const remaining = date.getTime() - new Date().getTime();
console.log(`${TimerPage.name}.useEffect`, {remaining});
if (remaining <= 0) return;
console.log(`${TimerPage.name}.tick`, {remaining});
if (remaining <= 0) return 0;
setMs(remaining);
return remaining;
};
useEffect(() => {
console.log(`${TimerPage.name}.useEffect:`, {next});
const date = next || new Date();
tick(date);
if (tick(date) <= 0) return;
const id = setInterval(() => {
tick(date);
if (tick(date) <= 0) clearInterval(id);
}, 1000);
setIntervalId(oldId => {
clearInterval(oldId);
@ -75,6 +76,13 @@ export default function TimerPage() {
setNext(date);
NativeModules.AlarmModule.add(ms, !!settings.vibrate, settings.sound);
tick(date);
const id = setInterval(() => {
if (tick(date) <= 0) clearInterval(id);
}, 1000);
setIntervalId(oldId => {
clearInterval(oldId);
return id;
});
};
return (

3
db.ts
View File

@ -106,6 +106,9 @@ const migrations = [
`
ALTER TABLE settings ADD COLUMN date TEXT NULL
`,
`
ALTER TABLE settings ADD COLUMN showDate BOOLEAN DEFAULT 0
`,
];
export let db: SQLiteDatabase;

View File

@ -11,4 +11,5 @@ export default interface Settings {
steps: number;
nextAlarm?: string;
date?: string;
showDate: number;
}