44 lines
928 B
JavaScript
44 lines
928 B
JavaScript
import _ from 'lodash/fp';
|
|
import { alertTypes, normalizeAlertType } from '../../../utils/flash.js';
|
|
|
|
// interface ExpressFlash {
|
|
// [alertType]: [String...]
|
|
// }
|
|
// interface StackFlash {
|
|
// type: AlertType,
|
|
// message: String
|
|
// }
|
|
export const expressToStack = _.flow(
|
|
_.toPairs,
|
|
_.flatMap(([ type, messages ]) => messages.map(msg => ({
|
|
message: msg,
|
|
type: normalizeAlertType(type)
|
|
})))
|
|
);
|
|
|
|
export const isExpressFlash = _.flow(
|
|
_.keys,
|
|
_.every(type => alertTypes[type])
|
|
);
|
|
|
|
export const getFlashAction = _.flow(
|
|
_.property('meta'),
|
|
_.property('flash')
|
|
);
|
|
|
|
// FlashMessage
|
|
// createFlashMetaAction(payload: ExpressFlash|StackFlash
|
|
export const createFlashMetaAction = payload => {
|
|
if (isExpressFlash(payload)) {
|
|
payload = expressToStack(payload);
|
|
} else {
|
|
payload = [payload];
|
|
}
|
|
return { flash: { payload } };
|
|
};
|
|
|
|
export const isFlashAction = _.flow(
|
|
getFlashAction,
|
|
Boolean
|
|
);
|