_addItemsToTranscript()

in src/components/Chat/ChatSession.js [421:458]


  _addItemsToTranscript(items) {

    let self = this;

    if (items.length === 0) {
      return;
    }

    items = items.filter(item => !this._isRoundTripSystemEvent(item));

    console.log("ADD ITEMS", items);

    const newItemMap = items.reduce((acc, item) => ({...acc, [item.id]: item}), {});
    
    const newTranscript = this.transcript.filter(item => newItemMap[item.id] === undefined);
  
    newTranscript.push(...items);
    newTranscript.sort(
      (a, b) => {
        const isASending = a.transportDetails.status === Status.Sending;
        const isBSending = b.transportDetails.status === Status.Sending;
        if ((isASending && !isBSending) || (!isASending && isBSending)) {
          return isASending ? 1 : -1;
        }
        return a.transportDetails.sentTime - b.transportDetails.sentTime;
      }
    );   

    newTranscript.forEach(function(item){
      if(item.transportDetails.direction === Direction.Incoming){
        item = self.incomingItemDecorator(item);
      }else{
        item = self.outgoingItemDecorator(item);
    }
    }); 

    this._updateTranscript(newTranscript);
  }