Skip to content

Commit 43a4efc

Browse files
committed
Refactor & tidy
1 parent 2a6fb89 commit 43a4efc

1 file changed

Lines changed: 15 additions & 42 deletions

File tree

PocketDDD.BlazorClient/PocketDDD.BlazorClient.LocalStorage/LocalStorageContext.cs

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ private void InitialiseKeys(Type keyType)
3939

4040
public class KeyItem<T>
4141
{
42-
private readonly ILocalStorageService _localStorage;
43-
private readonly string _key;
42+
protected readonly ILocalStorageService _localStorage;
43+
protected readonly string _key;
4444

4545
public KeyItem(ILocalStorageService localStorage, string key)
4646
{
@@ -67,72 +67,45 @@ public void SubscribeToChanges(Action<T> callback)
6767
}
6868
}
6969

70-
public class KeyListItem<T>
70+
public class KeyListItem<T> : KeyItem<List<T>>
7171
{
72-
private readonly ILocalStorageService _localStorage;
73-
private readonly string _key;
74-
75-
public KeyListItem(ILocalStorageService localStorage, string key)
76-
{
77-
_localStorage = localStorage;
78-
_key = key;
79-
}
80-
81-
public async ValueTask<List<T>> GetOrDefaultAsync() =>
82-
await _localStorage.GetItemAsync<List<T>>(_key) ?? new List<T>();
83-
84-
public ValueTask SetAsync(List<T> list) => _localStorage.SetItemAsync(_key, list);
85-
86-
public void SubscribeToChanges(Action<List<T>> callback)
87-
{
88-
_localStorage.Changed += (_, args) =>
89-
{
90-
if (args.Key == _key)
91-
callback((List<T>)args.NewValue);
92-
};
93-
}
72+
public KeyListItem(ILocalStorageService localStorage, string key) : base(localStorage, key) { }
73+
74+
public async ValueTask<List<T>> GetOrDefaultAsync() => await GetAsync() ?? new List<T>();
9475
}
9576

96-
public class KeySyncItem<T>
77+
public class KeySyncItem<T> : KeyItem<T>
9778
{
98-
private readonly ILocalStorageService _localStorage;
99-
private readonly string _keyPrefix;
100-
101-
public KeySyncItem(ILocalStorageService localStorage, string key)
102-
{
103-
_localStorage = localStorage;
104-
_keyPrefix = $"{key}_sync_";
105-
}
106-
private ValueTask<T> GetItemAsync(string key) => _localStorage.GetItemAsync<T>(key);
107-
public ValueTask<T?> GetSyncItemAsync(string clientId) => _localStorage.GetItemAsync<T?>(_keyPrefix + clientId);
79+
public KeySyncItem(ILocalStorageService localStorage, string key) : base(localStorage, $"{key}_sync_") { }
80+
public ValueTask<T?> GetSyncItemAsync(string clientId) => _localStorage.GetItemAsync<T?>(_key + clientId);
10881
public async ValueTask<IList<T>> GetAllSyncItemsAsync()
10982
{
11083
var items = new List<T>();
11184
var keys = await _localStorage.KeysAsync();
11285
foreach (var key in keys)
11386
{
114-
if (key.StartsWith(_keyPrefix))
115-
items.Add((await GetItemAsync(key)));
87+
if (key.StartsWith(_key))
88+
items.Add((await _localStorage.GetItemAsync<T>(key)));
11689
}
11790
return items;
11891
}
11992
public async ValueTask<int> GetItemCountAsync()
12093
{
12194
var keys = await _localStorage.KeysAsync();
122-
return keys.Count(x => x.StartsWith(_keyPrefix));
95+
return keys.Count(x => x.StartsWith(_key));
12396
}
12497

12598
public ValueTask AddSyncItemAsync(T item, string clientId) =>
126-
_localStorage.SetItemAsync(_keyPrefix + clientId, item);
99+
_localStorage.SetItemAsync(_key + clientId, item);
127100

128101
public ValueTask RemoveSyncItemAsync(string clientId) =>
129-
_localStorage.RemoveItemAsync(_keyPrefix + clientId);
102+
_localStorage.RemoveItemAsync(_key + clientId);
130103

131104
public void SubscribeToChanges(Action<IList<T>> callback)
132105
{
133106
_localStorage.Changed += async (_, args) =>
134107
{
135-
if (args.Key.StartsWith(_keyPrefix))
108+
if (args.Key.StartsWith(_key))
136109
callback((await GetAllSyncItemsAsync()));
137110
};
138111
}

0 commit comments

Comments
 (0)