diff --git a/mobile/src/i18n/index.ts b/mobile/src/i18n/index.ts index 36aedfe3..6260ebb5 100644 --- a/mobile/src/i18n/index.ts +++ b/mobile/src/i18n/index.ts @@ -70,7 +70,7 @@ export function t(key: string, params?: Record): string { if (params) { for (const [k, v] of Object.entries(params)) { - value = value.replace(new RegExp(`\\{${k}\\}`, "g"), v); + value = value.replaceAll(`{${k}}`, v); } } diff --git a/mobile/src/screens/FileDetailScreen.tsx b/mobile/src/screens/FileDetailScreen.tsx index 408f3687..d0afce5b 100644 --- a/mobile/src/screens/FileDetailScreen.tsx +++ b/mobile/src/screens/FileDetailScreen.tsx @@ -181,7 +181,7 @@ export default function FileDetailScreen() { - + diff --git a/mobile/src/screens/FilesScreen.tsx b/mobile/src/screens/FilesScreen.tsx index 78f727dc..dc0602d3 100644 --- a/mobile/src/screens/FilesScreen.tsx +++ b/mobile/src/screens/FilesScreen.tsx @@ -109,18 +109,25 @@ export default function FilesScreen() { searchTimeoutRef.current = setTimeout(async () => { setPage(1); setLoading(true); - await fetchFiles(1, true, text); - setLoading(false); + try { + await fetchFiles(1, true, text); + } finally { + setLoading(false); + } }, 400); }, [fetchFiles] ); - const handleClearSearch = useCallback(() => { + const handleClearSearch = useCallback(async () => { setSearchQuery(""); setPage(1); setLoading(true); - fetchFiles(1, true).then(() => setLoading(false)); + try { + await fetchFiles(1, true); + } finally { + setLoading(false); + } }, [fetchFiles]); const handleFilePress = useCallback( diff --git a/mobile/src/screens/UploadScreen.tsx b/mobile/src/screens/UploadScreen.tsx index eeb40939..4a99023f 100644 --- a/mobile/src/screens/UploadScreen.tsx +++ b/mobile/src/screens/UploadScreen.tsx @@ -305,10 +305,11 @@ export default function UploadScreen() { }); if (!result.canceled && result.assets.length > 0) { - for (const asset of result.assets) { + for (let i = 0; i < result.assets.length; i++) { + const asset = result.assets[i]; // Derive extension from MIME type so the filename matches the actual format const ext = asset.mimeType?.split("/")[1]?.replace("jpeg", "jpg") ?? "jpg"; - const filename = asset.fileName ?? `photo_${Date.now()}_${Math.random().toString(36).slice(2, 6)}.${ext}`; + const filename = asset.fileName ?? `photo_${Date.now()}_${i}.${ext}`; await uploadFile(asset.uri, filename, asset.mimeType ?? "image/jpeg"); } }