Skip to content

Commit df5bc3f

Browse files
committed
Change getting deserialisable objects
1 parent 9d45c6e commit df5bc3f

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

src/storage/local-storage.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import { IStorage } from "./storage-interface";
2-
import { StorageParams } from "./storage-params";
2+
import { StorageDeserializeParam, StorageDeserializeType, StorageParams, createDeserializeParambject } from "./storage-params";
33
import { Tab } from "../entity/tab";
44
import Browser from 'webextension-polyfill';
55
import { isEmpty } from "../common/utility";
66

77
export class LocalStorage implements IStorage {
8-
async getTabs(): Promise<Tab[]> {
8+
async getDeserializeList(param: StorageDeserializeParam): Promise<StorageDeserializeType[]> {
99
return new Promise(async resolve => {
10-
const { tabs } = await Browser.storage.local.get(StorageParams.TABS);
11-
if (tabs != undefined){
12-
let tempTabs: Tab[] = [];
13-
for (let i = 0; i < tabs.length; i++) {
14-
tempTabs.push(new Tab().deserialize(tabs[i]));
10+
const obj = await Browser.storage.local.get(param);
11+
const list = obj[param];
12+
if (list != undefined){
13+
let tempList:StorageDeserializeType[] = [];
14+
for (let i = 0; i < list.length; i++) {
15+
const obj = createDeserializeParambject(param);
16+
tempList.push(obj.deserialize(list[i]));
1517
}
16-
return resolve(tempTabs);
18+
return resolve(tempList);
1719
}
1820
else resolve([]);
1921
});

src/storage/storage-interface.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { StorageParams } from "./storage-params";
1+
import { StorageDeserializeParam, StorageDeserializeType, StorageParams } from "./storage-params";
22
import { Tab } from "../entity/tab";
33

44
export interface IStorage {
5-
getTabs(): Promise<Tab[]>;
5+
getDeserializeList(param: StorageDeserializeParam): Promise<StorageDeserializeType[]>;
66
saveTabs(value:Tab[]): Promise<void>;
77
saveValue(name:StorageParams, value: any): Promise<void>;
88
getValue(name:StorageParams, defaultValue?: any): Promise<any>;

src/storage/storage-params.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { Tab } from "../entity/tab";
2+
import { TimeInterval } from "../entity/time-interval";
3+
14
export enum StorageParams {
25
TABS = 'tabs',
36
BLACK_LIST = 'black_list',
@@ -14,6 +17,20 @@ export enum StorageParams {
1417
SHOW_HINT = 'show_hint',
1518
}
1619

20+
export enum StorageDeserializeParam{
21+
TABS = 'tabs',
22+
TIMEINTERVAL_LIST = 'time_interval',
23+
}
24+
25+
export function createDeserializeParambject(param:StorageDeserializeParam): StorageDeserializeType{
26+
switch (param){
27+
case StorageDeserializeParam.TABS: return new Tab();
28+
case StorageDeserializeParam.TIMEINTERVAL_LIST: return new TimeInterval();
29+
}
30+
}
31+
32+
export type StorageDeserializeType = Tab | TimeInterval;
33+
1734
export enum InactivityInterval {
1835
Seconds_30 = 30,
1936
Seconds_45 = 45,

0 commit comments

Comments
 (0)