Use callbacks everywhere
This commit is contained in:
parent
b81830a913
commit
cba57e6e64
|
@ -19,7 +19,6 @@ export default function BestPage() {
|
||||||
WHERE name LIKE ?
|
WHERE name LIKE ?
|
||||||
GROUP BY name;
|
GROUP BY name;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const bestReps = `
|
const bestReps = `
|
||||||
SELECT name, MAX(reps) as reps, unit, weight
|
SELECT name, MAX(reps) as reps, unit, weight
|
||||||
FROM sets
|
FROM sets
|
||||||
|
@ -27,7 +26,6 @@ export default function BestPage() {
|
||||||
AND weight = ?
|
AND weight = ?
|
||||||
GROUP BY name;
|
GROUP BY name;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const [weight] = await db.executeSql(bestWeight, [`%${search}%`]);
|
const [weight] = await db.executeSql(bestWeight, [`%${search}%`]);
|
||||||
if (!weight) return setBests([]);
|
if (!weight) return setBests([]);
|
||||||
let newBest: Best[] = [];
|
let newBest: Best[] = [];
|
||||||
|
|
40
EditPlan.tsx
40
EditPlan.tsx
|
@ -1,4 +1,4 @@
|
||||||
import React, {useContext, useEffect, useState} from 'react';
|
import React, {useCallback, useContext, useEffect, useState} from 'react';
|
||||||
import {ScrollView, StyleSheet, Text, View} from 'react-native';
|
import {ScrollView, StyleSheet, Text, View} from 'react-native';
|
||||||
import {Button, Dialog, Portal, Switch} from 'react-native-paper';
|
import {Button, Dialog, Portal, Switch} from 'react-native-paper';
|
||||||
import {DatabaseContext} from './App';
|
import {DatabaseContext} from './App';
|
||||||
|
@ -33,7 +33,7 @@ export default function EditPlan({
|
||||||
refresh();
|
refresh();
|
||||||
}, [plan, db]);
|
}, [plan, db]);
|
||||||
|
|
||||||
const save = async () => {
|
const save = useCallback(async () => {
|
||||||
if (!days || !workouts) return;
|
if (!days || !workouts) return;
|
||||||
const newWorkouts = workouts.filter(workout => workout).join(',');
|
const newWorkouts = workouts.filter(workout => workout).join(',');
|
||||||
const newDays = days.filter(day => day).join(',');
|
const newDays = days.filter(day => day).join(',');
|
||||||
|
@ -49,23 +49,29 @@ export default function EditPlan({
|
||||||
);
|
);
|
||||||
setPlan(undefined);
|
setPlan(undefined);
|
||||||
onSave();
|
onSave();
|
||||||
};
|
}, [days, workouts, db]);
|
||||||
|
|
||||||
const toggleWorkout = (on: boolean, name: string) => {
|
const toggleWorkout = useCallback(
|
||||||
if (on) {
|
(on: boolean, name: string) => {
|
||||||
setWorkouts([...workouts, name]);
|
if (on) {
|
||||||
} else {
|
setWorkouts([...workouts, name]);
|
||||||
setWorkouts(workouts.filter(workout => workout !== name));
|
} else {
|
||||||
}
|
setWorkouts(workouts.filter(workout => workout !== name));
|
||||||
};
|
}
|
||||||
|
},
|
||||||
|
[setWorkouts],
|
||||||
|
);
|
||||||
|
|
||||||
const toggleDay = (on: boolean, day: string) => {
|
const toggleDay = useCallback(
|
||||||
if (on) {
|
(on: boolean, day: string) => {
|
||||||
setDays([...days, day]);
|
if (on) {
|
||||||
} else {
|
setDays([...days, day]);
|
||||||
setDays(days.filter(d => d !== day));
|
} else {
|
||||||
}
|
setDays(days.filter(d => d !== day));
|
||||||
};
|
}
|
||||||
|
},
|
||||||
|
[setDays],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Portal>
|
<Portal>
|
||||||
|
|
|
@ -45,8 +45,11 @@ export default function HomePage() {
|
||||||
refresh();
|
refresh();
|
||||||
}, [search, refresh]);
|
}, [search, refresh]);
|
||||||
|
|
||||||
const renderItem = ({item}: {item: Set}) => (
|
const renderItem = useCallback(
|
||||||
<SetItem item={item} key={item.id} setSet={setEdit} onRemove={refresh} />
|
({item}: {item: Set}) => (
|
||||||
|
<SetItem item={item} key={item.id} setSet={setEdit} onRemove={refresh} />
|
||||||
|
),
|
||||||
|
[setEdit, refresh],
|
||||||
);
|
);
|
||||||
|
|
||||||
const update = useCallback(async () => {
|
const update = useCallback(async () => {
|
||||||
|
|
17
PlanItem.tsx
17
PlanItem.tsx
|
@ -1,4 +1,4 @@
|
||||||
import React, {useContext, useState} from 'react';
|
import React, {useCallback, useContext, useState} from 'react';
|
||||||
import {GestureResponderEvent} from 'react-native';
|
import {GestureResponderEvent} from 'react-native';
|
||||||
import {List, Menu} from 'react-native-paper';
|
import {List, Menu} from 'react-native-paper';
|
||||||
import {DatabaseContext} from './App';
|
import {DatabaseContext} from './App';
|
||||||
|
@ -17,16 +17,19 @@ export default function PlanItem({
|
||||||
const [anchor, setAnchor] = useState({x: 0, y: 0});
|
const [anchor, setAnchor] = useState({x: 0, y: 0});
|
||||||
const db = useContext(DatabaseContext);
|
const db = useContext(DatabaseContext);
|
||||||
|
|
||||||
const remove = async () => {
|
const remove = useCallback(async () => {
|
||||||
await db.executeSql(`DELETE FROM plans WHERE id = ?`, [item.id]);
|
await db.executeSql(`DELETE FROM plans WHERE id = ?`, [item.id]);
|
||||||
setShow(false);
|
setShow(false);
|
||||||
onRemove();
|
onRemove();
|
||||||
};
|
}, [db, setShow]);
|
||||||
|
|
||||||
const longPress = (e: GestureResponderEvent) => {
|
const longPress = useCallback(
|
||||||
setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY});
|
(e: GestureResponderEvent) => {
|
||||||
setShow(true);
|
setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY});
|
||||||
};
|
setShow(true);
|
||||||
|
},
|
||||||
|
[setAnchor, setShow],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
12
PlanPage.tsx
12
PlanPage.tsx
|
@ -29,8 +29,16 @@ export default function PlanPage() {
|
||||||
refresh();
|
refresh();
|
||||||
}, [search, refresh]);
|
}, [search, refresh]);
|
||||||
|
|
||||||
const renderItem = ({item}: {item: Plan}) => (
|
const renderItem = useCallback(
|
||||||
<PlanItem item={item} key={item.id} setPlan={setPlan} onRemove={refresh} />
|
({item}: {item: Plan}) => (
|
||||||
|
<PlanItem
|
||||||
|
item={item}
|
||||||
|
key={item.id}
|
||||||
|
setPlan={setPlan}
|
||||||
|
onRemove={refresh}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
[setPlan, refresh],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
21
SetItem.tsx
21
SetItem.tsx
|
@ -1,4 +1,4 @@
|
||||||
import React, {useContext, useState} from 'react';
|
import React, {useCallback, useContext, useState} from 'react';
|
||||||
import {GestureResponderEvent} from 'react-native';
|
import {GestureResponderEvent} from 'react-native';
|
||||||
import {List, Menu} from 'react-native-paper';
|
import {List, Menu} from 'react-native-paper';
|
||||||
import {DatabaseContext} from './App';
|
import {DatabaseContext} from './App';
|
||||||
|
@ -17,23 +17,26 @@ export default function SetItem({
|
||||||
const [anchor, setAnchor] = useState({x: 0, y: 0});
|
const [anchor, setAnchor] = useState({x: 0, y: 0});
|
||||||
const db = useContext(DatabaseContext);
|
const db = useContext(DatabaseContext);
|
||||||
|
|
||||||
const remove = async () => {
|
const remove = useCallback(async () => {
|
||||||
await db.executeSql(`DELETE FROM sets WHERE id = ?`, [item.id]);
|
await db.executeSql(`DELETE FROM sets WHERE id = ?`, [item.id]);
|
||||||
setShow(false);
|
setShow(false);
|
||||||
onRemove();
|
onRemove();
|
||||||
};
|
}, [setShow, db]);
|
||||||
|
|
||||||
const copy = () => {
|
const copy = useCallback(() => {
|
||||||
const set = {...item};
|
const set = {...item};
|
||||||
delete set.id;
|
delete set.id;
|
||||||
setSet(set);
|
setSet(set);
|
||||||
setShow(false);
|
setShow(false);
|
||||||
};
|
}, [setSet, setShow]);
|
||||||
|
|
||||||
const longPress = (e: GestureResponderEvent) => {
|
const longPress = useCallback(
|
||||||
setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY});
|
(e: GestureResponderEvent) => {
|
||||||
setShow(true);
|
setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY});
|
||||||
};
|
setShow(true);
|
||||||
|
},
|
||||||
|
[setShow, setAnchor],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
|
@ -72,7 +72,6 @@ export default function SettingsPage() {
|
||||||
);
|
);
|
||||||
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
||||||
};
|
};
|
||||||
|
|
||||||
const granted = await permission();
|
const granted = await permission();
|
||||||
if (granted) {
|
if (granted) {
|
||||||
await FileSystem.writeFile(filePath, data);
|
await FileSystem.writeFile(filePath, data);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user