accelerator-core
Version:
[](https://travis-ci.org/furkleindustries/accelerator-core)
43 lines (36 loc) • 1.09 kB
text/typescript
import {
ActionTypes,
} from '../actions/ActionTypes';
import {
getPassagesMapAndStartPassageName,
} from '../passages/getPassagesMapAndStartPassageName';
import {
IPassageNavigationAction,
} from '../actions/IPassageNavigationAction';
import {
IStoryResetAction,
} from '../actions/IStoryResetAction';
import {
assert,
} from 'ts-assertions';
import {
registry,
} from '../../passages/passages-manifest';
type RegistryType = typeof registry;
export const strings = {
NO_START_PASSAGE_NAME:
'There was no start passage name when currentPassageNameReducer was'
};
const { startPassageName } = getPassagesMapAndStartPassageName();
assert(startPassageName, strings.NO_START_PASSAGE_NAME);
export const passageNameReducer = (
previousState: keyof RegistryType = startPassageName,
action: IPassageNavigationAction | IStoryResetAction,
): keyof RegistryType => {
if (action.type === ActionTypes.PassageNavigation) {
return action.value.passage.name;
} else if (action.type === ActionTypes.StoryReset) {
return startPassageName;
}
return previousState;
};