diff --git a/App.tsx b/App.tsx
index 9471f21..7e4b3f4 100644
--- a/App.tsx
+++ b/App.tsx
@@ -15,9 +15,10 @@ import MaterialIcon from "react-native-vector-icons/MaterialCommunityIcons";
import { AppDataSource } from "./data-source";
import { settingsRepo } from "./db";
import { emitter } from "./emitter";
-import Routes from "./Routes";
+import AppDrawer from "./AppDrawer";
import { TOAST } from "./toast";
import { ThemeContext } from "./use-theme";
+import AppStack from "./AppStack";
export const CombinedDefaultTheme = {
...NavigationDefaultTheme,
@@ -105,7 +106,7 @@ const App = () => {
setDarkColor,
}}
>
-
+
)}
diff --git a/Routes.tsx b/AppDrawer.tsx
similarity index 77%
rename from Routes.tsx
rename to AppDrawer.tsx
index a7522c2..399dc3a 100644
--- a/Routes.tsx
+++ b/AppDrawer.tsx
@@ -1,19 +1,19 @@
import { createDrawerNavigator } from "@react-navigation/drawer";
import { IconButton } from "react-native-paper";
-import GraphsPage from "./GraphsPage";
-import { DrawerParamList } from "./drawer-param-list";
-import HomePage from "./HomePage";
-import PlanPage from "./PlanPage";
+import GraphsList from "./GraphsList";
+import InsightsPage from "./InsightsPage";
+import PlanList from "./PlanList";
+import SetList from "./SetList";
import SettingsPage from "./SettingsPage";
import TimerPage from "./TimerPage";
+import WeightList from "./WeightList";
+import WorkoutList from "./WorkoutList";
+import { DrawerParams } from "./drawer-param-list";
import useDark from "./use-dark";
-import WorkoutsPage from "./WorkoutsPage";
-import WeightPage from "./WeightPage";
-import InsightsPage from "./InsightsPage";
-const Drawer = createDrawerNavigator();
+const Drawer = createDrawerNavigator();
-export default function Routes() {
+export default function AppDrawer() {
const dark = useDark();
return (
@@ -26,24 +26,24 @@ export default function Routes() {
>
}}
/>
}}
/>
,
}}
/>
}}
/>
}}
/>
();
+
+export default function AppStack() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/DrawerHeader.tsx b/DrawerHeader.tsx
index 9acbe23..a979394 100644
--- a/DrawerHeader.tsx
+++ b/DrawerHeader.tsx
@@ -1,7 +1,7 @@
import { DrawerNavigationProp } from "@react-navigation/drawer";
import { useNavigation } from "@react-navigation/native";
import { Appbar, IconButton } from "react-native-paper";
-import { DrawerParamList } from "./drawer-param-list";
+import { DrawerParams } from "./drawer-param-list";
export default function DrawerHeader({
name,
@@ -10,7 +10,7 @@ export default function DrawerHeader({
name: string;
children?: JSX.Element | JSX.Element[];
}) {
- const navigation = useNavigation>();
+ const navigation = useNavigation>();
return (
diff --git a/EditPlan.tsx b/EditPlan.tsx
index 468b653..1fa8d76 100644
--- a/EditPlan.tsx
+++ b/EditPlan.tsx
@@ -10,14 +10,15 @@ import { Button, IconButton, Text } from "react-native-paper";
import { MARGIN, PADDING } from "./constants";
import { planRepo, setRepo } from "./db";
import { defaultSet } from "./gym-set";
-import { PlanPageParams } from "./plan-page-params";
import StackHeader from "./StackHeader";
import Switch from "./Switch";
import { DAYS } from "./time";
import AppInput from "./AppInput";
+import { StackParams } from "./AppStack";
+import { DrawerParams } from "./drawer-param-list";
export default function EditPlan() {
- const { params } = useRoute>();
+ const { params } = useRoute>();
const { plan } = params;
const [title, setTitle] = useState(plan?.title);
const [days, setDays] = useState(
@@ -27,7 +28,10 @@ export default function EditPlan() {
plan.workouts ? plan.workouts.split(",") : []
);
const [names, setNames] = useState([]);
- const navigation = useNavigation>();
+ const { navigate: drawerNavigate } =
+ useNavigation>();
+ const { navigate: stackNavigate } =
+ useNavigation>();
useEffect(() => {
setRepo
@@ -95,7 +99,7 @@ export default function EditPlan() {
});
if (!first) first = { ...defaultSet, name: workouts[0] };
delete first.id;
- navigation.navigate("StartPlan", { plan: newPlan, first });
+ stackNavigate("StartPlan", { plan: newPlan, first });
}}
icon="play"
/>
@@ -141,7 +145,7 @@ export default function EditPlan() {
icon="content-save"
onPress={async () => {
await save();
- navigation.navigate("PlanList");
+ drawerNavigate("Plans");
}}
>
Save
diff --git a/EditSet.tsx b/EditSet.tsx
index b5677eb..38d440f 100644
--- a/EditSet.tsx
+++ b/EditSet.tsx
@@ -28,15 +28,16 @@ import GymSet, {
GYM_SET_DELETED,
GYM_SET_UPDATED,
} from "./gym-set";
-import { HomePageParams } from "./home-page-params";
import Settings from "./settings";
import StackHeader from "./StackHeader";
import { toast } from "./toast";
+import { DrawerParams } from "./drawer-param-list";
+import { StackParams } from "./AppStack";
export default function EditSet() {
- const { params } = useRoute>();
+ const { params } = useRoute>();
const { set } = params;
- const { navigate } = useNavigation>();
+ const { goBack } = useNavigation>();
const [settings, setSettings] = useState({} as Settings);
const [name, setName] = useState(set.name);
const [reps, setReps] = useState(set.reps?.toString());
@@ -79,7 +80,7 @@ export default function EditSet() {
);
const notify = (value: Partial) => {
- if (!settings.notify) return navigate("Sets");
+ if (!settings.notify) return goBack();
if (
value.weight > set.weight ||
(value.reps > set.reps && value.weight === set.weight)
@@ -121,9 +122,9 @@ export default function EditSet() {
const saved = await setRepo.save(newSet);
notify(newSet);
- if (typeof set.id !== "number") return added(saved);
+ if (typeof set.id !== "number") added(saved);
else emitter.emit(GYM_SET_UPDATED, saved);
- navigate("Sets");
+ goBack();
};
const changeImage = useCallback(async () => {
@@ -160,7 +161,7 @@ export default function EditSet() {
const remove = async () => {
await setRepo.delete(set.id);
emitter.emit(GYM_SET_DELETED);
- navigate("Sets");
+ goBack();
};
const openMenu = async () => {
diff --git a/EditSets.tsx b/EditSets.tsx
index cca6fc5..c451b95 100644
--- a/EditSets.tsx
+++ b/EditSets.tsx
@@ -16,14 +16,15 @@ import { MARGIN, PADDING } from "./constants";
import { setRepo, settingsRepo } from "./db";
import { emitter } from "./emitter";
import GymSet, { GYM_SET_CREATED } from "./gym-set";
-import { HomePageParams } from "./home-page-params";
import Settings from "./settings";
import StackHeader from "./StackHeader";
+import { StackParams } from "./AppStack";
+import { DrawerParams } from "./drawer-param-list";
export default function EditSets() {
- const { params } = useRoute>();
+ const { params } = useRoute>();
const { ids } = params;
- const { navigate } = useNavigation>();
+ const { navigate } = useNavigation>();
const [settings, setSettings] = useState({} as Settings);
const [name, setName] = useState("");
const [reps, setReps] = useState("");
@@ -63,7 +64,7 @@ export default function EditSets() {
if (newImage) update.image = newImage;
if (Object.keys(update).length > 0) await setRepo.update(ids, update);
emitter.emit(GYM_SET_CREATED);
- navigate("Sets");
+ navigate("Home");
};
const changeImage = useCallback(async () => {
diff --git a/EditWeight.tsx b/EditWeight.tsx
index a39aed0..27161e0 100644
--- a/EditWeight.tsx
+++ b/EditWeight.tsx
@@ -11,20 +11,21 @@ import { useCallback, useRef, useState } from "react";
import { TextInput, View } from "react-native";
import { Button, IconButton } from "react-native-paper";
import AppInput from "./AppInput";
+import { StackParams } from "./AppStack";
import ConfirmDialog from "./ConfirmDialog";
+import StackHeader from "./StackHeader";
import { MARGIN, PADDING } from "./constants";
import { AppDataSource } from "./data-source";
import { getNow, settingsRepo, weightRepo } from "./db";
+import { DrawerParams } from "./drawer-param-list";
import Settings from "./settings";
-import StackHeader from "./StackHeader";
import { toast } from "./toast";
import Weight from "./weight";
-import { WeightPageParams } from "./WeightPage";
export default function EditWeight() {
- const { params } = useRoute>();
+ const { params } = useRoute>();
const { weight } = params;
- const { navigate } = useNavigation>();
+ const { navigate } = useNavigation>();
const [settings, setSettings] = useState({} as Settings);
const [value, setValue] = useState(weight.value?.toString());
const [unit, setUnit] = useState(weight.unit);
@@ -55,7 +56,7 @@ export default function EditWeight() {
await weightRepo.save(newWeight);
if (settings.notify) await checkWeekly();
- navigate("Weights");
+ navigate("Weight");
};
const checkWeekly = async () => {
@@ -94,7 +95,7 @@ export default function EditWeight() {
const remove = async () => {
if (!weight.id) return;
await weightRepo.delete(weight.id);
- navigate("Weights");
+ navigate("Weight");
};
return (
diff --git a/EditWorkout.tsx b/EditWorkout.tsx
index da8d2f5..9f94a72 100644
--- a/EditWorkout.tsx
+++ b/EditWorkout.tsx
@@ -19,10 +19,11 @@ import GymSet, { defaultSet, GYM_SET_CREATED } from "./gym-set";
import Settings from "./settings";
import StackHeader from "./StackHeader";
import { toast } from "./toast";
-import { WorkoutsPageParams } from "./WorkoutsPage";
+import { DrawerParams } from "./drawer-param-list";
+import { StackParams } from "./AppStack";
export default function EditWorkout() {
- const { params } = useRoute>();
+ const { params } = useRoute>();
const [removeImage, setRemoveImage] = useState(false);
const [showRemove, setShowRemove] = useState(false);
const [name, setName] = useState(params.gymSet.name);
@@ -35,7 +36,7 @@ export default function EditWorkout() {
params.gymSet.seconds?.toString() ?? "30"
);
const [sets, setSets] = useState(params.gymSet.sets?.toString() ?? "3");
- const { navigate } = useNavigation>();
+ const { navigate } = useNavigation>();
const setsRef = useRef(null);
const stepsRef = useRef(null);
const minutesRef = useRef(null);
@@ -64,7 +65,7 @@ export default function EditWorkout() {
WHERE workouts LIKE $3`,
[params.gymSet.name, name, `%${params.gymSet.name}%`]
);
- navigate("WorkoutList", { update: newWorkout });
+ navigate("Workouts", { update: newWorkout });
};
const add = async () => {
@@ -81,7 +82,7 @@ export default function EditWorkout() {
created: now,
});
emitter.emit(GYM_SET_CREATED);
- navigate("WorkoutList", { reset: new Date().getTime() });
+ navigate("Workouts", { reset: new Date().getTime() });
};
const save = async () => {
@@ -184,13 +185,18 @@ export default function EditWorkout() {
)}
-