@@ -39,8 +39,8 @@ private void InitialiseKeys(Type keyType)
3939
4040public 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