Skip to content

Commit a687ceb

Browse files
committed
Remove archivement function (sheepzh#141)
1 parent caff5ca commit a687ceb

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Copyright (c) 2022-present Hengyang Zhang
3+
*
4+
* This software is released under the MIT License.
5+
* https://opensource.org/licenses/MIT
6+
*/
7+
8+
import ArchivedDatabase from "@db/archived-database"
9+
import { log } from "@src/common/logger"
10+
import IVersionProcessor from "../i-version-processor"
11+
12+
/**
13+
* All code will be removed at v1.4.0
14+
*/
15+
export default class ArchivedDataCleaner implements IVersionProcessor {
16+
since(): string {
17+
return '1.3.0'
18+
}
19+
20+
async process(reason: chrome.runtime.OnInstalledReason): Promise<void> {
21+
const db = new ArchivedDatabase(chrome.storage.local)
22+
if (reason !== 'update') {
23+
return
24+
}
25+
const count = await db.removeAll()
26+
log(`Removed ${count} archived items`)
27+
}
28+
}

src/background/version-manager/i-version-processor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ export default interface IVersionProcessor {
2121
*
2222
* @param reason reason of chrome OnInstalled event
2323
*/
24-
process(reason: string): void
24+
process(reason: chrome.runtime.OnInstalledReason): void
2525
}

src/background/version-manager/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import IVersionProcessor from "./i-version-processor"
99
import HostMergeInitializer from "./0-1-2/host-merge-initializer"
1010
import LocalFileInitializer from "./0-7-0/local-file-initializer"
11+
import ArchivedDataCleaner from "./1-3-0/archived-data-cleaner"
1112

1213
/**
1314
* Version manager
@@ -18,7 +19,11 @@ class VersionManager {
1819
processorChain: IVersionProcessor[] = []
1920

2021
constructor() {
21-
this.processorChain.push(new HostMergeInitializer(), new LocalFileInitializer())
22+
this.processorChain.push(
23+
new HostMergeInitializer(),
24+
new LocalFileInitializer(),
25+
new ArchivedDataCleaner(),
26+
)
2227
this.processorChain = this.processorChain.sort((a, b) => a.since() >= b.since() ? 1 : 0)
2328
}
2429

src/database/archived-database.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ class ArchivedDatabase extends BaseDatabase {
2828
return Promise.resolve(result)
2929
}
3030

31+
async removeAll(): Promise<number> {
32+
const items = await this.storage.get()
33+
const keys = Object.keys(items)
34+
.filter(key => key.startsWith(ARCHIVED_PREFIX))
35+
await this.storage.remove(keys)
36+
return keys?.length || 0
37+
}
38+
3139
private generateKey(row: timer.stat.Row): string {
3240
return ARCHIVED_PREFIX + row.host
3341
}

0 commit comments

Comments
 (0)