support multiple community description callbacks (#280)

This commit is contained in:
Felicio Mununga 2022-06-17 09:36:43 +02:00 committed by GitHub
parent fb78bc5dc8
commit c2ecb7ed78
No known key found for this signature in database
GPG Key ID: 0EB8D75C775AB6F1
1 changed files with 7 additions and 4 deletions

View File

@ -27,7 +27,7 @@ export class Community {
public description!: CommunityDescription
public chats: Map<string, Chat>
#members: Map<string, Member>
public callback: ((description: CommunityDescription) => void) | undefined
#descriptionCallbacks: Set<(description: CommunityDescription) => void>
constructor(client: Client, publicKey: string) {
this.client = client
@ -37,6 +37,7 @@ export class Community {
this.chats = new Map()
this.#members = new Map()
this.#descriptionCallbacks = new Set()
}
public async start() {
@ -220,7 +221,9 @@ export class Community {
this.description = description
// callback
this.callback?.(this.description)
this.#descriptionCallbacks.forEach(callback =>
callback({ ...this.description })
)
// Chats
// handle
@ -231,10 +234,10 @@ export class Community {
}
public onChange = (callback: (description: CommunityDescription) => void) => {
this.callback = callback
this.#descriptionCallbacks.add(callback)
return () => {
this.callback = undefined
this.#descriptionCallbacks.delete(callback)
}
}