From be801ff55d765e519f58a34d9854fb464a1ff77e Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 3 Jan 2018 23:46:54 +0100 Subject: feat(App): Add option to clear app cache (@dannyqiu) --- src/api/LocalApi.js | 4 ++ src/api/server/LocalApi.js | 24 ++++++++-- src/api/server/ServerApi.js | 4 +- .../settings/services/EditServiceForm.js | 30 ------------- .../settings/settings/EditSettingsForm.js | 51 ++++++++++++---------- src/containers/settings/EditServiceScreen.js | 11 ----- src/containers/settings/EditSettingsScreen.js | 14 +++++- src/helpers/service-helpers.js | 9 ++-- src/i18n/locales/en-US.json | 6 +-- src/stores/AppStore.js | 22 ++++++++-- 10 files changed, 93 insertions(+), 82 deletions(-) (limited to 'src') diff --git a/src/api/LocalApi.js b/src/api/LocalApi.js index d52e9cd10..3f84f8a0b 100644 --- a/src/api/LocalApi.js +++ b/src/api/LocalApi.js @@ -16,6 +16,10 @@ export default class LocalApi { return this.local.removeKey(key); } + getAppCacheSize() { + return this.local.getAppCacheSize(); + } + clearAppCache() { return this.local.clearAppCache(); } diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js index d2ce0c9de..e95d750ac 100644 --- a/src/api/server/LocalApi.js +++ b/src/api/server/LocalApi.js @@ -1,4 +1,7 @@ import { remote } from 'electron'; +import du from 'du'; + +import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js'; const { session } = remote; @@ -36,14 +39,29 @@ export default class LocalApi { } // Services + async getAppCacheSize() { + const partitionsDir = getServicePartitionsDirectory(); + return new Promise((resolve, reject) => { + du(partitionsDir, (err, size) => { + if (err) reject(err); + + console.debug('LocalApi::getAppCacheSize resolves', size); + resolve(size); + }); + }); + } + async clearCache(serviceId) { - console.debug(`Clearing cache for persist:service-${serviceId}`); const s = session.fromPartition(`persist:service-${serviceId}`); - await new Promise(resolve => s.clearCache(resolve)); + + console.debug('LocalApi::clearCache resolves', serviceId); + return new Promise(resolve => s.clearCache(resolve)); } async clearAppCache() { const s = session.defaultSession; - await new Promise(resolve => s.clearCache(resolve)); + + console.debug('LocalApi::clearCache clearAppCache'); + return new Promise(resolve => s.clearCache(resolve)); } } diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index 3daa2d8b6..d75d2e559 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js @@ -213,7 +213,9 @@ export default class ServerApi { throw request; } const data = await request.json(); - await removeServicePartitionDirectory(id); + + removeServicePartitionDirectory(id, true); + console.debug('ServerApi::deleteService resolves', data); return data; } diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index b5300f605..4458c4c5a 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js @@ -71,14 +71,6 @@ const messages = defineMessages({ id: 'settings.service.form.isMutedInfo', defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', }, - buttonClearCache: { - id: 'settings.service.form.buttonClearCache', - defaultMessage: '!!!Clear cache', - }, - buttonClearingCache: { - id: 'settings.service.form.buttonClearingCache', - defaultMessage: '!!!Clearing cache', - }, headlineNotifications: { id: 'settings.service.form.headlineNotifications', defaultMessage: '!!!Notifications', @@ -110,10 +102,8 @@ export default class EditServiceForm extends Component { form: PropTypes.instanceOf(Form).isRequired, onSubmit: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, - onClearCache: PropTypes.func.isRequired, isSaving: PropTypes.bool.isRequired, isDeleting: PropTypes.bool.isRequired, - isClearingCache: PropTypes.bool.isRequired, }; static defaultProps = { @@ -168,9 +158,7 @@ export default class EditServiceForm extends Component { form, isSaving, isDeleting, - isClearingCache, onDelete, - onClearCache, } = this.props; const { intl } = this.context; @@ -193,23 +181,6 @@ export default class EditServiceForm extends Component { /> ); - const clearCacheButton = isClearingCache ? ( -