Compare commits

...

4 Commits

Author SHA1 Message Date
a21131eaf6 2.0.6 2023-04-13 14:22:32 +02:00
c4b214a308 fix(core): update 2023-04-13 14:22:31 +02:00
6db03eee83 2.0.5 2023-04-12 20:34:34 +02:00
efc5b54d2e fix(core): update 2023-04-12 20:34:34 +02:00
3 changed files with 16 additions and 8 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartstate",
"version": "2.0.4",
"version": "2.0.6",
"private": false,
"description": "a package that handles state in a good way",
"main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@pushrocks/smartstate',
version: '2.0.4',
version: '2.0.6',
description: 'a package that handles state in a good way'
}

View File

@ -37,7 +37,7 @@ export class StatePart<TStatePartName, TStatePayload> {
if (
this.stateStore &&
this.lastStateNotificationPayloadHash &&
createStateHash(this.stateStore) === createStateHash(this.lastStateNotificationPayloadHash)
createStateHash(this.stateStore) === this.lastStateNotificationPayloadHash
) {
return;
} else {
@ -47,6 +47,14 @@ export class StatePart<TStatePartName, TStatePayload> {
}
private lastStateNotificationPayloadHash: any;
/**
* creates a cumulative notification by adding a change notification at the end of the call stack;
*/
public notifyChangeCumulative() {
// TODO: check viability
setTimeout(() => this.state.next(this.stateStore), 0);
}
/**
* selects a state or a substate
*/
@ -56,7 +64,6 @@ export class StatePart<TStatePartName, TStatePayload> {
if (!selectorFn) {
selectorFn = (state: TStatePayload) => <T>(<any>state);
}
const mapped = this.state.pipe(
plugins.smartrx.rxjs.ops.startWith(this.getState()),
plugins.smartrx.rxjs.ops.map((stateArg) => {
@ -67,7 +74,6 @@ export class StatePart<TStatePartName, TStatePayload> {
}
})
);
return mapped;
}
@ -111,9 +117,11 @@ export class StatePart<TStatePartName, TStatePayload> {
/**
* is executed
*/
public stateSetup(
funcArg: (statePartArg?: StatePart<any, TStatePayload>) => Promise<TStatePayload | void>
public async stateSetup(
funcArg: (statePartArg?: StatePart<any, TStatePayload>) => Promise<TStatePayload>
) {
this.cumulativeDeferred.addPromise(funcArg(this));
const resultPromise = funcArg(this);
this.cumulativeDeferred.addPromise(resultPromise);
this.setState(await resultPromise);
}
}