From e65f0606647fcff622360310af5e69edd169e84e Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Fri, 16 Jul 2021 23:48:43 +0530 Subject: [PATCH] update broadcast lists --- src/Connection/chats.ts | 10 +--------- src/Connection/groups.ts | 34 ++++++++++++++++++++++++++++++---- src/Store/in-memory-store.ts | 6 ++++++ src/Types/index.ts | 7 ------- 4 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/Connection/chats.ts b/src/Connection/chats.ts index 484c1e28..a55719b0 100644 --- a/src/Connection/chats.ts +++ b/src/Connection/chats.ts @@ -1,6 +1,6 @@ import BinaryNode from "../BinaryNode"; import { EventEmitter } from 'events' -import { Chat, Contact, Presence, PresenceData, WABroadcastListInfo, SocketConfig, WAFlag, WAMetric, WABusinessProfile, ChatModification, WAMessageKey, WAMessage } from "../Types"; +import { Chat, Contact, Presence, PresenceData, SocketConfig, WAFlag, WAMetric, WABusinessProfile, ChatModification, WAMessageKey, WAMessage } from "../Types"; import { debouncedTimeout, unixTimestampSeconds, whatsappID } from "../Utils/generics"; import makeAuthSocket from "./auth"; import { Attributes, BinaryNode as BinaryNodeBase } from "../BinaryNode/types"; @@ -413,14 +413,6 @@ const makeChatsSocket = (config: SocketConfig) => { } return response }, - /** Query broadcast list info */ - getBroadcastListInfo: (jid: string) => { - return query({ - json: ['query', 'contact', jid], - expect200: true, - requiresPhoneConnection: true - }) as Promise - }, /** * Update the profile picture * @param jid diff --git a/src/Connection/groups.ts b/src/Connection/groups.ts index 552b7ff4..46c486b8 100644 --- a/src/Connection/groups.ts +++ b/src/Connection/groups.ts @@ -1,7 +1,7 @@ import BinaryNode from "../BinaryNode"; import { EventEmitter } from 'events' import { SocketConfig, GroupModificationResponse, ParticipantAction, GroupMetadata, WAFlag, WAMetric, WAGroupCreateResponse, GroupParticipant } from "../Types"; -import { generateMessageID, unixTimestampSeconds } from "../Utils/generics"; +import { generateMessageID, unixTimestampSeconds, whatsappID } from "../Utils/generics"; import makeMessagesSocket from "./messages"; const makeGroupsSocket = (config: SocketConfig) => { @@ -47,8 +47,9 @@ const makeGroupsSocket = (config: SocketConfig) => { expect200: true }) metadata.participants = metadata.participants.map(p => ( - { ...p, id: undefined, jid: p.jid } + { ...p, id: undefined, jid: whatsappID(p.id) } )) + metadata.owner = whatsappID(metadata.owner) return metadata as GroupMetadata } /** Get the metadata (works after you've left the group also) */ @@ -153,7 +154,7 @@ const makeGroupsSocket = (config: SocketConfig) => { ], type: 'upsert' }) - return response + return metadata }, /** * Leave a group @@ -200,8 +201,33 @@ const makeGroupsSocket = (config: SocketConfig) => { const jids = Object.keys(result.participants || {}) ev.emit('group-participants.update', { jid, participants: jids, action }) return jids - } + }, + + /** Query broadcast list info */ + getBroadcastListInfo: async(jid: string) => { + interface WABroadcastListInfo { + status: number + name: string + recipients?: {id: string}[] + } + const result = await query({ + json: ['query', 'contact', jid], + expect200: true, + requiresPhoneConnection: true + }) as WABroadcastListInfo + + const metadata: GroupMetadata = { + subject: result.name, + id: jid, + creation: undefined, + owner: getState().user?.jid, + participants: result.recipients!.map(({id}) => ( + { jid: whatsappID(id), isAdmin: false, isSuperAdmin: false } + )) + } + return metadata + } } } diff --git a/src/Store/in-memory-store.ts b/src/Store/in-memory-store.ts index cda9c6e6..5ca99fac 100644 --- a/src/Store/in-memory-store.ts +++ b/src/Store/in-memory-store.ts @@ -249,6 +249,12 @@ export default( groupMetadata[jid] = await sock?.groupMetadata(jid, chats.get(jid)?.read_only === 'true') } return groupMetadata[jid] + }, + fetchBroadcastListInfo: async(jid: string, sock: Connection | undefined) => { + if(!groupMetadata[jid]) { + groupMetadata[jid] = await sock?.getBroadcastListInfo(jid) + } + return groupMetadata[jid] } } } \ No newline at end of file diff --git a/src/Types/index.ts b/src/Types/index.ts index 6da2733c..9127ae07 100644 --- a/src/Types/index.ts +++ b/src/Types/index.ts @@ -137,13 +137,6 @@ export type WAInitResponse = { status: 200 } -export interface WABroadcastListInfo { - status: number - name: string - recipients?: {id: string}[] -} - - type WABusinessHoursConfig = { day_of_week: string mode: string