Skip to content

Commit a6a67e2

Browse files
committed
feat: improve camera upload settings ux
1 parent 8be6215 commit a6a67e2

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

app/photosSettings/index.tsx

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,35 @@ export const Settings = memo(() => {
3535
return cameraUploadParentQuery.data !== null
3636
}, [cameraUploadParentQuery.data, cameraUploadParentQuery.status, cameraUpload.enabled])
3737

38-
const toggleEnabled = useCallback(async (enable: boolean) => {
39-
setCameraUploadState(prev => ({
40-
...prev,
41-
enabled: enable,
42-
version: (prev.version ?? 0) + 1,
43-
enabledTimestamp: Date.now()
44-
}))
38+
const toggleEnabled = useCallback(
39+
async (enable: boolean) => {
40+
if (!permissions?.granted || !cameraUploadParentExists || cameraUpload.albums.length === 0) {
41+
enable = false
4542

46-
if (enable) {
47-
setTimeout(() => {
48-
foregroundCameraUpload.run().catch(console.error)
49-
}, 1000)
50-
}
51-
}, [])
43+
if (!permissions?.granted) {
44+
alerts.error(translateMemoized("photos.settings.index.errors.noPermissions"))
45+
} else if (cameraUpload.albums.length === 0) {
46+
alerts.error(translateMemoized("photos.settings.index.errors.noAlbumsSelected"))
47+
} else {
48+
alerts.error(translateMemoized("photos.settings.index.errors.invalidCloudDirectory"))
49+
}
50+
}
51+
52+
setCameraUploadState(prev => ({
53+
...prev,
54+
enabled: enable,
55+
version: (prev.version ?? 0) + 1,
56+
enabledTimestamp: Date.now()
57+
}))
58+
59+
if (enable) {
60+
setTimeout(() => {
61+
foregroundCameraUpload.run().catch(console.error)
62+
}, 1000)
63+
}
64+
},
65+
[permissions?.granted, cameraUploadParentExists, cameraUpload.albums.length]
66+
)
5267

5368
const toggleCellular = useCallback(() => {
5469
setCameraUploadState(prev => ({
@@ -182,7 +197,9 @@ export const Settings = memo(() => {
182197
rightView: (
183198
<View testID="photos.settings.enabled">
184199
<Toggle
185-
value={cameraUpload.enabled && permissions?.granted && cameraUploadParentExists}
200+
value={
201+
cameraUpload.enabled && permissions?.granted && cameraUploadParentExists && cameraUpload.albums.length > 0
202+
}
186203
onValueChange={toggleEnabled}
187204
/>
188205
</View>

locales/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1071,7 +1071,9 @@
10711071
"onlyDeltasAfterActivationInfo": "When enabled, only photos and videos taken after enabling camera upload will be uploaded."
10721072
},
10731073
"errors": {
1074-
"noPermissions": "You need to grant media permissions to access your photos."
1074+
"noPermissions": "You need to grant media permissions to access your photos.",
1075+
"noAlbumsSelected": "Please select at least one album to upload photos from.",
1076+
"invalidCloudDirectory": "The selected cloud directory is invalid. Please select a valid directory."
10751077
}
10761078
}
10771079
}

0 commit comments

Comments
 (0)