Skip to content

Commit

Permalink
fix(fsm): initial exec actions
Browse files Browse the repository at this point in the history
Co-authored-by: Mohammad Honarvar <honarvar.info@gmail.com>
  • Loading branch information
AliMD and mohammadhonarvar committed Mar 17, 2023
1 parent a32fe63 commit e7dd5c8
Showing 1 changed file with 22 additions and 22 deletions.
44 changes: 22 additions & 22 deletions core/fsm/src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ export const _execAction = (
finiteStateMachine: FsmConsumerInterface,
): boolean | void => {
if (actionNames == null) return;
logger.logMethodArgs('execAction', actionNames);
logger.logMethodArgs('execAction', {constructorId: constructor.id, actionNames});

if (Array.isArray(actionNames)) {
return actionNames
Expand Down Expand Up @@ -231,21 +231,21 @@ export const _execAction = (

export const initFsmInstance = (instanceId: string, constructorId: string): void => {
logger.logMethodArgs('initializeMachine', {constructorId, instanceId});
const {initial, context} = getFsmConstructor(constructorId).config;
contextProvider.setValue<FsmInstance>(
instanceId,
{
constructorId,
state: {
target: initial,
from: initial,
by: 'INIT',
},
context,
signalList: [],
},
{debounce: 'NextCycle'},
);
const constructor = getFsmConstructor(constructorId);
const {initial, context} = constructor.config;
const newInstance: FsmInstance = {
constructorId,
state: {
target: initial,
from: initial,
by: 'INIT',
},
context,
signalList: [],
};
contextProvider.setValue<FsmInstance>(instanceId, newInstance, {debounce: 'NextCycle'});

_execAllActions(constructor, newInstance.state, finiteStateMachineConsumer(instanceId));
};

export const subscribeSignals = (
Expand All @@ -261,10 +261,12 @@ export const subscribeSignals = (
}

for (const signalConfig of signalList) {
signalConfig.signalId ??= instanceId;
listenerList.push(
contextConsumer.subscribe(
signalConfig.signalId ?? instanceId,
signalConfig.signalId,
(signalDetail: StringifyableRecord): void => {
logger.logMethodArgs('execSignalCallback', {instanceId, signalId: signalConfig.signalId, signalDetail});
if (signalConfig.callback) {
signalConfig.callback(signalDetail, finiteStateMachineConsumer(instanceId));
}
Expand All @@ -273,11 +275,9 @@ export const subscribeSignals = (
transition(
instanceId,
signalConfig.transition,
signalConfig.contextName
? {
[signalConfig.contextName]: signalDetail,
}
: undefined,
signalConfig.contextName == null ? undefined : {
[signalConfig.contextName]: signalDetail,
},
);
}
},
Expand Down

0 comments on commit e7dd5c8

Please sign in to comment.