diff --git a/Select.tsx b/Select.tsx
index b5dd4eb..5a6dc66 100644
--- a/Select.tsx
+++ b/Select.tsx
@@ -1,6 +1,6 @@
import React, { useCallback, useMemo, useState } from 'react'
import { View } from 'react-native'
-import { Button, Menu, Subheading, useTheme } from 'react-native-paper'
+import { Button, Menu, Subheading } from 'react-native-paper'
import { ITEM_PADDING } from './constants'
export interface Item {
@@ -21,7 +21,6 @@ function Select({
label?: string
}) {
const [show, setShow] = useState(false)
- const { colors } = useTheme()
const selected = useMemo(
() => items.find((item) => item.value === value) || items[0],
@@ -61,7 +60,7 @@ function Select({
>
{items.map((item) => (
handlePress(item.value)}
diff --git a/SetItem.tsx b/SetItem.tsx
index 1c896ec..32faa04 100644
--- a/SetItem.tsx
+++ b/SetItem.tsx
@@ -42,6 +42,30 @@ export default function SetItem({
return LIGHT_RIPPLE
}, [dark, ids, item.id])
+ const left = useCallback(() => {
+ if (!settings.images || !item.image) return null
+ return (
+
+ )
+ }, [item.image, settings.images])
+
+ const right = useCallback(() => {
+ if (!settings.showDate) return null
+ return (
+
+ {format(new Date(item.created), settings.date || 'P')}
+
+ )
+ }, [settings.showDate, item.created, settings.date, dark])
+
return (
- settings.images &&
- item.image && (
-
- )}
- right={() => (
- <>
- {settings.showDate && (
-
- {format(new Date(item.created), settings.date || 'P')}
-
- )}
- >
- )}
+ left={left}
+ right={right}
/>
)
}
diff --git a/StartPlanItem.tsx b/StartPlanItem.tsx
index 4f03210..3bf1533 100644
--- a/StartPlanItem.tsx
+++ b/StartPlanItem.tsx
@@ -46,7 +46,7 @@ export default function StartPlanItem(props: Props) {
[setShowMenu, setAnchor],
)
- const edit = async () => {
+ const edit = useCallback(async () => {
const now = await getNow()
const created = now.split('T')[0]
const first = await setRepo.findOne({
@@ -60,7 +60,39 @@ export default function StartPlanItem(props: Props) {
setShowMenu(false)
if (!first) return toast('Nothing to edit.')
navigate('EditSet', { set: first })
- }
+ }, [item.name, navigate])
+
+ const left = useCallback(
+ () => (
+
+ onSelect(index)}
+ value={index.toString()}
+ status={selected === index ? 'checked' : 'unchecked'}
+ color={colors.primary}
+ />
+
+ ),
+ [index, selected, colors.primary, onSelect],
+ )
+
+ const right = useCallback(() => (
+
+
+
+ ), [anchor, showMenu, edit, undo])
return (
onSelect(index)}
- left={() => (
-
-
- onSelect(index)}
- value={index.toString()}
- status={selected === index ? 'checked' : 'unchecked'}
- color={colors.primary}
- />
-
- )}
- right={() => (
-
-
-
- )}
+ left={left}
+ right={right}
/>
)
}
diff --git a/WorkoutItem.tsx b/WorkoutItem.tsx
index 3a1392c..30c6491 100644
--- a/WorkoutItem.tsx
+++ b/WorkoutItem.tsx
@@ -40,6 +40,41 @@ export default function WorkoutItem({
return `${item.sets} x ${item.minutes || 0}:${seconds}`
}, [item])
+ const left = useCallback(() => {
+ if (!images || !item.image) return null
+ return (
+
+ )
+ }, [item.image, images])
+
+ const right = useCallback(() => {
+ return (
+
+
+
+ )
+ }, [anchor, showMenu, item.name])
+
return (
<>
- images &&
- item.image && (
-
- )}
- right={() => (
-
-
-
- )}
+ left={left}
+ right={right}
/>