@kangwifi-pro/waliwa 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/community/audio-transcription.d.ts +46 -0
- package/dist/community/audio-transcription.d.ts.map +1 -0
- package/dist/community/audio-transcription.js +108 -0
- package/dist/community/audio-transcription.js.map +1 -0
- package/dist/community/bulk-operations.d.ts +87 -0
- package/dist/community/bulk-operations.d.ts.map +1 -0
- package/dist/community/bulk-operations.js +223 -0
- package/dist/community/bulk-operations.js.map +1 -0
- package/dist/community/community-fixes.d.ts +306 -0
- package/dist/community/community-fixes.d.ts.map +1 -0
- package/dist/community/community-fixes.js +630 -0
- package/dist/community/community-fixes.js.map +1 -0
- package/dist/community/contacts-manager.d.ts +89 -0
- package/dist/community/contacts-manager.d.ts.map +1 -0
- package/dist/community/contacts-manager.js +241 -0
- package/dist/community/contacts-manager.js.map +1 -0
- package/dist/community/disappearing.d.ts +63 -0
- package/dist/community/disappearing.d.ts.map +1 -0
- package/dist/community/disappearing.js +195 -0
- package/dist/community/disappearing.js.map +1 -0
- package/dist/community/index.d.ts +101 -0
- package/dist/community/index.d.ts.map +1 -0
- package/dist/community/index.js +113 -0
- package/dist/community/index.js.map +1 -0
- package/dist/community/live-location.d.ts +85 -0
- package/dist/community/live-location.d.ts.map +1 -0
- package/dist/community/live-location.js +238 -0
- package/dist/community/live-location.js.map +1 -0
- package/dist/community/message-extras.d.ts +110 -0
- package/dist/community/message-extras.d.ts.map +1 -0
- package/dist/community/message-extras.js +472 -0
- package/dist/community/message-extras.js.map +1 -0
- package/dist/community/newsletter-extended.d.ts +142 -0
- package/dist/community/newsletter-extended.d.ts.map +1 -0
- package/dist/community/newsletter-extended.js +543 -0
- package/dist/community/newsletter-extended.js.map +1 -0
- package/dist/community/privacy-manager.d.ts +98 -0
- package/dist/community/privacy-manager.d.ts.map +1 -0
- package/dist/community/privacy-manager.js +273 -0
- package/dist/community/privacy-manager.js.map +1 -0
- package/dist/community/profile-manager.d.ts +94 -0
- package/dist/community/profile-manager.d.ts.map +1 -0
- package/dist/community/profile-manager.js +363 -0
- package/dist/community/profile-manager.js.map +1 -0
- package/dist/community/status-extended.d.ts +119 -0
- package/dist/community/status-extended.d.ts.map +1 -0
- package/dist/community/status-extended.js +444 -0
- package/dist/community/status-extended.js.map +1 -0
- package/dist/community/sticker-manager.d.ts +73 -0
- package/dist/community/sticker-manager.d.ts.map +1 -0
- package/dist/community/sticker-manager.js +251 -0
- package/dist/community/sticker-manager.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/socket/wa-socket.d.ts +77 -0
- package/dist/socket/wa-socket.d.ts.map +1 -1
- package/dist/socket/wa-socket.js +149 -3
- package/dist/socket/wa-socket.js.map +1 -1
- package/package.json +2 -2
- package/src/community/audio-transcription.ts +121 -0
- package/src/community/bulk-operations.ts +329 -0
- package/src/community/community-fixes.ts +771 -0
- package/src/community/contacts-manager.ts +282 -0
- package/src/community/disappearing.ts +218 -0
- package/src/community/index.ts +169 -0
- package/src/community/live-location.ts +287 -0
- package/src/community/message-extras.ts +523 -0
- package/src/community/newsletter-extended.ts +614 -0
- package/src/community/privacy-manager.ts +310 -0
- package/src/community/profile-manager.ts +402 -0
- package/src/community/status-extended.ts +518 -0
- package/src/community/sticker-manager.ts +305 -0
- package/src/index.ts +67 -2
- package/src/socket/wa-socket.ts +183 -4
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Contacts Manager (Community Request)
|
|
3
|
+
*
|
|
4
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
5
|
+
* - Sync contacts dari phonebook
|
|
6
|
+
* - Check if contact is registered on WhatsApp
|
|
7
|
+
* - Get contact info (name, picture, about)
|
|
8
|
+
* - Block/unblock contacts
|
|
9
|
+
* - Search contacts by name/number
|
|
10
|
+
* - Register phone numbers (check if registered)
|
|
11
|
+
*
|
|
12
|
+
* Fix Baileys issues:
|
|
13
|
+
* - Contact sync tidak reliable
|
|
14
|
+
* - Tidak bisa check jika nomor terdaftar di WhatsApp
|
|
15
|
+
*/
|
|
16
|
+
import type { WALogger } from '../types/index.js';
|
|
17
|
+
import { BinaryNode } from '../core/binary.js';
|
|
18
|
+
export interface ContactInfo {
|
|
19
|
+
jid: string;
|
|
20
|
+
phoneNumber: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
pushName?: string;
|
|
23
|
+
isRegistered: boolean;
|
|
24
|
+
isBusiness?: boolean;
|
|
25
|
+
about?: string;
|
|
26
|
+
profilePictureUrl?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ContactsManagerOptions {
|
|
29
|
+
send: (data: Uint8Array) => void;
|
|
30
|
+
registerIqHandler: (id: string, handler: (node: BinaryNode) => void) => void;
|
|
31
|
+
logger?: WALogger;
|
|
32
|
+
ownJid?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class ContactsManager {
|
|
35
|
+
private send;
|
|
36
|
+
private registerIqHandler;
|
|
37
|
+
private logger;
|
|
38
|
+
private ownJid?;
|
|
39
|
+
private contactsCache;
|
|
40
|
+
constructor(opts: ContactsManagerOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Sync contacts dari phonebook (check if registered on WhatsApp)
|
|
43
|
+
* Fix Baileys issue: contact sync tidak reliable
|
|
44
|
+
*/
|
|
45
|
+
syncContacts(phoneNumbers: string[]): Promise<Map<string, ContactInfo>>;
|
|
46
|
+
/**
|
|
47
|
+
* Check if single phone number is registered on WhatsApp
|
|
48
|
+
*/
|
|
49
|
+
checkRegistered(phoneNumber: string): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Check multiple phone numbers sekaligus
|
|
52
|
+
*/
|
|
53
|
+
checkRegisteredBatch(phoneNumbers: string[]): Promise<Map<string, ContactInfo>>;
|
|
54
|
+
/**
|
|
55
|
+
* Get contact info (with caching)
|
|
56
|
+
*/
|
|
57
|
+
getContactInfo(phoneOrJid: string, useCache?: boolean): Promise<ContactInfo>;
|
|
58
|
+
/**
|
|
59
|
+
* Search contacts by name or phone
|
|
60
|
+
*/
|
|
61
|
+
searchContacts(query: string, limit?: number): ContactInfo[];
|
|
62
|
+
/**
|
|
63
|
+
* Get all cached contacts
|
|
64
|
+
*/
|
|
65
|
+
getAllContacts(): ContactInfo[];
|
|
66
|
+
/**
|
|
67
|
+
* Get contacts count
|
|
68
|
+
*/
|
|
69
|
+
getContactsCount(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Add contact ke cache
|
|
72
|
+
*/
|
|
73
|
+
cacheContact(info: ContactInfo): void;
|
|
74
|
+
/**
|
|
75
|
+
* Remove contact dari cache
|
|
76
|
+
*/
|
|
77
|
+
removeContact(jid: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Update contact name in cache
|
|
80
|
+
*/
|
|
81
|
+
updateContactName(jid: string, name: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* Clear all cached contacts
|
|
84
|
+
*/
|
|
85
|
+
clearCache(): void;
|
|
86
|
+
private findChild;
|
|
87
|
+
private sendIqAndWait;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=contacts-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts-manager.d.ts","sourceRoot":"","sources":["../../src/community/contacts-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKjE,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC;IAC7E,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,iBAAiB,CAA4D;IACrF,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAuC;gBAEhD,IAAI,EAAE,sBAAsB;IAOxC;;;OAGG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAmB7E;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5D;;OAEG;IACG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAuErF;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBxF;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAkBhE;;OAEG;IACH,cAAc,IAAI,WAAW,EAAE;IAI/B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIrC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQlD;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Contacts Manager (Community Request)
|
|
4
|
+
*
|
|
5
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
6
|
+
* - Sync contacts dari phonebook
|
|
7
|
+
* - Check if contact is registered on WhatsApp
|
|
8
|
+
* - Get contact info (name, picture, about)
|
|
9
|
+
* - Block/unblock contacts
|
|
10
|
+
* - Search contacts by name/number
|
|
11
|
+
* - Register phone numbers (check if registered)
|
|
12
|
+
*
|
|
13
|
+
* Fix Baileys issues:
|
|
14
|
+
* - Contact sync tidak reliable
|
|
15
|
+
* - Tidak bisa check jika nomor terdaftar di WhatsApp
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ContactsManager = void 0;
|
|
19
|
+
const binary_js_1 = require("../core/binary.js");
|
|
20
|
+
const message_encoder_js_1 = require("../messages/message-encoder.js");
|
|
21
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
22
|
+
class ContactsManager {
|
|
23
|
+
send;
|
|
24
|
+
registerIqHandler;
|
|
25
|
+
logger;
|
|
26
|
+
ownJid;
|
|
27
|
+
contactsCache = new Map();
|
|
28
|
+
constructor(opts) {
|
|
29
|
+
this.send = opts.send;
|
|
30
|
+
this.registerIqHandler = opts.registerIqHandler;
|
|
31
|
+
this.logger = opts.logger ?? new logger_js_1.SilentLogger();
|
|
32
|
+
this.ownJid = opts.ownJid;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sync contacts dari phonebook (check if registered on WhatsApp)
|
|
36
|
+
* Fix Baileys issue: contact sync tidak reliable
|
|
37
|
+
*/
|
|
38
|
+
async syncContacts(phoneNumbers) {
|
|
39
|
+
const result = new Map();
|
|
40
|
+
// Process in batches of 100 untuk avoid server limits
|
|
41
|
+
const batchSize = 100;
|
|
42
|
+
for (let i = 0; i < phoneNumbers.length; i += batchSize) {
|
|
43
|
+
const batch = phoneNumbers.slice(i, i + batchSize);
|
|
44
|
+
const batchResult = await this.checkRegisteredBatch(batch);
|
|
45
|
+
for (const [phone, info] of batchResult.entries()) {
|
|
46
|
+
result.set(phone, info);
|
|
47
|
+
this.contactsCache.set(info.jid, info);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
this.logger.info(`Synced ${result.size} contacts (${result.size} registered)`);
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if single phone number is registered on WhatsApp
|
|
55
|
+
*/
|
|
56
|
+
async checkRegistered(phoneNumber) {
|
|
57
|
+
const info = await this.getContactInfo(phoneNumber);
|
|
58
|
+
return info.isRegistered;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check multiple phone numbers sekaligus
|
|
62
|
+
*/
|
|
63
|
+
async checkRegisteredBatch(phoneNumbers) {
|
|
64
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
65
|
+
const jids = phoneNumbers.map(p => `${p.replace(/[^0-9]/g, '')}@s.whatsapp.net`);
|
|
66
|
+
const node = {
|
|
67
|
+
tag: 'iq',
|
|
68
|
+
attrs: {
|
|
69
|
+
type: 'get',
|
|
70
|
+
to: 's.whatsapp.net',
|
|
71
|
+
id
|
|
72
|
+
},
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
tag: 'usync',
|
|
76
|
+
attrs: {
|
|
77
|
+
sid: id,
|
|
78
|
+
mode: 'query',
|
|
79
|
+
last: 'true',
|
|
80
|
+
index: '0',
|
|
81
|
+
context: 'interactive'
|
|
82
|
+
},
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
tag: 'query',
|
|
86
|
+
attrs: {},
|
|
87
|
+
content: [
|
|
88
|
+
{ tag: 'contact', attrs: {} }
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
tag: 'list',
|
|
93
|
+
attrs: {},
|
|
94
|
+
content: jids.map(jid => ({ tag: 'user', attrs: { jid } }))
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
};
|
|
100
|
+
const response = await this.sendIqAndWait(node, id);
|
|
101
|
+
const result = new Map();
|
|
102
|
+
const usyncNode = this.findChild(response, 'usync');
|
|
103
|
+
const listNode = this.findChild(usyncNode ?? response, 'list');
|
|
104
|
+
if (Array.isArray(listNode?.content)) {
|
|
105
|
+
for (const userNode of listNode.content) {
|
|
106
|
+
if (typeof userNode !== 'object' || userNode?.tag !== 'user')
|
|
107
|
+
continue;
|
|
108
|
+
const jid = userNode.attrs?.jid;
|
|
109
|
+
if (!jid)
|
|
110
|
+
continue;
|
|
111
|
+
const phone = jid.split('@')[0];
|
|
112
|
+
const contactNode = this.findChild(userNode, 'contact');
|
|
113
|
+
const isRegistered = contactNode?.attrs?.type === 'in';
|
|
114
|
+
const name = typeof contactNode?.content === 'string' ? contactNode.content : undefined;
|
|
115
|
+
const info = {
|
|
116
|
+
jid,
|
|
117
|
+
phoneNumber: phone,
|
|
118
|
+
name,
|
|
119
|
+
isRegistered
|
|
120
|
+
};
|
|
121
|
+
result.set(phone, info);
|
|
122
|
+
this.contactsCache.set(jid, info);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get contact info (with caching)
|
|
129
|
+
*/
|
|
130
|
+
async getContactInfo(phoneOrJid, useCache = true) {
|
|
131
|
+
const jid = phoneOrJid.includes('@')
|
|
132
|
+
? phoneOrJid
|
|
133
|
+
: `${phoneOrJid.replace(/[^0-9]/g, '')}@s.whatsapp.net`;
|
|
134
|
+
if (useCache) {
|
|
135
|
+
const cached = this.contactsCache.get(jid);
|
|
136
|
+
if (cached)
|
|
137
|
+
return cached;
|
|
138
|
+
}
|
|
139
|
+
const result = await this.checkRegisteredBatch([jid.split('@')[0]]);
|
|
140
|
+
const info = result.get(jid.split('@')[0]);
|
|
141
|
+
if (!info) {
|
|
142
|
+
return {
|
|
143
|
+
jid,
|
|
144
|
+
phoneNumber: jid.split('@')[0],
|
|
145
|
+
isRegistered: false
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return info;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Search contacts by name or phone
|
|
152
|
+
*/
|
|
153
|
+
searchContacts(query, limit = 20) {
|
|
154
|
+
const q = query.toLowerCase();
|
|
155
|
+
const results = [];
|
|
156
|
+
for (const contact of this.contactsCache.values()) {
|
|
157
|
+
if (contact.name?.toLowerCase().includes(q) ||
|
|
158
|
+
contact.phoneNumber.includes(q) ||
|
|
159
|
+
contact.jid.includes(q)) {
|
|
160
|
+
results.push(contact);
|
|
161
|
+
if (results.length >= limit)
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return results;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get all cached contacts
|
|
169
|
+
*/
|
|
170
|
+
getAllContacts() {
|
|
171
|
+
return Array.from(this.contactsCache.values());
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get contacts count
|
|
175
|
+
*/
|
|
176
|
+
getContactsCount() {
|
|
177
|
+
return this.contactsCache.size;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Add contact ke cache
|
|
181
|
+
*/
|
|
182
|
+
cacheContact(info) {
|
|
183
|
+
this.contactsCache.set(info.jid, info);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Remove contact dari cache
|
|
187
|
+
*/
|
|
188
|
+
removeContact(jid) {
|
|
189
|
+
this.contactsCache.delete(jid);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Update contact name in cache
|
|
193
|
+
*/
|
|
194
|
+
updateContactName(jid, name) {
|
|
195
|
+
const contact = this.contactsCache.get(jid);
|
|
196
|
+
if (contact) {
|
|
197
|
+
contact.name = name;
|
|
198
|
+
this.contactsCache.set(jid, contact);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Clear all cached contacts
|
|
203
|
+
*/
|
|
204
|
+
clearCache() {
|
|
205
|
+
this.contactsCache.clear();
|
|
206
|
+
}
|
|
207
|
+
// ============== Helpers ==============
|
|
208
|
+
findChild(node, tag) {
|
|
209
|
+
if (!node || !Array.isArray(node.content))
|
|
210
|
+
return null;
|
|
211
|
+
for (const child of node.content) {
|
|
212
|
+
if (typeof child === 'object' && child?.tag === tag)
|
|
213
|
+
return child;
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
sendIqAndWait(node, id, timeoutMs = 30000) {
|
|
218
|
+
return new Promise((resolve, reject) => {
|
|
219
|
+
const timeout = setTimeout(() => reject(new Error(`IQ ${id} timeout`)), timeoutMs);
|
|
220
|
+
this.registerIqHandler(id, (response) => {
|
|
221
|
+
clearTimeout(timeout);
|
|
222
|
+
const type = response.attrs?.type;
|
|
223
|
+
if (type === 'error') {
|
|
224
|
+
reject(new Error(`IQ error: ${JSON.stringify(response.attrs)}`));
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
resolve(response);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
try {
|
|
231
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
clearTimeout(timeout);
|
|
235
|
+
reject(err);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.ContactsManager = ContactsManager;
|
|
241
|
+
//# sourceMappingURL=contacts-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts-manager.js","sourceRoot":"","sources":["../../src/community/contacts-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,iDAAiE;AAEjE,uEAAkE;AAClE,kDAAkD;AAoBlD,MAAa,eAAe;IAClB,IAAI,CAA6B;IACjC,iBAAiB,CAA4D;IAC7E,MAAM,CAAW;IACjB,MAAM,CAAU;IAChB,aAAa,GAA6B,IAAI,GAAG,EAAE,CAAC;IAE5D,YAAY,IAA4B;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,wBAAY,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,YAAsB;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE9C,sDAAsD;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE3D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,YAAsB;QAC/C,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAEjF,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,gBAAgB;gBACpB,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE;wBACL,GAAG,EAAE,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,aAAa;qBACvB;oBACD,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,OAAO;4BACZ,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE;gCACP,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;6BAC9B;yBACF;wBACD;4BACE,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;yBAC5D;qBACF;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,EAAE,GAAG,KAAK,MAAM;oBAAE,SAAS;gBACvE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;gBAChC,IAAI,CAAC,GAAG;oBAAE,SAAS;gBAEnB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,WAAW,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;gBACvD,MAAM,IAAI,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAExF,MAAM,IAAI,GAAgB;oBACxB,GAAG;oBACH,WAAW,EAAE,KAAK;oBAClB,IAAI;oBACJ,YAAY;iBACb,CAAC;gBAEF,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,WAAoB,IAAI;QAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC;QAE1D,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,GAAG;gBACH,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,YAAY,EAAE,KAAK;aACpB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE;QAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IACE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EACvB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;oBAAE,MAAM;YACrC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAiB;QAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAW,EAAE,IAAY;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,wCAAwC;IAEhC,SAAS,CAAC,IAAuB,EAAE,GAAW;QACpD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,IAAgB,EAAE,EAAU,EAAE,YAAoB,KAAK;QAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACnF,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACtC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;gBAClC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAjPD,0CAiPC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Disappearing Messages (Community Request)
|
|
3
|
+
*
|
|
4
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
5
|
+
* - Set disappearing messages timer per chat
|
|
6
|
+
* - Get current disappearing setting
|
|
7
|
+
* - Disable disappearing messages
|
|
8
|
+
* - Default disappearing timer
|
|
9
|
+
* - Disappearing messages for groups
|
|
10
|
+
*
|
|
11
|
+
* Fix Baileys issues:
|
|
12
|
+
* - Disappearing messages control tidak ada
|
|
13
|
+
* - Tidak bisa set timer per chat
|
|
14
|
+
*/
|
|
15
|
+
import type { JIDLike, WALogger } from '../types/index.js';
|
|
16
|
+
import { BinaryNode } from '../core/binary.js';
|
|
17
|
+
export type DisappearingTimer = 'off' | '24_hours' | '7_days' | '90_days';
|
|
18
|
+
export declare const TIMER_TO_SECONDS: Record<DisappearingTimer, number>;
|
|
19
|
+
export declare const SECONDS_TO_TIMER: Record<number, DisappearingTimer>;
|
|
20
|
+
export interface DisappearingManagerOptions {
|
|
21
|
+
send: (data: Uint8Array) => void;
|
|
22
|
+
registerIqHandler: (id: string, handler: (node: BinaryNode) => void) => void;
|
|
23
|
+
logger?: WALogger;
|
|
24
|
+
}
|
|
25
|
+
export declare class DisappearingManager {
|
|
26
|
+
private send;
|
|
27
|
+
private registerIqHandler;
|
|
28
|
+
private logger;
|
|
29
|
+
private settingsCache;
|
|
30
|
+
constructor(opts: DisappearingManagerOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Set disappearing messages timer untuk a chat
|
|
33
|
+
* Fix Baileys issue: tidak bisa set timer per chat
|
|
34
|
+
*/
|
|
35
|
+
setTimer(jid: JIDLike, timer: DisappearingTimer): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Disable disappearing messages untuk a chat
|
|
38
|
+
*/
|
|
39
|
+
disable(jid: JIDLike): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get current disappearing setting untuk a chat
|
|
42
|
+
*/
|
|
43
|
+
getSetting(jid: JIDLike, useCache?: boolean): Promise<DisappearingTimer>;
|
|
44
|
+
/**
|
|
45
|
+
* Set default disappearing timer untuk new chats
|
|
46
|
+
*/
|
|
47
|
+
setDefaultTimer(timer: DisappearingTimer): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Get all chats with disappearing messages enabled
|
|
50
|
+
*/
|
|
51
|
+
getDisappearingChats(): Array<{
|
|
52
|
+
jid: string;
|
|
53
|
+
timer: DisappearingTimer;
|
|
54
|
+
seconds: number;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Clear cache untuk a chat atau semua
|
|
58
|
+
*/
|
|
59
|
+
clearCache(jid?: JIDLike): void;
|
|
60
|
+
private findChild;
|
|
61
|
+
private sendIqAndWait;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=disappearing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disappearing.d.ts","sourceRoot":"","sources":["../../src/community/disappearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKjE,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;AAEd,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAK9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAK9D,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC;IAC7E,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,iBAAiB,CAA4D;IACrF,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,aAAa,CAAkC;gBAE3C,IAAI,EAAE,0BAA0B;IAM5C;;;OAGG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrE;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkCpF;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9D;;OAEG;IACH,oBAAoB,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAczF;;OAEG;IACH,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;IAU/B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Disappearing Messages (Community Request)
|
|
4
|
+
*
|
|
5
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
6
|
+
* - Set disappearing messages timer per chat
|
|
7
|
+
* - Get current disappearing setting
|
|
8
|
+
* - Disable disappearing messages
|
|
9
|
+
* - Default disappearing timer
|
|
10
|
+
* - Disappearing messages for groups
|
|
11
|
+
*
|
|
12
|
+
* Fix Baileys issues:
|
|
13
|
+
* - Disappearing messages control tidak ada
|
|
14
|
+
* - Tidak bisa set timer per chat
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DisappearingManager = exports.SECONDS_TO_TIMER = exports.TIMER_TO_SECONDS = void 0;
|
|
18
|
+
const binary_js_1 = require("../core/binary.js");
|
|
19
|
+
const jid_js_1 = require("../utils/jid.js");
|
|
20
|
+
const message_encoder_js_1 = require("../messages/message-encoder.js");
|
|
21
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
22
|
+
exports.TIMER_TO_SECONDS = {
|
|
23
|
+
off: 0,
|
|
24
|
+
'24_hours': 86400,
|
|
25
|
+
'7_days': 604800,
|
|
26
|
+
'90_days': 7776000
|
|
27
|
+
};
|
|
28
|
+
exports.SECONDS_TO_TIMER = {
|
|
29
|
+
0: 'off',
|
|
30
|
+
86400: '24_hours',
|
|
31
|
+
604800: '7_days',
|
|
32
|
+
7776000: '90_days'
|
|
33
|
+
};
|
|
34
|
+
class DisappearingManager {
|
|
35
|
+
send;
|
|
36
|
+
registerIqHandler;
|
|
37
|
+
logger;
|
|
38
|
+
settingsCache = new Map(); // chatJid -> seconds
|
|
39
|
+
constructor(opts) {
|
|
40
|
+
this.send = opts.send;
|
|
41
|
+
this.registerIqHandler = opts.registerIqHandler;
|
|
42
|
+
this.logger = opts.logger ?? new logger_js_1.SilentLogger();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Set disappearing messages timer untuk a chat
|
|
46
|
+
* Fix Baileys issue: tidak bisa set timer per chat
|
|
47
|
+
*/
|
|
48
|
+
async setTimer(jid, timer) {
|
|
49
|
+
const seconds = exports.TIMER_TO_SECONDS[timer];
|
|
50
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
51
|
+
const node = {
|
|
52
|
+
tag: 'iq',
|
|
53
|
+
attrs: {
|
|
54
|
+
type: 'set',
|
|
55
|
+
to: (0, jid_js_1.jidToString)(jid),
|
|
56
|
+
id
|
|
57
|
+
},
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
tag: 'ephemeral',
|
|
61
|
+
attrs: {
|
|
62
|
+
expiration: seconds.toString()
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
await this.sendIqAndWait(node, id);
|
|
68
|
+
this.settingsCache.set((0, jid_js_1.jidToString)(jid), seconds);
|
|
69
|
+
this.logger.info(`Set disappearing timer for ${(0, jid_js_1.jidToString)(jid)}: ${timer} (${seconds}s)`);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Disable disappearing messages untuk a chat
|
|
73
|
+
*/
|
|
74
|
+
async disable(jid) {
|
|
75
|
+
return this.setTimer(jid, 'off');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get current disappearing setting untuk a chat
|
|
79
|
+
*/
|
|
80
|
+
async getSetting(jid, useCache = true) {
|
|
81
|
+
const jidStr = (0, jid_js_1.jidToString)(jid);
|
|
82
|
+
if (useCache) {
|
|
83
|
+
const cached = this.settingsCache.get(jidStr);
|
|
84
|
+
if (cached !== undefined) {
|
|
85
|
+
return exports.SECONDS_TO_TIMER[cached] ?? 'off';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
89
|
+
const node = {
|
|
90
|
+
tag: 'iq',
|
|
91
|
+
attrs: {
|
|
92
|
+
type: 'get',
|
|
93
|
+
to: jidStr,
|
|
94
|
+
id
|
|
95
|
+
},
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
98
|
+
tag: 'ephemeral',
|
|
99
|
+
attrs: {}
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
};
|
|
103
|
+
const response = await this.sendIqAndWait(node, id);
|
|
104
|
+
const ephemeralNode = this.findChild(response, 'ephemeral');
|
|
105
|
+
const seconds = parseInt(ephemeralNode?.attrs?.expiration ?? '0', 10);
|
|
106
|
+
this.settingsCache.set(jidStr, seconds);
|
|
107
|
+
return exports.SECONDS_TO_TIMER[seconds] ?? 'off';
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Set default disappearing timer untuk new chats
|
|
111
|
+
*/
|
|
112
|
+
async setDefaultTimer(timer) {
|
|
113
|
+
const seconds = exports.TIMER_TO_SECONDS[timer];
|
|
114
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
115
|
+
const node = {
|
|
116
|
+
tag: 'iq',
|
|
117
|
+
attrs: {
|
|
118
|
+
type: 'set',
|
|
119
|
+
to: 's.whatsapp.net',
|
|
120
|
+
id
|
|
121
|
+
},
|
|
122
|
+
content: [
|
|
123
|
+
{
|
|
124
|
+
tag: 'default_ephemeral',
|
|
125
|
+
attrs: {
|
|
126
|
+
expiration: seconds.toString()
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
};
|
|
131
|
+
await this.sendIqAndWait(node, id);
|
|
132
|
+
this.logger.info(`Default disappearing timer set to ${timer}`);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get all chats with disappearing messages enabled
|
|
136
|
+
*/
|
|
137
|
+
getDisappearingChats() {
|
|
138
|
+
const result = [];
|
|
139
|
+
for (const [jid, seconds] of this.settingsCache.entries()) {
|
|
140
|
+
if (seconds > 0) {
|
|
141
|
+
result.push({
|
|
142
|
+
jid,
|
|
143
|
+
timer: exports.SECONDS_TO_TIMER[seconds] ?? 'off',
|
|
144
|
+
seconds
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Clear cache untuk a chat atau semua
|
|
152
|
+
*/
|
|
153
|
+
clearCache(jid) {
|
|
154
|
+
if (jid) {
|
|
155
|
+
this.settingsCache.delete((0, jid_js_1.jidToString)(jid));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.settingsCache.clear();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// ============== Helpers ==============
|
|
162
|
+
findChild(node, tag) {
|
|
163
|
+
if (!Array.isArray(node.content))
|
|
164
|
+
return null;
|
|
165
|
+
for (const child of node.content) {
|
|
166
|
+
if (typeof child === 'object' && child?.tag === tag)
|
|
167
|
+
return child;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
sendIqAndWait(node, id, timeoutMs = 15000) {
|
|
172
|
+
return new Promise((resolve, reject) => {
|
|
173
|
+
const timeout = setTimeout(() => reject(new Error(`IQ ${id} timeout`)), timeoutMs);
|
|
174
|
+
this.registerIqHandler(id, (response) => {
|
|
175
|
+
clearTimeout(timeout);
|
|
176
|
+
const type = response.attrs?.type;
|
|
177
|
+
if (type === 'error') {
|
|
178
|
+
reject(new Error(`IQ error: ${JSON.stringify(response.attrs)}`));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
resolve(response);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
try {
|
|
185
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
clearTimeout(timeout);
|
|
189
|
+
reject(err);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.DisappearingManager = DisappearingManager;
|
|
195
|
+
//# sourceMappingURL=disappearing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disappearing.js","sourceRoot":"","sources":["../../src/community/disappearing.ts"],"names":[],"mappings":"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"}
|