Add interface to join chat using `Chat`

This commit is contained in:
Franck Royer 2021-10-08 14:54:59 +11:00
parent d645eadba4
commit 964f322ee2
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4
3 changed files with 22 additions and 11 deletions

View File

@ -149,7 +149,7 @@ export function useMessenger(chatId: string, chatIdList: string[]) {
await Promise.all(
chatIdList.map(async (id) => {
await messenger.joinChat(id);
await messenger.joinChatById(id);
setLastLoadTime((prev) => {
return {
...prev,

View File

@ -62,8 +62,8 @@ describe("Messenger", () => {
it("Sends & Receive public chat messages", async function () {
this.timeout(10_000);
await messengerAlice.joinChat(testChatId);
await messengerBob.joinChat(testChatId);
await messengerAlice.joinChatById(testChatId);
await messengerBob.joinChatById(testChatId);
const text = "This is a message.";
@ -87,8 +87,8 @@ describe("Messenger", () => {
it("public chat messages have signers", async function () {
this.timeout(10_000);
await messengerAlice.joinChat(testChatId);
await messengerBob.joinChat(testChatId);
await messengerAlice.joinChatById(testChatId);
await messengerBob.joinChatById(testChatId);
const text = "This is a message.";

View File

@ -36,16 +36,27 @@ export class Messenger {
return new Messenger(identity, waku);
}
/**
* Joins a public chat using its id.
*
* For community chats, prefer [[joinChat]].
*
* Use `addListener` to get messages received on this chat.
*/
public async joinChatById(chatId: string): Promise<void> {
const chat = await Chat.create(chatId);
await this.joinChat(chat);
}
/**
* Joins a public chat.
*
* Use `addListener` to get messages received on this chat.
*/
public async joinChat(chatId: string): Promise<void> {
if (this.chatsById.has(chatId))
throw `Failed to join chat, it is already joined: ${chatId}`;
const chat = await Chat.create(chatId);
public async joinChat(chat: Chat): Promise<void> {
if (this.chatsById.has(chat.id))
throw `Failed to join chat, it is already joined: ${chat.id}`;
this.waku.addDecryptionKey(chat.symKey);
@ -66,7 +77,7 @@ export class Messenger {
[chat.contentTopic]
);
this.chatsById.set(chatId, chat);
this.chatsById.set(chat.id, chat);
}
/**