share, receive, request, all you want

This commit is contained in:
Rajeh Taher
2023-10-01 21:43:00 +00:00
parent a11d2deaa5
commit 7cc604a9b5
5 changed files with 26 additions and 2 deletions

View File

@@ -660,6 +660,13 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
signalRepository,
logger,
)
if(msg.message?.protocolMessage?.type === proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER) {
if(node.attrs.sender_pn) {
ev.emit('chats.phoneNumberShare', { lid: node.attrs.from, jid: node.attrs.sender_pn })
}
}
if(shouldIgnoreJid(msg.key.remoteJid!)) {
logger.debug({ key: msg.key }, 'ignored message')
await sendMessageAck(node)

View File

@@ -304,6 +304,8 @@ export const makeMessagesSocket = (config: SocketConfig) => {
message: proto.IMessage,
{ messageId: msgId, participant, additionalAttributes, useUserDevicesCache, cachedGroupMetadata, statusJidList }: MessageRelayOptions
) => {
const meId = authState.creds.me!.id
let shouldIncludeDeviceIdentity = false
const { user, server } = jidDecode(jid)!
@@ -311,7 +313,6 @@ export const makeMessagesSocket = (config: SocketConfig) => {
const isGroup = server === 'g.us'
const isStatus = jid === statusJid
const isLid = server === 'lid'
const meId = authState.creds.me!.id
msgId = msgId || generateMessageID()
useUserDevicesCache = useUserDevicesCache !== false

View File

@@ -26,6 +26,7 @@ export type BaileysEventMap = {
'chats.upsert': Chat[]
/** update the given chats */
'chats.update': ChatUpdate[]
'chats.phoneNumberShare': {lid: string, jid: string}
/** delete chats with given ID */
'chats.delete': string[]
/** presence of contact in a chat updated */
@@ -54,6 +55,7 @@ export type BaileysEventMap = {
'blocklist.set': { blocklist: string[] }
'blocklist.update': { blocklist: string[], type: 'add' | 'remove' }
/** Receive an update on a call, including when the call was received, rejected, accepted */
'call': WACallEvent[]
'labels.edit': Label

View File

@@ -96,6 +96,14 @@ export type PollMessageOptions = {
messageSecret?: Uint8Array
}
type SharePhoneNumber = {
sharePhoneNumber: boolean
}
type RequestPhoneNumber = {
requestPhoneNumber: boolean
}
export type MediaType = keyof typeof MEDIA_HKDF_KEY_MAPPING
export type AnyMediaMessageContent = (
({
@@ -169,7 +177,7 @@ export type AnyRegularMessageContent = (
businessOwnerJid?: string
body?: string
footer?: string
}
} | SharePhoneNumber | RequestPhoneNumber
) & ViewOnce
export type AnyMessageContent = AnyRegularMessageContent | {

View File

@@ -449,6 +449,12 @@ export const generateWAMessageContent = async(
selectableOptionsCount: message.poll.selectableCount,
options: message.poll.values.map(optionName => ({ optionName })),
}
} else if('sharePhoneNumber' in message) {
m.protocolMessage = {
type: proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER
}
} else if('requestPhoneNumber' in message) {
m.requestPhoneNumberMessage = {}
} else {
m = await prepareWAMessageMedia(
message,