diff --git a/test/test.both.ts b/test/test.both.ts index 969d199..21b6279 100644 --- a/test/test.both.ts +++ b/test/test.both.ts @@ -18,7 +18,7 @@ tap.test('should create a new SmartState', async () => { }); tap.test('should create a new StatePart', async () => { - testStatePart = testState.getStatePart('testStatePart', { + testStatePart = await testState.getStatePart('testStatePart', { currentFavorites: [], deep: { hi: 2, diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 648b867..d78ce0b 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartstate', - version: '2.0.13', + version: '2.0.14', description: 'a package that handles state in a good way' } diff --git a/ts/smartstate.classes.smartstate.ts b/ts/smartstate.classes.smartstate.ts index 991681c..ca30d57 100644 --- a/ts/smartstate.classes.smartstate.ts +++ b/ts/smartstate.classes.smartstate.ts @@ -20,11 +20,11 @@ export class Smartstate { * @param initialArg * @param initMode */ - public getStatePart( + public async getStatePart( statePartNameArg: string & StatePartNameType, initialArg?: PayloadType, initMode?: TInitMode - ): StatePart { + ): Promise> { if (this.statePartMap[statePartNameArg as any]) { if (initialArg && (!initMode || initMode !== 'soft')) { throw new Error( @@ -47,11 +47,11 @@ export class Smartstate { * @param statePartName * @param initialPayloadArg */ - private createStatePart( + private async createStatePart( statePartName: StatePartNameType, initialPayloadArg: PayloadType, initMode?: TInitMode - ): StatePart { + ): Promise> { const newState = new StatePart( statePartName, initMode === 'persistent' ? { @@ -59,7 +59,11 @@ export class Smartstate { storeName: statePartName as any, } : null ); - newState.setState(initialPayloadArg); + const currentState = newState.getState(); + await newState.setState({ + ...initialPayloadArg, + ...currentState, + }); this.statePartMap[statePartName as any] = newState; return newState; }