diff --git a/packages/status-communities/src/chat.ts b/packages/status-communities/src/chat.ts index 20abeb14..e08e3a22 100644 --- a/packages/status-communities/src/chat.ts +++ b/packages/status-communities/src/chat.ts @@ -14,7 +14,7 @@ export class Chat { /** * Create a public chat room. */ - public static async create(id: string) { + public static async create(id: string): Promise { const symKey = await createSymKeyFromPassword(id); return new Chat(id, symKey); @@ -34,7 +34,7 @@ export class Chat { return message; } - public handleNewMessage(message: ChatMessage) { + public handleNewMessage(message: ChatMessage): void { this._updateClockFromMessage(message); } @@ -52,11 +52,18 @@ export class Chat { } private _updateClockFromMessage(message: ChatMessage): void { - if (!this.lastMessage || this.lastMessage.clock <= message.clock) { + if ( + !this.lastMessage || + !this.lastMessage.clock || + (message.clock && this.lastMessage.clock <= message.clock) + ) { this.lastMessage = message; } - if (!this.lastClockValue || this.lastClockValue < message.clock) { + if ( + !this.lastClockValue || + (message.clock && this.lastClockValue < message.clock) + ) { this.lastClockValue = message.clock; } } diff --git a/packages/status-communities/src/chat_message.ts b/packages/status-communities/src/chat_message.ts index 31129b1d..e24d25ac 100644 --- a/packages/status-communities/src/chat_message.ts +++ b/packages/status-communities/src/chat_message.ts @@ -15,7 +15,7 @@ export class ChatMessage { timestamp: number, text: string, chatId: string - ) { + ): ChatMessage { const proto = { clock, // ms? timestamp, //ms? @@ -50,7 +50,7 @@ export class ChatMessage { return proto.ChatMessage.encode(this.proto).finish(); } - public get clock() { + public get clock(): number | undefined { return this.proto.clock; } diff --git a/packages/status-communities/src/messenger.ts b/packages/status-communities/src/messenger.ts index 68503d9c..d5fe484c 100644 --- a/packages/status-communities/src/messenger.ts +++ b/packages/status-communities/src/messenger.ts @@ -28,7 +28,7 @@ export class Messenger { public static async create( identity: Identity, wakuOptions?: WakuCreateOptions - ) { + ): Promise { const _wakuOptions = Object.assign({ bootstrap: true }, wakuOptions); const waku = await Waku.create(_wakuOptions); return new Messenger(identity, waku); @@ -39,7 +39,7 @@ export class Messenger { * * Use `addListener` to get messages received on this chat. */ - public async joinChat(chatId: string) { + public async joinChat(chatId: string): Promise { if (this.chatsById.has(chatId)) throw `Failed to join chat, it is already joined: ${chatId}`; @@ -102,7 +102,7 @@ export class Messenger { public addObserver( observer: (message: ApplicationMetadataMessage) => void, chatId: string - ) { + ): void { // Not sure this is the best design here. Maybe `addObserver` and `joinChat` should be merged. if (!this.chatsById.has(chatId)) @@ -153,7 +153,7 @@ export class Messenger { if (!chat) throw `Failed to retrieve messages, chat is not joined: ${chatId}`; - const _callback = (wakuMessages: WakuMessage[]) => { + const _callback = (wakuMessages: WakuMessage[]): void => { const isDefined = ( msg: ApplicationMetadataMessage | undefined ): msg is ApplicationMetadataMessage => { @@ -187,7 +187,7 @@ export class Messenger { private _handleNewChatMessage( chat: Chat, message: ApplicationMetadataMessage - ) { + ): void { if (!message.payload || !message.type || !message.signature) return; const chatMessage = ChatMessage.decode(message.payload);