in frontend/src/app/menu/menu.component.ts [50:86]
ngOnChanges(changes: SimpleChanges) {
for (const propName in changes) {
if (changes.hasOwnProperty(propName)) {
switch (propName) {
case 'userSessions': {
if (this.userSessions.length > 0) {
//group user sessions based on session id
let grouped = this.userSessions?.reduce(
(result: any, currentValue: any) => {
(result[currentValue['session_id']] = result[currentValue['session_id']] || []).push(currentValue);
return result;
}, {});
//map the grouped user sessions as a chatThread , sort and display in side nav
let sessionToDisplayQuery: any = []
Object.keys(grouped).map(function (sessionId: string) {
let chatThreadArray: any[] = grouped[sessionId];
let obj = {
'sessionId': sessionId,
'question': chatThreadArray[chatThreadArray.length - 1].user_question,
'chatThread': chatThreadArray,
'timestamp': chatThreadArray[chatThreadArray.length - 1].timestamp.seconds
}
sessionToDisplayQuery.push(obj);
});
sessionToDisplayQuery?.sort((a: any, b: any) => {
return b.chatThread[0].timestamp - a.chatThread[0].timestamp
});
this.userHistory = sessionToDisplayQuery;
this.recentHistory = this.userHistory.slice(0, 5);
}
break;
}
}
}
}
}