Easily swap between edit/start for plans - 1.137

This commit is contained in:
Brandon Presley 2023-03-28 12:15:56 +13:00
parent 457134df6b
commit 90db607190
4 changed files with 39 additions and 11 deletions

View File

@ -6,14 +6,16 @@ import {
} from '@react-navigation/native' } from '@react-navigation/native'
import {useCallback, useEffect, useState} from 'react' import {useCallback, useEffect, useState} from 'react'
import {ScrollView, StyleSheet, View} from 'react-native' import {ScrollView, StyleSheet, View} from 'react-native'
import {Button, Text} from 'react-native-paper' import {Button, IconButton, Text} from 'react-native-paper'
import {getLast} from './best.service'
import {MARGIN, PADDING} from './constants' import {MARGIN, PADDING} from './constants'
import {planRepo, setRepo} from './db' import {planRepo, setRepo} from './db'
import {DrawerParamList} from './drawer-param-list' import {defaultSet} from './gym-set'
import {PlanPageParams} from './plan-page-params' import {PlanPageParams} from './plan-page-params'
import StackHeader from './StackHeader' import StackHeader from './StackHeader'
import Switch from './Switch' import Switch from './Switch'
import {DAYS} from './time' import {DAYS} from './time'
import useDark from './use-dark'
export default function EditPlan() { export default function EditPlan() {
const {params} = useRoute<RouteProp<PlanPageParams, 'EditPlan'>>() const {params} = useRoute<RouteProp<PlanPageParams, 'EditPlan'>>()
@ -25,7 +27,8 @@ export default function EditPlan() {
plan.workouts ? plan.workouts.split(',') : [], plan.workouts ? plan.workouts.split(',') : [],
) )
const [names, setNames] = useState<string[]>([]) const [names, setNames] = useState<string[]>([])
const navigation = useNavigation<NavigationProp<DrawerParamList>>() const navigation = useNavigation<NavigationProp<PlanPageParams>>()
const dark = useDark()
useEffect(() => { useEffect(() => {
setRepo setRepo
@ -74,8 +77,18 @@ export default function EditPlan() {
return ( return (
<> <>
<StackHeader <StackHeader
title={typeof plan.id === 'number' ? 'Edit plan' : 'Add plan'} title={typeof plan.id === 'number' ? 'Edit plan' : 'Add plan'}>
/> <IconButton
color={dark ? 'white' : 'white'}
onPress={async () => {
let first = await getLast(workouts[0])
if (!first) first = {...defaultSet, name: workouts[0]}
delete first.id
navigation.navigate('StartPlan', {plan: params.plan, first})
}}
icon="play-arrow"
/>
</StackHeader>
<View style={{padding: PADDING, flex: 1}}> <View style={{padding: PADDING, flex: 1}}>
<ScrollView style={{flex: 1}}> <ScrollView style={{flex: 1}}>
<Text style={styles.title}>Days</Text> <Text style={styles.title}>Days</Text>

View File

@ -1,7 +1,13 @@
import {RouteProp, useFocusEffect, useRoute} from '@react-navigation/native' import {
NavigationProp,
RouteProp,
useFocusEffect,
useNavigation,
useRoute,
} from '@react-navigation/native'
import {useCallback, useMemo, useRef, useState} from 'react' import {useCallback, useMemo, useRef, useState} from 'react'
import {FlatList, NativeModules, TextInput, View} from 'react-native' import {FlatList, NativeModules, TextInput, View} from 'react-native'
import {Button, ProgressBar} from 'react-native-paper' import {Button, IconButton, ProgressBar} from 'react-native-paper'
import AppInput from './AppInput' import AppInput from './AppInput'
import {getBestSet, getLast} from './best.service' import {getBestSet, getLast} from './best.service'
import {PADDING} from './constants' import {PADDING} from './constants'
@ -14,6 +20,7 @@ import Settings from './settings'
import StackHeader from './StackHeader' import StackHeader from './StackHeader'
import StartPlanItem from './StartPlanItem' import StartPlanItem from './StartPlanItem'
import {toast} from './toast' import {toast} from './toast'
import useDark from './use-dark'
export default function StartPlan() { export default function StartPlan() {
const {params} = useRoute<RouteProp<PlanPageParams, 'StartPlan'>>() const {params} = useRoute<RouteProp<PlanPageParams, 'StartPlan'>>()
@ -27,6 +34,8 @@ export default function StartPlan() {
const repsRef = useRef<TextInput>(null) const repsRef = useRef<TextInput>(null)
const unitRef = useRef<TextInput>(null) const unitRef = useRef<TextInput>(null)
const workouts = useMemo(() => params.plan.workouts.split(','), [params]) const workouts = useMemo(() => params.plan.workouts.split(','), [params])
const dark = useDark()
const navigation = useNavigation<NavigationProp<PlanPageParams>>()
const [selection, setSelection] = useState({ const [selection, setSelection] = useState({
start: 0, start: 0,
@ -105,7 +114,13 @@ export default function StartPlan() {
return ( return (
<> <>
<StackHeader title={params.plan.days.replace(/,/g, ', ')} /> <StackHeader title={params.plan.days.replace(/,/g, ', ')}>
<IconButton
color={dark ? 'white' : 'white'}
onPress={() => navigation.navigate('EditPlan', {plan: params.plan})}
icon="edit"
/>
</StackHeader>
<View style={{padding: PADDING, flex: 1, flexDirection: 'column'}}> <View style={{padding: PADDING, flex: 1, flexDirection: 'column'}}>
<View style={{flex: 1}}> <View style={{flex: 1}}>
<AppInput <AppInput

View File

@ -41,8 +41,8 @@ android {
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 36162 versionCode 36163
versionName "1.136" versionName "1.137"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) { if (isNewArchitectureEnabled()) {

View File

@ -1,6 +1,6 @@
{ {
"name": "massive", "name": "massive",
"version": "1.136", "version": "1.137",
"private": true, "private": true,
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"scripts": { "scripts": {