feat: send tctoken to profile update and presence subscribe (#2257)
* fix: improve message resend logic by adding checks for message IDs * Revert "fix: improve message resend logic by adding checks for message IDs" This reverts commit c03f9d8e6fc6cbfbb9d1f8f67c169700e704213d. * feat(tc-token): implement buildTcTokenFromJid utility and integrate into chats socket * fix(tc-token): ensure consistent return value when tcTokenBuffer is absent * fix(chats): update import path for buildTcTokenFromJid utility
This commit is contained in:
+12
-13
@@ -54,6 +54,7 @@ import {
|
||||
} from '../WABinary'
|
||||
import { USyncQuery, USyncUser } from '../WAUSync'
|
||||
import { makeSocket } from './socket.js'
|
||||
import { buildTcTokenFromJid } from '../Utils/tc-token-utils'
|
||||
const MAX_SYNC_ATTEMPTS = 2
|
||||
|
||||
export const makeChatsSocket = (config: SocketConfig) => {
|
||||
@@ -612,7 +613,10 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
||||
* type = "image for the high res picture"
|
||||
*/
|
||||
const profilePictureUrl = async (jid: string, type: 'preview' | 'image' = 'preview', timeoutMs?: number) => {
|
||||
// TOOD: Add support for tctoken, existingID, and newsletter + group options
|
||||
const baseContent: BinaryNode[] = [{ tag: 'picture', attrs: { type, query: 'url' } }]
|
||||
|
||||
const tcTokenContent = await buildTcTokenFromJid({ authState, jid, baseContent })
|
||||
|
||||
jid = jidNormalizedUser(jid)
|
||||
const result = await query(
|
||||
{
|
||||
@@ -623,7 +627,7 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
||||
type: 'get',
|
||||
xmlns: 'w:profile:picture'
|
||||
},
|
||||
content: [{ tag: 'picture', attrs: { type, query: 'url' } }]
|
||||
content: tcTokenContent
|
||||
},
|
||||
timeoutMs
|
||||
)
|
||||
@@ -694,24 +698,19 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
||||
* @param toJid the jid to subscribe to
|
||||
* @param tcToken token for subscription, use if present
|
||||
*/
|
||||
const presenceSubscribe = (toJid: string, tcToken?: Buffer) =>
|
||||
sendNode({
|
||||
const presenceSubscribe = async (toJid: string) => {
|
||||
const tcTokenContent = await buildTcTokenFromJid({ authState, jid: toJid })
|
||||
|
||||
return sendNode({
|
||||
tag: 'presence',
|
||||
attrs: {
|
||||
to: toJid,
|
||||
id: generateMessageTag(),
|
||||
type: 'subscribe'
|
||||
},
|
||||
content: tcToken
|
||||
? [
|
||||
{
|
||||
tag: 'tctoken',
|
||||
attrs: {},
|
||||
content: tcToken
|
||||
}
|
||||
]
|
||||
: undefined
|
||||
content: tcTokenContent
|
||||
})
|
||||
}
|
||||
|
||||
const handlePresenceUpdate = ({ tag, attrs, content }: BinaryNode) => {
|
||||
let presence: PresenceData | undefined
|
||||
|
||||
Reference in New Issue
Block a user