in BuildAnIntelligentBot/src/ChatBot/wwwroot/built/Store.js [130:203]
exports.history = function (state, action) {
if (state === void 0) { state = {
activities: [],
clientActivityBase: Date.now().toString() + Math.random().toString().substr(1) + '.',
clientActivityCounter: 0,
selectedActivity: null
}; }
konsole.log("history action", action);
switch (action.type) {
case 'Receive_Sent_Message': {
if (!action.activity.channelData || !action.activity.channelData.clientActivityId) {
// only postBack messages don't have clientActivityId, and these shouldn't be added to the history
return state;
}
var i_1 = state.activities.findIndex(function (activity) {
return activity.channelData && activity.channelData.clientActivityId === action.activity.channelData.clientActivityId;
});
if (i_1 !== -1) {
var activity_1 = state.activities[i_1];
return tslib_1.__assign({}, state, { activities: copyArrayWithUpdatedItem(state.activities, i_1, activity_1), selectedActivity: state.selectedActivity === activity_1 ? action.activity : state.selectedActivity });
}
// else fall through and treat this as a new message
}
case 'Receive_Message':
if (state.activities.find(function (a) { return a.id === action.activity.id; }))
return state; // don't allow duplicate messages
return tslib_1.__assign({}, state, { activities: state.activities.filter(function (activity) { return activity.type !== "typing"; }).concat([
action.activity
], state.activities.filter(function (activity) { return activity.from.id !== action.activity.from.id && activity.type === "typing"; })) });
case 'Send_Message':
return tslib_1.__assign({}, state, { activities: state.activities.filter(function (activity) { return activity.type !== "typing"; }).concat([
tslib_1.__assign({}, action.activity, { timestamp: (new Date()).toISOString(), channelData: { clientActivityId: state.clientActivityBase + state.clientActivityCounter } })
], state.activities.filter(function (activity) { return activity.type === "typing"; })), clientActivityCounter: state.clientActivityCounter + 1 });
case 'Send_Message_Retry': {
var activity_2 = state.activities.find(function (activity) {
return activity.channelData && activity.channelData.clientActivityId === action.clientActivityId;
});
var newActivity_1 = activity_2.id === undefined ? activity_2 : tslib_1.__assign({}, activity_2, { id: undefined });
return tslib_1.__assign({}, state, { activities: state.activities.filter(function (activityT) { return activityT.type !== "typing" && activityT !== activity_2; }).concat([
newActivity_1
], state.activities.filter(function (activity) { return activity.type === "typing"; })), selectedActivity: state.selectedActivity === activity_2 ? newActivity_1 : state.selectedActivity });
}
case 'Send_Message_Succeed':
case 'Send_Message_Fail': {
var i_2 = state.activities.findIndex(function (activity) {
return activity.channelData && activity.channelData.clientActivityId === action.clientActivityId;
});
if (i_2 === -1)
return state;
var activity_3 = state.activities[i_2];
if (activity_3.id && activity_3.id != "retry")
return state;
var newActivity_2 = tslib_1.__assign({}, activity_3, { id: action.type === 'Send_Message_Succeed' ? action.id : null });
return tslib_1.__assign({}, state, { activities: copyArrayWithUpdatedItem(state.activities, i_2, newActivity_2), clientActivityCounter: state.clientActivityCounter + 1, selectedActivity: state.selectedActivity === activity_3 ? newActivity_2 : state.selectedActivity });
}
case 'Show_Typing':
return tslib_1.__assign({}, state, { activities: state.activities.filter(function (activity) { return activity.type !== "typing"; }).concat(state.activities.filter(function (activity) { return activity.from.id !== action.activity.from.id && activity.type === "typing"; }), [
action.activity
]) });
case 'Clear_Typing':
return tslib_1.__assign({}, state, { activities: state.activities.filter(function (activity) { return activity.id !== action.id; }), selectedActivity: state.selectedActivity && state.selectedActivity.id === action.id ? null : state.selectedActivity });
case 'Select_Activity':
if (action.selectedActivity === state.selectedActivity)
return state;
return tslib_1.__assign({}, state, { selectedActivity: action.selectedActivity });
case 'Take_SuggestedAction':
var i = state.activities.findIndex(function (activity) { return activity === action.message; });
var activity = state.activities[i];
var newActivity = tslib_1.__assign({}, activity, { suggestedActions: undefined });
return tslib_1.__assign({}, state, { activities: copyArrayWithUpdatedItem(state.activities, i, newActivity), selectedActivity: state.selectedActivity === activity ? newActivity : state.selectedActivity });
default:
return state;
}
};