diff --git a/EditSet.tsx b/EditSet.tsx index 649cd03..b32d49a 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -8,17 +8,12 @@ import { } from "@react-navigation/native"; import { format } from "date-fns"; import { useCallback, useRef, useState } from "react"; -import { - DeviceEventEmitter, - NativeModules, - TextInput, - View, -} from "react-native"; +import { NativeModules, TextInput, View } from "react-native"; import DocumentPicker from "react-native-document-picker"; import { Button, Card, IconButton, TouchableRipple } from "react-native-paper"; import AppInput from "./AppInput"; import ConfirmDialog from "./ConfirmDialog"; -import { GYM_SET_CREATED, GYM_SET_UPDATED, MARGIN, PADDING } from "./constants"; +import { MARGIN, PADDING } from "./constants"; import { getNow, setRepo, settingsRepo } from "./db"; import GymSet from "./gym-set"; import { HomePageParams } from "./home-page-params"; @@ -70,7 +65,6 @@ export default function EditSet() { ); const added = async (value: GymSet) => { - DeviceEventEmitter.emit(GYM_SET_CREATED); startTimer(value.name); console.log(`${EditSet.name}.add`, { set: value }); if (!settings.notify) return; @@ -110,7 +104,6 @@ export default function EditSet() { const saved = await setRepo.save(newSet); if (typeof set.id !== "number") return added(saved); - DeviceEventEmitter.emit(GYM_SET_UPDATED); if (createdDirty) navigate("Sets", { reset: saved.id }); else navigate("Sets", { refresh: saved.id }); }; diff --git a/EditSets.tsx b/EditSets.tsx index 7f8236d..bb75375 100644 --- a/EditSets.tsx +++ b/EditSets.tsx @@ -5,13 +5,13 @@ import { useRoute, } from "@react-navigation/native"; import { useCallback, useState } from "react"; -import { DeviceEventEmitter, View } from "react-native"; +import { View } from "react-native"; import DocumentPicker from "react-native-document-picker"; import { Button, Card, IconButton, TouchableRipple } from "react-native-paper"; import { In } from "typeorm"; import AppInput from "./AppInput"; import ConfirmDialog from "./ConfirmDialog"; -import { GYM_SET_UPDATED, MARGIN, PADDING } from "./constants"; +import { MARGIN, PADDING } from "./constants"; import { setRepo, settingsRepo } from "./db"; import GymSet from "./gym-set"; import { HomePageParams } from "./home-page-params"; @@ -60,7 +60,6 @@ export default function EditSets() { if (unit) update.unit = unit; if (newImage) update.image = newImage; if (Object.keys(update).length > 0) await setRepo.update(ids, update); - DeviceEventEmitter.emit(GYM_SET_UPDATED); navigation.goBack(); }; diff --git a/EditWorkout.tsx b/EditWorkout.tsx index ce5e7e2..e4e5987 100644 --- a/EditWorkout.tsx +++ b/EditWorkout.tsx @@ -5,12 +5,12 @@ import { useRoute, } from "@react-navigation/native"; import { useCallback, useRef, useState } from "react"; -import { DeviceEventEmitter, ScrollView, TextInput, View } from "react-native"; +import { ScrollView, TextInput, View } from "react-native"; import DocumentPicker from "react-native-document-picker"; import { Button, Card, TouchableRipple } from "react-native-paper"; import AppInput from "./AppInput"; import ConfirmDialog from "./ConfirmDialog"; -import { GYM_SET_UPDATED, MARGIN, PADDING } from "./constants"; +import { MARGIN, PADDING } from "./constants"; import { getNow, planRepo, setRepo, settingsRepo } from "./db"; import { fixNumeric } from "./fix-numeric"; import { defaultSet } from "./gym-set"; @@ -58,7 +58,6 @@ export default function EditWorkout() { image: removeImage ? "" : uri, } ); - DeviceEventEmitter.emit(GYM_SET_UPDATED); await planRepo.query( `UPDATE plans SET workouts = REPLACE(workouts, $1, $2) diff --git a/EditWorkouts.tsx b/EditWorkouts.tsx index fc8317b..1431f73 100644 --- a/EditWorkouts.tsx +++ b/EditWorkouts.tsx @@ -6,13 +6,13 @@ import { useRoute, } from "@react-navigation/native"; import { useCallback, useRef, useState } from "react"; -import { DeviceEventEmitter, ScrollView, TextInput, View } from "react-native"; +import { ScrollView, TextInput, View } from "react-native"; import DocumentPicker from "react-native-document-picker"; import { Button, Card, TouchableRipple } from "react-native-paper"; import { In } from "typeorm"; import AppInput from "./AppInput"; import ConfirmDialog from "./ConfirmDialog"; -import { GYM_SETS_EDITED, MARGIN, PADDING } from "./constants"; +import { MARGIN, PADDING } from "./constants"; import { planRepo, setRepo, settingsRepo } from "./db"; import { fixNumeric } from "./fix-numeric"; import Settings from "./settings"; @@ -74,7 +74,6 @@ export default function EditWorkouts() { image: removeImage ? "" : uri, } ); - DeviceEventEmitter.emit(GYM_SETS_EDITED); for (const oldName of params.names) { await planRepo .createQueryBuilder() diff --git a/GraphsList.tsx b/GraphsList.tsx index aa60f4a..52f9c9f 100644 --- a/GraphsList.tsx +++ b/GraphsList.tsx @@ -1,64 +1,47 @@ -import { NavigationProp, useNavigation } from "@react-navigation/native"; -import { useCallback, useEffect, useState } from "react"; import { - DeviceEventEmitter, - EmitterSubscription, - FlatList, - Image, -} from "react-native"; + NavigationProp, + useFocusEffect, + useNavigation, +} from "@react-navigation/native"; +import { useCallback, useState } from "react"; +import { FlatList, Image } from "react-native"; import { List } from "react-native-paper"; import { getBestSets } from "./best.service"; -import { - GYM_SET_CREATED, - GYM_SET_DELETED, - GYM_SET_UPDATED, - LIMIT, -} from "./constants"; +import { LIMIT } from "./constants"; import { settingsRepo } from "./db"; import DrawerHeader from "./DrawerHeader"; import { GraphsPageParams } from "./GraphsPage"; import GymSet from "./gym-set"; import Page from "./Page"; -import Settings, { SETTINGS } from "./settings"; +import Settings from "./settings"; export default function GraphsList() { - const [bests, setBests] = useState(); - const [refreshing, setRefreshing] = useState(false); + const [bests, setBests] = useState([]); const [offset, setOffset] = useState(0); const [end, setEnd] = useState(false); const [term, setTerm] = useState(""); const navigation = useNavigation>(); const [settings, setSettings] = useState(); + useFocusEffect( + useCallback(() => { + settingsRepo.findOne({ where: {} }).then(setSettings); + }, []) + ); + const refresh = useCallback(async (value: string) => { - setRefreshing(true); - const result = await getBestSets({ term: value, offset: 0 }).finally(() => - setRefreshing(false) - ); + const result = await getBestSets({ term: value, offset: 0 }); setBests(result); setOffset(0); }, []); - useEffect(() => { - refresh(""); - settingsRepo.findOne({ where: {} }).then(setSettings); - const subs: EmitterSubscription[] = []; - - subs.push( - DeviceEventEmitter.addListener(GYM_SET_CREATED, () => refresh("")), - DeviceEventEmitter.addListener(GYM_SET_UPDATED, () => refresh("")), - DeviceEventEmitter.addListener(GYM_SET_DELETED, () => refresh("")), - DeviceEventEmitter.addListener(SETTINGS, () => - settingsRepo.findOne({ where: {} }).then(setSettings) - ) - ); - - return () => subs.forEach((sub) => sub.remove()); - /* eslint-disable react-hooks/exhaustive-deps */ - }, []); + useFocusEffect( + useCallback(() => { + refresh(term); + }, [refresh, term]) + ); const next = useCallback(async () => { - console.log("next:", { end, offset }); if (end) return; const newOffset = offset + LIMIT; console.log(`${GraphsList.name}.next:`, { offset, newOffset, term }); @@ -85,7 +68,7 @@ export default function GraphsList() { description={`${item.reps} x ${item.weight}${item.unit || "kg"}`} onPress={() => navigation.navigate("ViewGraph", { best: item })} left={() => - (settings?.images && item.image && ( + (settings.images && item.image && ( refresh("")} /> )} diff --git a/StartPlan.tsx b/StartPlan.tsx index 59bd013..0b451d0 100644 --- a/StartPlan.tsx +++ b/StartPlan.tsx @@ -6,17 +6,11 @@ import { useRoute, } from "@react-navigation/native"; import { useCallback, useMemo, useRef, useState } from "react"; -import { - DeviceEventEmitter, - FlatList, - NativeModules, - TextInput, - View, -} from "react-native"; +import { FlatList, NativeModules, TextInput, View } from "react-native"; import { Button, IconButton, ProgressBar } from "react-native-paper"; import AppInput from "./AppInput"; import { getBestSet } from "./best.service"; -import { GYM_SETS_EDITED, GYM_SET_CREATED, MARGIN, PADDING } from "./constants"; +import { MARGIN, PADDING } from "./constants"; import CountMany from "./count-many"; import { AppDataSource } from "./data-source"; import { getNow, setRepo, settingsRepo } from "./db"; @@ -109,7 +103,6 @@ export default function StartPlan() { hidden: false, }; await setRepo.save(newSet); - DeviceEventEmitter.emit(GYM_SET_CREATED); await refresh(); if ( settings.notify && diff --git a/StartPlanItem.tsx b/StartPlanItem.tsx index 8060068..6d2a1a5 100644 --- a/StartPlanItem.tsx +++ b/StartPlanItem.tsx @@ -1,14 +1,8 @@ import { NavigationProp, useNavigation } from "@react-navigation/native"; import React, { useCallback, useState } from "react"; -import { - DeviceEventEmitter, - GestureResponderEvent, - ListRenderItemInfo, - View, -} from "react-native"; +import { GestureResponderEvent, ListRenderItemInfo, View } from "react-native"; import { List, Menu, RadioButton, useTheme } from "react-native-paper"; import { Like } from "typeorm"; -import { GYM_SET_DELETED } from "./constants"; import CountMany from "./count-many"; import { getNow, setRepo } from "./db"; import { HomePageParams } from "./home-page-params"; @@ -44,7 +38,6 @@ export default function StartPlanItem(props: Props) { setShowMenu(false); if (!first) return toast("Nothing to undo."); await setRepo.delete(first.id); - DeviceEventEmitter.emit(GYM_SET_DELETED); onUndo(); }, [setShowMenu, onUndo, item.name]); diff --git a/constants.ts b/constants.ts index f541d11..a1c44b1 100644 --- a/constants.ts +++ b/constants.ts @@ -4,6 +4,3 @@ export const ITEM_PADDING = 8; export const DARK_RIPPLE = "#444444"; export const LIGHT_RIPPLE = "#c2c2c2"; export const LIMIT = 15; -export const GYM_SET_UPDATED = "gym-set-updated"; -export const GYM_SET_CREATED = "gym-set-updated"; -export const GYM_SET_DELETED = "gym-set-updated"; diff --git a/data-source.ts b/data-source.ts index 6526143..4a87de6 100644 --- a/data-source.ts +++ b/data-source.ts @@ -1,6 +1,5 @@ import { DataSource } from "typeorm"; import GymSet from "./gym-set"; -import { GymSetSubscriber } from "./gym-set-subscriber"; import { Sets1667185586014 as sets1667185586014 } from "./migrations/1667185586014-sets"; import { plans1667186124792 } from "./migrations/1667186124792-plans"; import { settings1667186130041 } from "./migrations/1667186130041-settings";