Skip to content

Commit a26579c

Browse files
feat(dataSource): Create SessionStorageDataSource
1 parent 1a934b4 commit a26579c

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/DSRDataStore.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,21 @@ export class StateObjectDataStore implements DSRDataStore {
3838
export class LocalStorageDataStore implements DSRDataStore {
3939
private router: UIRouter;
4040
private key = 'uiRouterDeepStateRedirect';
41+
private _storage: Storage = localStorage;
42+
43+
constructor(storage?: Storage) {
44+
this._storage = storage || localStorage;
45+
}
4146

4247
private getStore() {
43-
const item = localStorage.getItem(this.key);
48+
const item = this._storage.getItem(this.key);
4449
return JSON.parse(item || '{}');
4550
}
4651

4752
private setStore(contents: any) {
4853
if (contents) {
4954
try {
50-
localStorage.setItem(this.key, JSON.stringify(contents));
55+
this._storage.setItem(this.key, JSON.stringify(contents));
5156
} catch (err) {
5257
console.error(
5358
'UI-Router Deep State Redirect: cannot store object in LocalStorage. Is there a circular reference?',
@@ -56,7 +61,7 @@ export class LocalStorageDataStore implements DSRDataStore {
5661
console.error(err);
5762
}
5863
} else {
59-
localStorage.removeItem(this.key);
64+
this._storage.removeItem(this.key);
6065
}
6166
}
6267

@@ -82,3 +87,9 @@ export class LocalStorageDataStore implements DSRDataStore {
8287
this.setStore(store);
8388
}
8489
}
90+
91+
export class SessionStorageDataStore extends LocalStorageDataStore {
92+
constructor() {
93+
super(sessionStorage);
94+
}
95+
}

0 commit comments

Comments
 (0)