import { Subject, takeWhile } from "rxjs"; import { WrappedMessage } from "../../interfaces/general.interface"; export function sortMessageBasedOnDate(array: WrappedMessage[]): WrappedMessage[] { console.log(`Sorting ${array.length} messages....`) return array.sort((a, b) => { return new Date(a.timeReceived).getTime() - new Date(b.timeReceived).getTime(); }); } // SO concept will be that if the message behind it is received, then export async function checkMessage(message: WrappedMessage, messageChecking: Subject): Promise { return new Promise((resolve, reject) => { if (message.previousMessageID) { messageChecking.pipe( takeWhile(item => message.previousMessageID === item.thisMessageID) ).subscribe({ complete: () => { resolve('previousMessageID matched') // console.log(`${message.payload.header.messageID} : Previous messageID(${message.previousMessageID}) matched`) // console.log(`matched`) } }) } else { console.log('No previous messageID. This should be the first message') resolve('No previous message ID. Please Proceed.') } }) }