|
|
@ -19,10 +19,12 @@ export class ChatModel implements Subject { |
|
|
|
*/ |
|
|
|
private readonly _observers: Observer[] = []; |
|
|
|
private state: ChatMessageViewModel[] | null; |
|
|
|
private readonly _messagePageMap: Map<string, number>; |
|
|
|
private readonly _messagesMap: Map<string, ChatMessageViewModel[]>; |
|
|
|
|
|
|
|
constructor() { |
|
|
|
this.state = null; |
|
|
|
this._messagePageMap = new Map(); |
|
|
|
this._messagesMap = new Map(); |
|
|
|
} |
|
|
|
/** |
|
|
@ -39,10 +41,14 @@ export class ChatModel implements Subject { |
|
|
|
console.log('Subject: Detached an observer.'); |
|
|
|
} |
|
|
|
|
|
|
|
private setUserMessages(username: string, messages: ChatMessageViewModel[]) { |
|
|
|
private storeUserMessages(username: string, messages: ChatMessageViewModel[]) { |
|
|
|
this._messagesMap.set(username, messages); |
|
|
|
} |
|
|
|
|
|
|
|
private getStoredUserMessages(username: string): ChatMessageViewModel[] { |
|
|
|
return this._messagesMap.get(username)!; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Trigger an update in each subscriber. |
|
|
|
*/ |
|
|
@ -60,13 +66,35 @@ export class ChatModel implements Subject { |
|
|
|
this.notify("some user"); |
|
|
|
} |
|
|
|
|
|
|
|
public async getmessages(contactName: string, passphrase: string, lastMessageTime: string | null): Promise<ChatMessageViewModel[]> { |
|
|
|
const cVMs = await ChatModelHelper.getMessages(contactName, passphrase, lastMessageTime, this); |
|
|
|
public async getMessages(contactName: string, passphrase: string, lastMessageTime: string | null): Promise<ChatMessageViewModel[]> { |
|
|
|
if(this._messagePageMap.get(contactName) == null) |
|
|
|
this._messagePageMap.set(contactName, 0); |
|
|
|
else { |
|
|
|
log.debug('page number before = ' + this._messagePageMap.get(contactName)!) |
|
|
|
this._messagePageMap.set(contactName, this._messagePageMap.get(contactName)! + 1); |
|
|
|
log.debug('page number after = ' + this._messagePageMap.get(contactName)!) |
|
|
|
} |
|
|
|
const pageNumber = this._messagePageMap.get(contactName) |
|
|
|
const cVMs = await ChatModelHelper.getMessages(contactName, passphrase, pageNumber!, lastMessageTime, this); |
|
|
|
if (cVMs != null) { |
|
|
|
log.info('Subject: My state has just changed') |
|
|
|
log.debug(cVMs); |
|
|
|
|
|
|
|
// this._messagesMap.set(userName, cVMs);
|
|
|
|
this.setUserMessages(contactName, cVMs); |
|
|
|
const existingMessages = this.getStoredUserMessages(contactName); |
|
|
|
log.debug(existingMessages); |
|
|
|
log.debug(cVMs); |
|
|
|
if (existingMessages != null) { |
|
|
|
// existingMessages.forEach(function (elem) {
|
|
|
|
// cVMs.push(elem);
|
|
|
|
// })
|
|
|
|
const newArr = cVMs.concat(existingMessages) |
|
|
|
// log.debug(newArr);
|
|
|
|
this.storeUserMessages(contactName, newArr); |
|
|
|
// this.storeUserMessages(contactName, cVMs);
|
|
|
|
} |
|
|
|
else { |
|
|
|
this.storeUserMessages(contactName, cVMs); |
|
|
|
} |
|
|
|
JsonAPI.contactName = contactName; |
|
|
|
this.notify(contactName); |
|
|
|
} |
|
|
|