Skip to content

Commit b0fa84a

Browse files
authored
make storage tracked
1 parent 6494cd4 commit b0fa84a

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

app/services/storage.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ import Service, { inject as service } from '@ember/service';
22
import { LOCAL_STORAGE_SUPPORTED } from './storage/local';
33
import type LocalStorageService from './storage/local';
44
import type MemoryStorageService from './storage/memory';
5+
import { tracked } from '@glimmer/tracking';
6+
7+
function consumeTracked(value: never): never {
8+
return value;
9+
}
510

611
/**
712
* Service that wraps either the LocalStorageService or
@@ -12,13 +17,15 @@ import type MemoryStorageService from './storage/memory';
1217
export default class StorageService extends Service {
1318
@service(LOCAL_STORAGE_SUPPORTED ? 'storage/local' : 'storage/memory')
1419
declare backend: LocalStorageService | MemoryStorageService;
20+
@tracked changed = 1;
1521

1622
/**
1723
* Reads a stored object for a give key, if any.
1824
*
1925
* @return {Option<String>} The value, if found
2026
*/
2127
getItem(key: keyof object) {
28+
consumeTracked(this.changed);
2229
const serialized = this.backend.getItem(key);
2330

2431
if (serialized === null) {
@@ -33,6 +40,7 @@ export default class StorageService extends Service {
3340
* Store a string for a given key.
3441
*/
3542
setItem(key: keyof object, value: string) {
43+
this.changed += 1;
3644
if (value === undefined) {
3745
this.removeItem(key);
3846
} else {
@@ -45,6 +53,7 @@ export default class StorageService extends Service {
4553
* Deletes the stored string for a given key.
4654
*/
4755
removeItem(key: keyof object) {
56+
this.changed += 1;
4857
this.backend.removeItem(key);
4958
}
5059

@@ -54,6 +63,7 @@ export default class StorageService extends Service {
5463
* @return {Array<String>} The array of keys
5564
*/
5665
keys() {
66+
consumeTracked(this.changed);
5767
return this.backend.keys();
5868
}
5969
}

0 commit comments

Comments
 (0)