MOBILE-3947 dev: Remove non existing sites file storage
parent
258d12f4d0
commit
6569547cdd
|
@ -79,6 +79,16 @@
|
||||||
</ion-label>
|
</ion-label>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
<ion-item class="ion-text-wrap">
|
||||||
|
<ion-label>
|
||||||
|
<p class="item-heading">Clean file storage</p>
|
||||||
|
<p>Clear deleted sites from file storage and temp folder</p>
|
||||||
|
</ion-label>
|
||||||
|
<ion-button (click)="clearFileStorage()" aria-label="Clear File Storage" fill="clear" slot="end">
|
||||||
|
<ion-icon slot="icon-only" aria-hidden="true" name="fas-broom"></ion-icon>
|
||||||
|
</ion-button>
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
<ng-container *ngIf="siteId">
|
<ng-container *ngIf="siteId">
|
||||||
<ion-item-divider>
|
<ion-item-divider>
|
||||||
<ion-label>
|
<ion-label>
|
||||||
|
|
|
@ -20,6 +20,7 @@ import { CoreSitePlugins } from '@features/siteplugins/services/siteplugins';
|
||||||
import { CoreUserTours } from '@features/usertours/services/user-tours';
|
import { CoreUserTours } from '@features/usertours/services/user-tours';
|
||||||
import { CoreCacheManager } from '@services/cache-manager';
|
import { CoreCacheManager } from '@services/cache-manager';
|
||||||
import { CoreConfig } from '@services/config';
|
import { CoreConfig } from '@services/config';
|
||||||
|
import { CoreFile } from '@services/file';
|
||||||
import { CoreNavigator } from '@services/navigator';
|
import { CoreNavigator } from '@services/navigator';
|
||||||
import { CorePlatform } from '@services/platform';
|
import { CorePlatform } from '@services/platform';
|
||||||
import { CoreSites } from '@services/sites';
|
import { CoreSites } from '@services/sites';
|
||||||
|
@ -196,6 +197,17 @@ export class CoreSettingsDevPage implements OnInit {
|
||||||
await CoreDomUtils.showToast('Caches invalidated', true, ToastDuration.LONG);
|
await CoreDomUtils.showToast('Caches invalidated', true, ToastDuration.LONG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete all data from the app.
|
||||||
|
*/
|
||||||
|
async clearFileStorage(): Promise<void> {
|
||||||
|
const sites = await CoreSites.getSitesIds();
|
||||||
|
await CoreFile.clearDeletedSitesFolder(sites);
|
||||||
|
await CoreFile.clearTmpFolder();
|
||||||
|
|
||||||
|
CoreDomUtils.showToast('File storage cleared');
|
||||||
|
}
|
||||||
|
|
||||||
async setEnabledStagingSites(enabled: boolean): Promise<void> {
|
async setEnabledStagingSites(enabled: boolean): Promise<void> {
|
||||||
if (this.enableStagingSites === this.previousEnableStagingSites) {
|
if (this.enableStagingSites === this.previousEnableStagingSites) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1134,6 +1134,38 @@ export class CoreFileProvider {
|
||||||
await CoreUtils.ignoreErrors(this.removeDir(CoreFileProvider.TMPFOLDER));
|
await CoreUtils.ignoreErrors(this.removeDir(CoreFileProvider.TMPFOLDER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove deleted sites folders.
|
||||||
|
*
|
||||||
|
* @returns Promise resolved when done.
|
||||||
|
*/
|
||||||
|
async clearDeletedSitesFolder(existingSiteNames: string[]): Promise<void> {
|
||||||
|
// Ignore errors because the folder might not exist.
|
||||||
|
const dirPath = CoreFileProvider.SITESFOLDER;
|
||||||
|
|
||||||
|
// Get the directory contents.
|
||||||
|
try {
|
||||||
|
const contents = await this.getDirectoryContents(dirPath);
|
||||||
|
|
||||||
|
if (!contents.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const promises: Promise<void>[] = contents.map(async (file) => {
|
||||||
|
if (file.isDirectory) {
|
||||||
|
if (!existingSiteNames.includes(file.name)) {
|
||||||
|
// Site does not exist... delete it.
|
||||||
|
await CoreUtils.ignoreErrors(this.removeDir(this.getSiteFolder(file.name)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.all(promises);
|
||||||
|
} catch {
|
||||||
|
// Ignore errors, maybe it doesn't exist.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a folder path and a list of used files, remove all the files of the folder that aren't on the list of used files.
|
* Given a folder path and a list of used files, remove all the files of the folder that aren't on the list of used files.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue