From 5004baf9c6d08aed07e958a054a3b6f55919aa14 Mon Sep 17 00:00:00 2001 From: Avinash Lingaloo Date: Thu, 11 Aug 2022 11:02:24 +0400 Subject: [PATCH] MM-46252 : Gekidou - Settings - Fixes Advanced Settings (#6561) * properly deletes data * ts fix --- app/screens/settings/advanced/index.tsx | 23 +++++++++-------------- app/utils/file/index.ts | 21 +++------------------ 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/app/screens/settings/advanced/index.tsx b/app/screens/settings/advanced/index.tsx index 094b3ffcb..7026da424 100644 --- a/app/screens/settings/advanced/index.tsx +++ b/app/screens/settings/advanced/index.tsx @@ -5,6 +5,7 @@ import React, {useEffect, useState} from 'react'; import {useIntl} from 'react-intl'; import {TouchableOpacity} from 'react-native'; +import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; import {popTopScreen} from '@screens/navigation'; @@ -28,7 +29,6 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => { }); const EMPTY_FILES: ReadDirItem[] = []; -const EMPTY_SERVERS: string[] = []; type AdvancedSettingsProps = { componentId: string; @@ -36,30 +36,25 @@ type AdvancedSettingsProps = { const AdvancedSettings = ({componentId}: AdvancedSettingsProps) => { const theme = useTheme(); const intl = useIntl(); + const serverUrl = useServerUrl(); const [dataSize, setDataSize] = useState(0); const [files, setFiles] = useState(EMPTY_FILES); - const [serverUrls, setServerUrls] = useState(EMPTY_SERVERS); const styles = getStyleSheet(theme); const getAllCachedFiles = async () => { - const {totalSize, files: cachedFiles, serverUrls: allServerUrls} = await getAllFilesInCachesDirectory(); + const {totalSize, files: cachedFiles} = await getAllFilesInCachesDirectory(serverUrl); setDataSize(totalSize); setFiles(cachedFiles || EMPTY_FILES); - setServerUrls(allServerUrls || EMPTY_SERVERS); }; const onPressDeleteData = preventDoubleTap(async () => { try { if (files.length > 0) { - const deletePromises = []; - for (const server of serverUrls) { - deletePromises.push(deleteFileCache(server)); - } - await Promise.all(deletePromises); + await deleteFileCache(serverUrl); + await getAllCachedFiles(); } - await getAllCachedFiles(); } catch (e) { - //todo: show toast if error https://mattermost.atlassian.net/browse/MM-44926 + //do nothing } }); @@ -70,14 +65,14 @@ const AdvancedSettings = ({componentId}: AdvancedSettingsProps) => { const close = () => popTopScreen(componentId); useAndroidHardwareBackHandler(componentId, close); - const disabled = Boolean(dataSize && (dataSize > 0)); + const hasData = Boolean(dataSize && (dataSize > 0)); return ( { } }; -export const getAllFilesInCachesDirectory = async () => { +export const getAllFilesInCachesDirectory = async (serverUrl: string) => { try { - const appDatabase = DatabaseManager.appDatabase; - const servers = await queryAllServers(appDatabase!.database); - if (!servers.length) { - return {error: 'No servers'}; - } - - const serverUrls = []; const files: FileSystem.ReadDirItem[][] = []; - for await (const server of servers) { - const directoryFiles = await FileSystem.readDir(`${FileSystem.CachesDirectoryPath}/${hashCode(server.url)}`); - files.push(directoryFiles); - serverUrls.push(server.url); - } - + const directoryFiles = await FileSystem.readDir(`${FileSystem.CachesDirectoryPath}/${hashCode(serverUrl)}`); + files.push(directoryFiles); const flattenedFiles = files.flat(); const totalSize = flattenedFiles.reduce((acc, file) => acc + file.size, 0); - return { files: flattenedFiles, totalSize, - serverUrls, }; } catch (error) { logError('Failed getAllFilesInCachesDirectory', error);