Skip to content

Commit 8b66f29

Browse files
authored
Delete files from storage as blockaid preference is disabled (#145)
1 parent f8b3318 commit 8b66f29

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

src/ppom-controller.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ export class PPOMController extends BaseControllerV2<
475475
console.error(`Error in resetting ppom: ${error.message}`);
476476
});
477477
this.#clearDataFetchIntervals();
478+
const storageMetadata = { ...this.state.storageMetadata };
478479
this.update((draftState) => {
479480
draftState.versionInfo = [];
480481
const newChainStatus = { ...this.state.chainStatus };
@@ -491,6 +492,9 @@ export class PPOMController extends BaseControllerV2<
491492
draftState.storageMetadata = [];
492493
draftState.versionFileETag = '';
493494
});
495+
this.#storage.deleteAllFiles(storageMetadata).catch((error: Error) => {
496+
console.error(`Error in deleting files: ${error.message}`);
497+
});
494498
}
495499

496500
/*

src/ppom-storage.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,36 @@ describe('PPOMStorage', () => {
206206
});
207207
});
208208
});
209+
210+
describe('deleteAllFiles', () => {
211+
it('should delete all files passed to it', async () => {
212+
const mockDeleteFile = jest
213+
.fn()
214+
.mockImplementation(async () => Promise.resolve());
215+
const storageBackend = buildStorageBackend({ delete: mockDeleteFile });
216+
const ppomStorage = new PPOMStorage({
217+
storageBackend,
218+
readMetadata: () => [simpleFileData],
219+
writeMetadata: () => undefined,
220+
});
221+
await ppomStorage.deleteAllFiles([simpleFileData]);
222+
expect(mockDeleteFile).toHaveBeenCalledTimes(1);
223+
});
224+
225+
it('should not throw error if delete fails', async () => {
226+
const mockDeleteFile = jest
227+
.fn()
228+
.mockImplementation(async () =>
229+
Promise.reject(new Error('some error')),
230+
);
231+
const storageBackend = buildStorageBackend({ delete: mockDeleteFile });
232+
const ppomStorage = new PPOMStorage({
233+
storageBackend,
234+
readMetadata: () => [simpleFileData],
235+
writeMetadata: () => undefined,
236+
});
237+
await ppomStorage.deleteAllFiles([simpleFileData]);
238+
expect(mockDeleteFile).toHaveBeenCalledTimes(1);
239+
});
240+
});
209241
});

src/ppom-storage.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,22 @@ export class PPOMStorage {
143143
return syncedMetadata;
144144
}
145145

146+
/**
147+
* Delete all files in storage.
148+
*
149+
* @param metadata - List of all files in storage.
150+
*/
151+
async deleteAllFiles(metadata: FileMetadataList): Promise<void> {
152+
for (const fileMetadata of metadata) {
153+
const { name, chainId } = fileMetadata;
154+
try {
155+
await this.#storageBackend.delete({ name, chainId });
156+
} catch (exp: any) {
157+
console.error(`Error in deleting file: ${name}, ${chainId}`, exp);
158+
}
159+
}
160+
}
161+
146162
/**
147163
* Read the file from the local storage.
148164
* 1. Check if the file exists in the local storage.

0 commit comments

Comments
 (0)