From 158dd61668f0be257025b3f0b1a07cabb8c113cc Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Thu, 27 Jul 2023 13:24:32 +1200 Subject: [PATCH] Prevent sets dissapearing after updating - 1.146 Previously we would always update the created field by making a new Date object, even if the user didn't pick a new date. On some devices this might slightly change the time of the day, meaning it jumps somewhere else on the home page. --- EditSet.tsx | 31 ++++++++++++++++++------------- android/app/build.gradle | 4 ++-- package.json | 2 +- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/EditSet.tsx b/EditSet.tsx index 4c21b28..30f14ee 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -30,9 +30,10 @@ export default function EditSet() { const [weight, setWeight] = useState(set.weight?.toString()) const [newImage, setNewImage] = useState(set.image) const [unit, setUnit] = useState(set.unit) - const [created, setCreated] = useState( + const [created, setCreated] = useState( set.created ? new Date(set.created) : new Date(), ) + const [createdDirty, setCreatedDirty] = useState(false) const [showRemove, setShowRemove] = useState(false) const [removeImage, setRemoveImage] = useState(false) const weightRef = useRef(null) @@ -70,35 +71,38 @@ export default function EditSet() { value.weight > set.weight || (value.reps > set.reps && value.weight === set.weight) ) { - toast("Great work King! That's a new record.") + toast('Great work King! That\'s a new record.') } }, [startTimer, set, settings], ) const handleSubmit = async () => { - console.log(`${EditSet.name}.handleSubmit:`, { set, uri: newImage, name }) if (!name) return - let image = newImage - if (!newImage && !removeImage) { - image = await setRepo.findOne({ where: { name } }).then((s) => s?.image) - } - console.log(`${EditSet.name}.handleSubmit:`, { image }) - const now = await getNow() - const saved = await setRepo.save({ + const newSet: Partial = { id: set.id, name, - created: created?.toISOString() || now, reps: Number(reps), weight: Number(weight), unit, - image, minutes: Number(set.minutes ?? 3), seconds: Number(set.seconds ?? 30), sets: set.sets ?? 3, hidden: false, - }) + } + + newSet.image = newImage + if (!newImage && !removeImage) { + newSet.image = await setRepo.findOne({ where: { name } }).then((s) => + s?.image + ) + } + + if (createdDirty) newSet.created = created.toISOString() + if (typeof set.id !== 'number') newSet.created = await getNow() + + const saved = await setRepo.save(newSet) if (typeof set.id !== 'number') added(saved) navigation.goBack() } @@ -123,6 +127,7 @@ export default function EditSet() { onChange: (_, date) => { if (date === created) return setCreated(date) + setCreatedDirty(true) DateTimePickerAndroid.open({ value: date, onChange: (__, time) => setCreated(time), diff --git a/android/app/build.gradle b/android/app/build.gradle index 6898c20..fcd4d31 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -85,8 +85,8 @@ android { applicationId "com.massive" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 36171 - versionName "1.145" + versionCode 36172 + versionName "1.146" } signingConfigs { release { diff --git a/package.json b/package.json index a358360..73a7e04 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "massive", - "version": "1.145", + "version": "1.146", "private": true, "license": "GPL-3.0-only", "scripts": {