Add toggle for hiding maximum set count

Closes #90
This commit is contained in:
Brandon Presley 2022-10-16 16:54:20 +13:00
parent 3714db438e
commit 77db34b310
6 changed files with 44 additions and 19 deletions

View File

@ -138,14 +138,16 @@ export default function EditWorkout() {
onSubmitEditing={() => setsRef.current?.focus()} onSubmitEditing={() => setsRef.current?.focus()}
/> />
)} )}
<MassiveInput {!!settings.showSets && (
innerRef={setsRef} <MassiveInput
value={sets} innerRef={setsRef}
onChangeText={setSets} value={sets}
label="Sets per workout" onChangeText={setSets}
keyboardType="numeric" label="Sets per workout"
onSubmitEditing={() => minutesRef.current?.focus()} keyboardType="numeric"
/> onSubmitEditing={() => minutesRef.current?.focus()}
/>
)}
{!!settings.alarm && ( {!!settings.alarm && (
<> <>
<MassiveInput <MassiveInput

View File

@ -30,6 +30,7 @@ export default function SettingsPage() {
const [date, setDate] = useState(settings.date || '%Y-%m-%d %H:%M'); const [date, setDate] = useState(settings.date || '%Y-%m-%d %H:%M');
const [theme, setTheme] = useState(settings.theme || 'system'); const [theme, setTheme] = useState(settings.theme || 'system');
const [showDate, setShowDate] = useState(!!settings.showDate); const [showDate, setShowDate] = useState(!!settings.showDate);
const [showSets, setShowSets] = useState(!!settings.showSets);
const {color, setColor} = useColor(); const {color, setColor} = useColor();
const {toast} = useSnackbar(); const {toast} = useSnackbar();
@ -52,6 +53,7 @@ export default function SettingsPage() {
date, date,
showDate: +showDate, showDate: +showDate,
theme, theme,
showSets: +showSets,
}); });
getSettings().then(setSettings); getSettings().then(setSettings);
}, [ }, [
@ -67,6 +69,7 @@ export default function SettingsPage() {
date, date,
showDate, showDate,
theme, theme,
showSets,
]); ]);
const changeAlarmEnabled = useCallback( const changeAlarmEnabled = useCallback(
@ -143,6 +146,15 @@ export default function SettingsPage() {
[toast], [toast],
); );
const changeShowSets = useCallback(
(enabled: boolean) => {
setShowSets(enabled);
if (enabled) toast('Show maximum sets for workouts.', 4000);
else toast('Stopped showing maximum sets for workouts.', 4000);
},
[toast],
);
const switches: Input<boolean>[] = [ const switches: Input<boolean>[] = [
{name: 'Rest timers', value: alarm, onChange: changeAlarmEnabled}, {name: 'Rest timers', value: alarm, onChange: changeAlarmEnabled},
{name: 'Vibrate', value: vibrate, onChange: changeVibrate}, {name: 'Vibrate', value: vibrate, onChange: changeVibrate},
@ -151,6 +163,7 @@ export default function SettingsPage() {
{name: 'Show unit', value: showUnit, onChange: changeUnit}, {name: 'Show unit', value: showUnit, onChange: changeUnit},
{name: 'Show steps', value: steps, onChange: changeSteps}, {name: 'Show steps', value: steps, onChange: changeSteps},
{name: 'Show date', value: showDate, onChange: changeShowDate}, {name: 'Show date', value: showDate, onChange: changeShowDate},
{name: 'Show sets', value: showSets, onChange: changeShowSets},
]; ];
return ( return (

View File

@ -125,11 +125,14 @@ export default function StartPlan() {
const getDescription = useCallback( const getDescription = useCallback(
(countName: string) => { (countName: string) => {
const count = counts?.find(c => c.name === countName); const count = counts?.find(c => c.name === countName);
console.log(`${StartPlan.name}:`, {count, countName});
if (!distinctSets) return; if (!distinctSets) return;
const distinct = distinctSets.find(d => d.name === countName); const distinct = distinctSets.find(d => d.name === countName);
return `${count?.total || 0} / ${distinct?.sets}`; console.log(`${StartPlan.name}:`, {distinct});
if (settings.showSets) return `${count?.total || 0} / ${distinct?.sets}`;
return count?.total || '0';
}, },
[counts, distinctSets], [counts, distinctSets, settings.showSets],
); );
return ( return (

View File

@ -37,9 +37,12 @@ export default function WorkoutItem({
const description = useMemo(() => { const description = useMemo(() => {
const seconds = item.seconds?.toString().padStart(2, '0'); const seconds = item.seconds?.toString().padStart(2, '0');
if (settings.alarm) return `${item.sets} x ${item.minutes || 0}:${seconds}`; if (settings.alarm && settings.showSets)
return `${item.sets} x ${item.minutes || 0}:${seconds}`;
else if (settings.alarm && !settings.showSets)
return `${item.minutes || 0}:${seconds}`;
return `${item.sets}`; return `${item.sets}`;
}, [item, settings.alarm]); }, [item, settings]);
return ( return (
<> <>

17
db.ts
View File

@ -28,9 +28,9 @@ const migrations = [
CREATE TABLE IF NOT EXISTS settings ( CREATE TABLE IF NOT EXISTS settings (
minutes INTEGER NOT NULL DEFAULT 3, minutes INTEGER NOT NULL DEFAULT 3,
seconds INTEGER NOT NULL DEFAULT 30, seconds INTEGER NOT NULL DEFAULT 30,
alarm BOOLEAN NOT NULL DEFAULT false, alarm BOOLEAN NOT NULL DEFAULT 0,
vibrate BOOLEAN NOT NULL DEFAULT true, vibrate BOOLEAN NOT NULL DEFAULT 1,
predict BOOLEAN NOT NULL DEFAULT true, predict BOOLEAN NOT NULL DEFAULT 1,
sets INTEGER NOT NULL DEFAULT 3 sets INTEGER NOT NULL DEFAULT 3
) )
`, `,
@ -42,16 +42,16 @@ const migrations = [
) )
`, `,
` `
ALTER TABLE sets ADD COLUMN hidden DEFAULT false ALTER TABLE sets ADD COLUMN hidden DEFAULT 0
`, `,
` `
ALTER TABLE settings ADD COLUMN notify DEFAULT false ALTER TABLE settings ADD COLUMN notify DEFAULT 0
`, `,
` `
ALTER TABLE sets ADD COLUMN image TEXT NULL ALTER TABLE sets ADD COLUMN image TEXT NULL
`, `,
` `
ALTER TABLE settings ADD COLUMN images BOOLEAN DEFAULT false ALTER TABLE settings ADD COLUMN images BOOLEAN DEFAULT 0
`, `,
` `
SELECT * FROM settings LIMIT 1 SELECT * FROM settings LIMIT 1
@ -75,7 +75,7 @@ const migrations = [
ALTER TABLE sets ADD COLUMN seconds INTEGER NOT NULL DEFAULT 30 ALTER TABLE sets ADD COLUMN seconds INTEGER NOT NULL DEFAULT 30
`, `,
` `
ALTER TABLE settings ADD COLUMN showUnit BOOLEAN DEFAULT true ALTER TABLE settings ADD COLUMN showUnit BOOLEAN DEFAULT 1
`, `,
` `
ALTER TABLE sets ADD COLUMN steps TEXT NULL ALTER TABLE sets ADD COLUMN steps TEXT NULL
@ -115,6 +115,9 @@ const migrations = [
` `
ALTER TABLE settings ADD COLUMN theme TEXT ALTER TABLE settings ADD COLUMN theme TEXT
`, `,
`
ALTER TABLE settings ADD COLUMN showSets BOOLEAN DEFAULT 1
`,
]; ];
export let db: SQLiteDatabase; export let db: SQLiteDatabase;

View File

@ -11,4 +11,5 @@ export default interface Settings {
date?: string; date?: string;
showDate: number; showDate: number;
theme?: 'system' | 'dark' | 'light'; theme?: 'system' | 'dark' | 'light';
showSets?: number;
} }