Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
a21131eaf6 | |||
c4b214a308 | |||
6db03eee83 | |||
efc5b54d2e | |||
9860e43398 | |||
234117c8dd |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartstate",
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.6",
|
||||
"private": false,
|
||||
"description": "a package that handles state in a good way",
|
||||
"main": "dist_ts/index.js",
|
||||
@ -14,11 +14,11 @@
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gitzone/tsbuild": "^2.1.61",
|
||||
"@gitzone/tsbuild": "^2.1.65",
|
||||
"@gitzone/tsbundle": "^2.0.7",
|
||||
"@gitzone/tsrun": "^1.2.39",
|
||||
"@gitzone/tstest": "^1.0.70",
|
||||
"@pushrocks/tapbundle": "^5.0.3",
|
||||
"@gitzone/tstest": "^1.0.74",
|
||||
"@pushrocks/tapbundle": "^5.0.4",
|
||||
"@types/node": "^18.15.11"
|
||||
},
|
||||
"dependencies": {
|
||||
|
1504
pnpm-lock.yaml
generated
1504
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@pushrocks/smartstate',
|
||||
version: '2.0.3',
|
||||
version: '2.0.6',
|
||||
description: 'a package that handles state in a good way'
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user