Revert "Change way we detect set updates"
This reverts commit 185ebd1824
.
This commit is contained in:
parent
82234a30a8
commit
6b524dce34
11
EditSet.tsx
11
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 });
|
||||
};
|
||||
|
|
|
@ -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();
|
||||
};
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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<GymSet[]>();
|
||||
const [refreshing, setRefreshing] = useState(false);
|
||||
const [bests, setBests] = useState<GymSet[]>([]);
|
||||
const [offset, setOffset] = useState(0);
|
||||
const [end, setEnd] = useState(false);
|
||||
const [term, setTerm] = useState("");
|
||||
const navigation = useNavigation<NavigationProp<GraphsPageParams>>();
|
||||
const [settings, setSettings] = useState<Settings>();
|
||||
|
||||
const refresh = useCallback(async (value: string) => {
|
||||
setRefreshing(true);
|
||||
const result = await getBestSets({ term: value, offset: 0 }).finally(() =>
|
||||
setRefreshing(false)
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
settingsRepo.findOne({ where: {} }).then(setSettings);
|
||||
}, [])
|
||||
);
|
||||
|
||||
const refresh = useCallback(async (value: string) => {
|
||||
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)
|
||||
)
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
refresh(term);
|
||||
}, [refresh, term])
|
||||
);
|
||||
|
||||
return () => subs.forEach((sub) => sub.remove());
|
||||
/* eslint-disable react-hooks/exhaustive-deps */
|
||||
}, []);
|
||||
|
||||
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 && (
|
||||
<Image
|
||||
source={{ uri: item.image }}
|
||||
style={{ height: 75, width: 75 }}
|
||||
|
@ -111,8 +94,6 @@ export default function GraphsList() {
|
|||
renderItem={renderItem}
|
||||
data={bests}
|
||||
onEndReached={next}
|
||||
refreshing={refreshing}
|
||||
onRefresh={() => refresh("")}
|
||||
/>
|
||||
)}
|
||||
</Page>
|
||||
|
|
|
@ -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 &&
|
||||
|
|
|
@ -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]);
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
Loading…
Reference in New Issue
Block a user