mirror of
https://github.com/bitwarden/browser
synced 2025-12-14 23:33:31 +00:00
Ps/run-foreground-derived-state-in-zone (#7861)
* Sync derived state through memory storage * Run foreground derived state in NgZone * fix tests
This commit is contained in:
@@ -73,12 +73,12 @@ describe("DefaultDerivedState", () => {
|
||||
await awaitAsync();
|
||||
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
new Date(dateString),
|
||||
derivedValue(new Date(dateString)),
|
||||
);
|
||||
const calls = memoryStorage.mock.save.mock.calls;
|
||||
expect(calls.length).toBe(1);
|
||||
expect(calls[0][0]).toBe(deriveDefinition.buildCacheKey());
|
||||
expect(calls[0][1]).toEqual(new Date(dateString));
|
||||
expect(calls[0][1]).toEqual(derivedValue(new Date(dateString)));
|
||||
});
|
||||
|
||||
describe("forceValue", () => {
|
||||
@@ -94,7 +94,9 @@ describe("DefaultDerivedState", () => {
|
||||
|
||||
it("should store the forced value", async () => {
|
||||
await sut.forceValue(forced);
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(forced);
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
derivedValue(forced),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -107,7 +109,9 @@ describe("DefaultDerivedState", () => {
|
||||
|
||||
it("should store the forced value", async () => {
|
||||
await sut.forceValue(forced);
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(forced);
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
derivedValue(forced),
|
||||
);
|
||||
});
|
||||
|
||||
it("should force the value", async () => {
|
||||
@@ -150,7 +154,7 @@ describe("DefaultDerivedState", () => {
|
||||
await awaitAsync();
|
||||
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
new Date(newDate),
|
||||
derivedValue(new Date(newDate)),
|
||||
);
|
||||
|
||||
subscription.unsubscribe();
|
||||
@@ -168,7 +172,7 @@ describe("DefaultDerivedState", () => {
|
||||
await awaitAsync();
|
||||
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
new Date(newDate),
|
||||
derivedValue(new Date(newDate)),
|
||||
);
|
||||
|
||||
subscription.unsubscribe();
|
||||
@@ -176,7 +180,7 @@ describe("DefaultDerivedState", () => {
|
||||
await awaitAsync(cleanupDelayMs * 2);
|
||||
|
||||
expect(memoryStorage.internalStore[deriveDefinition.buildCacheKey()]).toEqual(
|
||||
new Date(newDate),
|
||||
derivedValue(new Date(newDate)),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -256,3 +260,7 @@ describe("DefaultDerivedState", () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function derivedValue<T>(value: T) {
|
||||
return { derived: true, value };
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ export class DefaultDerivedState<TFrom, TTo, TDeps extends DerivedStateDependenc
|
||||
derivedStateOrPromise = await derivedStateOrPromise;
|
||||
}
|
||||
const derivedState = derivedStateOrPromise;
|
||||
await this.memoryStorage.save(this.storageKey, derivedState);
|
||||
await this.storeValue(derivedState);
|
||||
return derivedState;
|
||||
}),
|
||||
);
|
||||
@@ -58,8 +58,12 @@ export class DefaultDerivedState<TFrom, TTo, TDeps extends DerivedStateDependenc
|
||||
}
|
||||
|
||||
async forceValue(value: TTo) {
|
||||
await this.memoryStorage.save(this.storageKey, value);
|
||||
await this.storeValue(value);
|
||||
this.forcedValueSubject.next(value);
|
||||
return value;
|
||||
}
|
||||
|
||||
private storeValue(value: TTo) {
|
||||
return this.memoryStorage.save(this.storageKey, { derived: true, value });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user