From c9b1ab1f9d3c8a90614c259d5cab6349fd31d10f Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Thu, 2 Mar 2023 19:05:27 +1300 Subject: [PATCH] Change default reps/weight for starting a plan - 1.128 Previously we used the globally best reps+weight set by default. More commonly we build up to our last best working set. People can still check out their best sets on the best page. Closes #153 --- PlanItem.tsx | 4 ++-- StartPlan.tsx | 16 ++++++++-------- android/app/build.gradle | 4 ++-- best.service.ts | 13 +++++++++++++ package.json | 2 +- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/PlanItem.tsx b/PlanItem.tsx index 4881b20..a4c8fe2 100644 --- a/PlanItem.tsx +++ b/PlanItem.tsx @@ -6,7 +6,7 @@ import { import {useCallback, useMemo, useState} from 'react' import {Text} from 'react-native' import {List} from 'react-native-paper' -import {getBestSet} from './best.service' +import {getLast} from './best.service' import {DARK_RIPPLE, LIGHT_RIPPLE} from './constants' import {defaultSet} from './gym-set' import {Plan} from './plan' @@ -37,7 +37,7 @@ export default function PlanItem({ const start = useCallback(async () => { const workout = item.workouts.split(',')[0] - let first = await getBestSet(workout) + let first = await getLast(workout) if (!first) first = {...defaultSet, name: workout} delete first.id if (ids.length === 0) diff --git a/StartPlan.tsx b/StartPlan.tsx index 9adaf99..bc9e82a 100644 --- a/StartPlan.tsx +++ b/StartPlan.tsx @@ -3,7 +3,7 @@ import {useCallback, useMemo, useRef, useState} from 'react' import {FlatList, NativeModules, TextInput, View} from 'react-native' import {Button, ProgressBar} from 'react-native-paper' import AppInput from './AppInput' -import {getBestSet} from './best.service' +import {getBestSet, getLast} from './best.service' import {PADDING} from './constants' import CountMany from './count-many' import {AppDataSource} from './data-source' @@ -59,13 +59,13 @@ export default function StartPlan() { if (!counts && !newCounts) return const workout = counts ? counts[index] : newCounts[index] console.log(`${StartPlan.name}.next:`, {workout}) - const newBest = await getBestSet(workout.name) - if (!newBest) return - delete newBest.id - console.log(`${StartPlan.name}.next:`, {newBest}) - setReps(newBest.reps.toString()) - setWeight(newBest.weight.toString()) - setUnit(newBest.unit) + const last = await getLast(workout.name) + if (!last) return + delete last.id + console.log(`${StartPlan.name}.select:`, {last}) + setReps(last.reps.toString()) + setWeight(last.weight.toString()) + setUnit(last.unit) }, [counts], ) diff --git a/android/app/build.gradle b/android/app/build.gradle index a9ac719..79b5aaa 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -41,8 +41,8 @@ android { missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 36153 - versionName "1.127" + versionCode 36154 + versionName "1.128" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() if (isNewArchitectureEnabled()) { diff --git a/best.service.ts b/best.service.ts index 92450fb..ad7b6ea 100644 --- a/best.service.ts +++ b/best.service.ts @@ -13,3 +13,16 @@ export const getBestSet = async (name: string): Promise => { .addOrderBy('reps', 'DESC') .getOne() } + +export const getLast = async (name: string): Promise => { + return setRepo + .createQueryBuilder() + .where('name = :name', {name}) + .andWhere('reps >= 5') + .groupBy("STRFTIME('%Y-%m-%d', created)") + .orderBy('created', 'DESC') + .select('reps') + .addSelect('MAX(weight) as weight') + .addSelect('unit') + .getRawOne() +} diff --git a/package.json b/package.json index f32995e..cfac5a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "massive", - "version": "1.127", + "version": "1.128", "private": true, "license": "GPL-3.0-only", "scripts": {