Skip to content

Commit 5d0da4f

Browse files
feat: add update method to SharedValuesManager for modifying shared data
1 parent bb4e5a0 commit 5d0da4f

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/SharedValuesManager.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,33 @@ export class SharedValuesApi<T extends SharedValue, V, R = T> {
180180
this.sharedData.callListeners(keyStr, prefix);
181181
}
182182

183+
/**
184+
* update a value in the shared data
185+
* @param key
186+
* @param updater
187+
* @param scopeName
188+
*/
189+
update<S extends string = string>(key: S, updater: (prev: R) => V, scopeName: Prefix): void;
190+
update<S extends string = string>(sharedCreated: SharedCreated, updater: (prev: R) => V): void;
191+
update<S extends string = string>(key: S | SharedCreated, updater: (prev: R) => V, scopeName?: Prefix) {
192+
193+
let prevData;
194+
if (typeof key === "string") {
195+
prevData = this.get<S>(key, scopeName as Prefix);
196+
}
197+
else{
198+
prevData = this.get(key);
199+
}
200+
const newValue = updater(prevData);
201+
202+
if (typeof key === "string") {
203+
this.set(key, newValue, scopeName as Prefix);
204+
}
205+
else{
206+
this.set(key, newValue);
207+
}
208+
}
209+
183210
/**
184211
* clear all values from the shared data
185212
*/

0 commit comments

Comments
 (0)