whatsapp-store-db 1.3.43 → 1.3.44

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.
@@ -8,17 +8,41 @@ function chatHandler(sessionId, event, getJid = undefined) {
8
8
  const prisma = (0, shared_1.usePrisma)();
9
9
  const logger = (0, shared_1.useLogger)();
10
10
  let listening = false;
11
+ /**
12
+ * Resolves a chat ID, converting LID format to phone number format when possible.
13
+ * Returns an object with both the resolved ID and the original LID (if conversion happened).
14
+ */
11
15
  const resolveChatId = (id, chatOrUpdate) => {
16
+ var _a;
17
+ // Convert null to undefined for consistent typing
18
+ const originalLid = id !== null && id !== void 0 ? id : undefined;
12
19
  // console.log("chatHandler:chatOrUpdate:", chatOrUpdate);
13
20
  // Prefer primary number JID when id is a LID
14
21
  if (id === null || id === void 0 ? void 0 : id.endsWith('@lid')) {
22
+ // First, check chat-level fields
15
23
  const candidate = (chatOrUpdate === null || chatOrUpdate === void 0 ? void 0 : chatOrUpdate.pnJid) || (chatOrUpdate === null || chatOrUpdate === void 0 ? void 0 : chatOrUpdate.senderPn) || (chatOrUpdate === null || chatOrUpdate === void 0 ? void 0 : chatOrUpdate.jid);
16
- if (candidate) {
17
- return (0, baileys_1.jidNormalizedUser)(candidate);
24
+ if (candidate && candidate.includes('@s.whatsapp.net')) {
25
+ return { resolvedId: (0, baileys_1.jidNormalizedUser)(candidate), lidJid: originalLid };
26
+ }
27
+ // Second, try to extract from messages array (remoteJidAlt in message key)
28
+ const messages = chatOrUpdate === null || chatOrUpdate === void 0 ? void 0 : chatOrUpdate.messages;
29
+ if (Array.isArray(messages) && messages.length > 0) {
30
+ for (const msg of messages) {
31
+ const msgObj = (msg === null || msg === void 0 ? void 0 : msg.message) || msg;
32
+ const key = msgObj === null || msgObj === void 0 ? void 0 : msgObj.key;
33
+ if ((_a = key === null || key === void 0 ? void 0 : key.remoteJidAlt) === null || _a === void 0 ? void 0 : _a.includes('@s.whatsapp.net')) {
34
+ return { resolvedId: (0, baileys_1.jidNormalizedUser)(key.remoteJidAlt), lidJid: originalLid };
35
+ }
36
+ }
37
+ }
38
+ // Try getJid function as fallback
39
+ const jidByLid = typeof getJid === 'function' ? getJid(id || '') : undefined;
40
+ if (jidByLid && jidByLid.includes('@s.whatsapp.net')) {
41
+ return { resolvedId: (0, baileys_1.jidNormalizedUser)(jidByLid), lidJid: originalLid };
18
42
  }
19
43
  }
20
44
  const jidByLid = typeof getJid === 'function' ? getJid(id || '') : undefined;
21
- return (0, baileys_1.jidNormalizedUser)(jidByLid !== null && jidByLid !== void 0 ? jidByLid : id);
45
+ return { resolvedId: (0, baileys_1.jidNormalizedUser)(jidByLid !== null && jidByLid !== void 0 ? jidByLid : id) };
22
46
  };
23
47
  const persistChatRecord = async ({ id, createData, updateData, }) => {
24
48
  const where = { sessionId, id };
@@ -56,10 +80,14 @@ function chatHandler(sessionId, event, getJid = undefined) {
56
80
  // Process chats in batches to avoid timeout
57
81
  const BATCH_SIZE = 100;
58
82
  const normalizedChats = chats.map((c) => {
59
- const id = resolveChatId(c.id, c);
83
+ const { resolvedId, lidJid } = resolveChatId(c.id, c);
60
84
  const transformedData = (0, utils_1.transformPrisma)(c);
61
85
  const validatedData = (0, utils_1.validateChatData)(transformedData);
62
- return Object.assign(Object.assign({}, validatedData), { id });
86
+ // Set lidJid if we resolved from LID to phone number
87
+ if (lidJid) {
88
+ validatedData.lidJid = lidJid;
89
+ }
90
+ return Object.assign(Object.assign({}, validatedData), { id: resolvedId });
63
91
  });
64
92
  const existingIds = (await tx.chat.findMany({
65
93
  select: { id: true },
@@ -88,10 +116,14 @@ function chatHandler(sessionId, event, getJid = undefined) {
88
116
  // Normalize and de-duplicate by resolved id (keep the last occurrence)
89
117
  const dedupedById = new Map();
90
118
  for (const c of chats) {
91
- const id = resolveChatId(c.id, c);
119
+ const { resolvedId, lidJid } = resolveChatId(c.id, c);
92
120
  const transformedData = (0, utils_1.transformPrisma)(c);
93
121
  const validatedData = (0, utils_1.validateChatData)(transformedData);
94
- dedupedById.set(id, Object.assign(Object.assign({}, validatedData), { id }));
122
+ // Set lidJid if we resolved from LID to phone number
123
+ if (lidJid) {
124
+ validatedData.lidJid = lidJid;
125
+ }
126
+ dedupedById.set(resolvedId, Object.assign(Object.assign({}, validatedData), { id: resolvedId }));
95
127
  }
96
128
  const normalizedChats = Array.from(dedupedById.values());
97
129
  await Promise.all(normalizedChats.map((data) => persistChatRecord({
@@ -111,9 +143,13 @@ function chatHandler(sessionId, event, getJid = undefined) {
111
143
  continue;
112
144
  }
113
145
  try {
114
- const chatId = resolveChatId(update.id, update);
146
+ const { resolvedId: chatId, lidJid } = resolveChatId(update.id, update);
115
147
  const transformedData = (0, utils_1.transformPrisma)(update);
116
148
  const validatedData = (0, utils_1.validateChatData)(transformedData);
149
+ // Set lidJid if we resolved from LID to phone number
150
+ if (lidJid) {
151
+ validatedData.lidJid = lidJid;
152
+ }
117
153
  await persistChatRecord({
118
154
  id: chatId,
119
155
  createData: Object.assign(Object.assign({}, validatedData), { id: chatId }),
@@ -131,7 +167,7 @@ function chatHandler(sessionId, event, getJid = undefined) {
131
167
  };
132
168
  const del = async (ids) => {
133
169
  try {
134
- const normalizedIds = ids.map((id) => resolveChatId(id));
170
+ const normalizedIds = ids.map((id) => resolveChatId(id).resolvedId);
135
171
  await prisma.chat.deleteMany({
136
172
  where: { id: { in: normalizedIds } },
137
173
  });
@@ -146,7 +182,7 @@ function chatHandler(sessionId, event, getJid = undefined) {
146
182
  event.on('messaging-history.set', set);
147
183
  event.on('chats.upsert', upsert);
148
184
  event.on('chats.update', update);
149
- event.on('chats.delete', del);
185
+ // event.on('chats.delete', del);
150
186
  listening = true;
151
187
  };
152
188
  const unlisten = () => {
@@ -155,7 +191,7 @@ function chatHandler(sessionId, event, getJid = undefined) {
155
191
  event.off('messaging-history.set', set);
156
192
  event.off('chats.upsert', upsert);
157
193
  event.off('chats.update', update);
158
- event.off('chats.delete', del);
194
+ // event.off('chats.delete', del);
159
195
  listening = false;
160
196
  };
161
197
  return { listen, unlisten };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whatsapp-store-db",
3
- "version": "1.3.43",
3
+ "version": "1.3.44",
4
4
  "description": "Minimal Baileys data storage for your favorite DBMS built with Prisma",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",