ngOnChanges()

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;
          }
        }
      }
    }
  }