Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions WPP_Whatsapp/api/layers/ListenerLayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ async def _afterPageScriptInjectedListener(self):
if (!serialized) {
serialized = _safeSerialize(msg);
}
if (!serialized) {
if (serialized) {
window['onMessage'](serialized);
}
});
Expand All @@ -134,7 +134,7 @@ async def _afterPageScriptInjectedListener(self):
if (!serialized) {
serialized = _safeSerialize(msg);
}
if (!serialized) {
if (serialized) {
window['onAnyMessage'](serialized);
}
});
Expand Down
36 changes: 33 additions & 3 deletions WPP_Whatsapp/api/layers/RetrieverLayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,36 @@ async def getCommonGroups_(self, wid: str):
page=self.page)

async def getPnLidEntry_(self, phoneOrLid: str):
return await self.ThreadsafeBrowser.page_evaluate("(phoneOrLid) => WPP.contact.getPnLidEntry(phoneOrLid),",
phoneOrLid,
page=self.page)
"""
Returns the phone-number/LID mapping and contact info for a given WID.

For @c.us inputs: resolves the LID from local cache; if not cached,
performs a USync server lookup via queryExists and caches the result.

For @lid inputs: resolves the phone number from local lidPnCache; if not
cached, performs a USync server lookup via queryExists (one network
round-trip) so that the mapping can be used for future messages.
"""
return await self.ThreadsafeBrowser.page_evaluate(
"""async ({ phoneOrLid }) => {
const entry = await WPP.contact.getPnLidEntry(phoneOrLid);
if (entry && entry.phoneNumber) return entry;
// Not in local lidPnCache — fall back to a USync server lookup.
// Note: this makes one outbound request to WhatsApp servers.
const qr = await WPP.contact.queryExists(phoneOrLid);
if (qr && qr.wid) {
const w = qr.wid;
return {
...entry,
phoneNumber: {
id: w.user,
server: w.server,
_serialized: w._serialized || (w.user + '@' + w.server)
}
};
}
return entry;
}""",
{"phoneOrLid": phoneOrLid},
page=self.page
)
Loading