Compare commits
11 Commits
66d9894c19
...
fd15d10028
Author | SHA1 | Date |
---|---|---|
Brandon Presley | fd15d10028 | |
Brandon Presley | 7abcea5710 | |
Brandon Presley | e7c0460166 | |
Brandon Presley | c2accf7202 | |
Brandon Presley | 164d946b90 | |
Brandon Presley | 6ad7091503 | |
Brandon Presley | b681aa82d6 | |
Brandon Presley | d7599ff39b | |
Brandon Presley | 9f20954ff5 | |
Brandon Presley | be601ac7e4 | |
Brandon Presley | 6deb772f99 |
|
@ -88,7 +88,7 @@ const styles = StyleSheet.create({
|
|||
debugBanner: {
|
||||
position: 'absolute',
|
||||
top: 20,
|
||||
right: 50,
|
||||
right: 100,
|
||||
backgroundColor: 'red',
|
||||
zIndex: 1000,
|
||||
borderRadius: 5,
|
||||
|
|
41
Daily.tsx
41
Daily.tsx
|
@ -1,6 +1,6 @@
|
|||
import { useCallback, useEffect, useState } from "react";
|
||||
import { FlatList, Pressable, View } from "react-native";
|
||||
import { Button, IconButton, List, Text } from "react-native-paper";
|
||||
import { FlatList, View } from "react-native";
|
||||
import { Button, IconButton, List } from "react-native-paper";
|
||||
import AppFab from "./AppFab";
|
||||
import DrawerHeader from "./DrawerHeader";
|
||||
import { LIMIT, PADDING } from "./constants";
|
||||
|
@ -20,31 +20,36 @@ export default function Daily() {
|
|||
const [settings, setSettings] = useState<Settings>();
|
||||
const navigation = useNavigation<NavigationProp<StackParams>>();
|
||||
|
||||
const onFocus = async () => {
|
||||
const mounted = async () => {
|
||||
const now = await getNow();
|
||||
let created = now.split('T')[0];
|
||||
setDay(new Date(created));
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
if (!day) return
|
||||
const created = day.toISOString().split('T')[0]
|
||||
const newSets = await setRepo.find({
|
||||
where: { hidden: 0 as any, created: Like(`${created}%`) },
|
||||
take: LIMIT,
|
||||
skip: 0,
|
||||
order: { created: "DESC" },
|
||||
});
|
||||
setSets(newSets);
|
||||
console.log(`${Daily.name}.useEffect:`, { day });
|
||||
settingsRepo.findOne({ where: {} }).then(setSettings)
|
||||
})()
|
||||
mounted();
|
||||
}, [])
|
||||
|
||||
const refresh = async () => {
|
||||
if (!day) return;
|
||||
const created = day.toISOString().split('T')[0]
|
||||
const newSets = await setRepo.find({
|
||||
where: { hidden: 0 as any, created: Like(`${created}%`) },
|
||||
take: LIMIT,
|
||||
skip: 0,
|
||||
order: { created: "DESC" },
|
||||
});
|
||||
setSets(newSets);
|
||||
settingsRepo.findOne({ where: {} }).then(setSettings)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
refresh();
|
||||
}, [day])
|
||||
|
||||
useFocusEffect(useCallback(() => {
|
||||
onFocus();
|
||||
}, []))
|
||||
refresh();
|
||||
}, [day]))
|
||||
|
||||
const onAdd = async () => {
|
||||
const now = await getNow();
|
||||
|
|
|
@ -6,15 +6,21 @@ import { DrawerParams } from "./drawer-params";
|
|||
export default function DrawerHeader({
|
||||
name,
|
||||
children,
|
||||
ids,
|
||||
unSelect,
|
||||
}: {
|
||||
name: string;
|
||||
children?: JSX.Element | JSX.Element[];
|
||||
ids?: unknown[],
|
||||
unSelect?: () => void,
|
||||
}) {
|
||||
const navigation = useNavigation<DrawerNavigationProp<DrawerParams>>();
|
||||
|
||||
return (
|
||||
<Appbar.Header>
|
||||
<IconButton icon="menu" onPress={navigation.openDrawer} />
|
||||
{ids && ids.length > 0 ? (<IconButton icon="arrow-left" onPress={unSelect} />) : (
|
||||
<IconButton icon="menu" onPress={navigation.openDrawer} />
|
||||
)}
|
||||
<Appbar.Content title={name} />
|
||||
{children}
|
||||
</Appbar.Header>
|
||||
|
|
|
@ -125,6 +125,8 @@ export default function ExerciseList() {
|
|||
<>
|
||||
<DrawerHeader
|
||||
name={names.length > 0 ? `${names.length} selected` : "Exercises"}
|
||||
ids={names}
|
||||
unSelect={() => setNames([])}
|
||||
>
|
||||
<ListMenu
|
||||
onClear={clear}
|
||||
|
|
72
ListMenu.tsx
72
ListMenu.tsx
|
@ -42,44 +42,50 @@ export default function ListMenu({
|
|||
};
|
||||
|
||||
const select = () => {
|
||||
setShowMenu(false);
|
||||
onSelect();
|
||||
};
|
||||
|
||||
return (
|
||||
<Menu
|
||||
visible={showMenu}
|
||||
onDismiss={() => setShowMenu(false)}
|
||||
anchor={
|
||||
<IconButton onPress={() => setShowMenu(true)} icon="dots-vertical" />
|
||||
}
|
||||
>
|
||||
<Menu.Item leadingIcon="check-all" title="Select all" onPress={select} />
|
||||
<Menu.Item
|
||||
leadingIcon="close"
|
||||
title="Clear"
|
||||
onPress={clear}
|
||||
disabled={ids?.length === 0}
|
||||
/>
|
||||
<Menu.Item
|
||||
leadingIcon="pencil"
|
||||
title="Edit"
|
||||
onPress={edit}
|
||||
disabled={ids?.length === 0}
|
||||
/>
|
||||
{onCopy && (
|
||||
<>
|
||||
{ids.length > 0 && (
|
||||
<IconButton icon="delete" onPress={() => setShowRemove(true)} />
|
||||
)}
|
||||
<Menu
|
||||
visible={showMenu}
|
||||
onDismiss={() => setShowMenu(false)}
|
||||
anchor={
|
||||
<IconButton onPress={() => setShowMenu(true)} icon="dots-vertical" />
|
||||
}
|
||||
>
|
||||
<Menu.Item leadingIcon="check-all" title="Select all" onPress={select} />
|
||||
<Menu.Item
|
||||
leadingIcon="content-copy"
|
||||
title="Copy"
|
||||
onPress={copy}
|
||||
leadingIcon="close"
|
||||
title="Clear"
|
||||
onPress={clear}
|
||||
disabled={ids?.length === 0}
|
||||
/>
|
||||
)}
|
||||
<Divider />
|
||||
<Menu.Item
|
||||
leadingIcon="delete"
|
||||
onPress={() => setShowRemove(true)}
|
||||
title="Delete"
|
||||
/>
|
||||
<Menu.Item
|
||||
leadingIcon="pencil"
|
||||
title="Edit"
|
||||
onPress={edit}
|
||||
disabled={ids?.length === 0}
|
||||
/>
|
||||
{onCopy && (
|
||||
<Menu.Item
|
||||
leadingIcon="content-copy"
|
||||
title="Copy"
|
||||
onPress={copy}
|
||||
disabled={ids?.length === 0}
|
||||
/>
|
||||
)}
|
||||
<Divider />
|
||||
<Menu.Item
|
||||
leadingIcon="delete"
|
||||
onPress={() => setShowRemove(true)}
|
||||
title="Delete"
|
||||
/>
|
||||
</Menu>
|
||||
<ConfirmDialog
|
||||
title={ids?.length === 0 ? "Delete all" : "Delete selected"}
|
||||
show={showRemove}
|
||||
|
@ -90,9 +96,9 @@ export default function ListMenu({
|
|||
{ids?.length === 0 ? (
|
||||
<>This irreversibly deletes records from the app. Are you sure?</>
|
||||
) : (
|
||||
<>This will delete {ids?.length} record(s). Are you sure?</>
|
||||
<>This will delete {ids.length} {ids?.length > 1 ? "records" : "record"}. Are you sure?</>
|
||||
)}
|
||||
</ConfirmDialog>
|
||||
</Menu>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -94,7 +94,10 @@ export default function PlanList() {
|
|||
|
||||
return (
|
||||
<>
|
||||
<DrawerHeader name={ids.length > 0 ? `${ids.length} selected` : "Plans"}>
|
||||
<DrawerHeader name={ids.length > 0 ? `${ids.length} selected` : "Plans"}
|
||||
ids={ids}
|
||||
unSelect={() => setIds([])}
|
||||
>
|
||||
<ListMenu
|
||||
onClear={clear}
|
||||
onCopy={copy}
|
||||
|
|
|
@ -164,6 +164,8 @@ export default function SetList() {
|
|||
<>
|
||||
<DrawerHeader
|
||||
name={ids.length > 0 ? `${ids.length} selected` : "History"}
|
||||
ids={ids}
|
||||
unSelect={() => setIds([])}
|
||||
>
|
||||
<ListMenu
|
||||
onClear={clear}
|
||||
|
|
|
@ -87,8 +87,8 @@ android {
|
|||
applicationId "com.massive"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 36241
|
||||
versionName "2.26"
|
||||
versionCode 36243
|
||||
versionName "2.28"
|
||||
}
|
||||
signingConfigs {
|
||||
release {
|
||||
|
|
|
@ -20,7 +20,7 @@ class MainActivity : ReactActivity() {
|
|||
override fun createReactActivityDelegate(): ReactActivityDelegate {
|
||||
return DefaultReactActivityDelegate(
|
||||
this,
|
||||
mainComponentName!!, // If you opted-in for the New Architecture, we enable the Fabric Renderer.
|
||||
mainComponentName, // If you opted-in for the New Architecture, we enable the Fabric Renderer.
|
||||
fabricEnabled
|
||||
)
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ class TimerService : Service() {
|
|||
override fun onReceive(context: Context?, intent: Intent?) {
|
||||
secondsLeft += 60;
|
||||
secondsTotal += 60;
|
||||
updateNotification(secondsLeft)
|
||||
mediaPlayer?.stop()
|
||||
vibrator?.cancel()
|
||||
}
|
||||
|
@ -241,10 +242,7 @@ class TimerService : Service() {
|
|||
@Suppress("DEPRECATION")
|
||||
getSystemService(VIBRATOR_SERVICE) as Vibrator
|
||||
}
|
||||
vibrator!!.vibrate(VibrationEffect.createWaveform(pattern, -1))
|
||||
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
handler.postDelayed({ vibrator!!.cancel() }, 10000)
|
||||
vibrator!!.vibrate(VibrationEffect.createWaveform(pattern, 2))
|
||||
}
|
||||
|
||||
private fun notifyFinished() {
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "massive",
|
||||
"version": "2.24",
|
||||
"version": "2.27",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "massive",
|
||||
"version": "2.24",
|
||||
"version": "2.27",
|
||||
"license": "GPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "massive",
|
||||
"version": "2.26",
|
||||
"version": "2.28",
|
||||
"private": true,
|
||||
"license": "GPL-3.0-only",
|
||||
"scripts": {
|
||||
|
|
Loading…
Reference in New Issue