Count user connected devices (#3223)

* Update Store.js

* All

* Make Eslist god happy

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
Co-authored-by: Shir Serlui <70711723+shirser121@users.noreply.github.com>
This commit is contained in:
tuyuribr 2024-09-18 04:33:23 -03:00 • committed by GitHub
commit d2597bba72
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 35 additions and 3 deletions

View file

@ -450,6 +450,14 @@ client.on('message', async msg => {
*/
const result = await msg.pin(60); // Will pin a message for 1 minute
console.log(result); // True if the operation completed successfully, false otherwise
}else if (msg.body === '!howManyConnections'){
/**
* Get user device count by ID
* Each WaWeb Connection counts as one device, and the phone (if exists) counts as one
* So for a non-enterprise user with one WaWeb connection it should return "2"
*/
let deviceCount = await client.getContactDeviceCount(msg.from);
await msg.reply(`You have *${deviceCount}* devices connected`);
}
});

10
index.d.ts vendored
View file

@ -176,7 +176,15 @@ declare namespace WAWebJS {
* @param flag true/false on or off
*/
setAutoDownloadVideos(flag: boolean): Promise<void>
/**
* Get user device count by ID
* Each WaWeb Connection counts as one device, and the phone (if exists) counts as one
* So for a non-enterprise user with one WaWeb connection it should return "2"
* @param {string} contactId
*/
getContactDeviceCount(contactId: string): Promise<Number>
/** Changes and returns the archive state of the Chat */
unarchiveChat(chatId: string): Promise<boolean>

View file

@ -1617,8 +1617,8 @@ class Client extends EventEmitter {
* @returns {Promise<Array<GroupMembershipRequest>>} An array of membership requests
*/
async getGroupMembershipRequests(groupId) {
return await this.pupPage.evaluate(async (gropId) => {
const groupWid = window.Store.WidFactory.createWid(gropId);
return await this.pupPage.evaluate(async (groupId) => {
const groupWid = window.Store.WidFactory.createWid(groupId);
return await window.Store.MembershipRequestUtils.getMembershipApprovalRequests(groupWid);
}, groupId);
}
@ -1724,6 +1724,21 @@ class Client extends EventEmitter {
return flag;
}, flag);
}
/**
* Get user device count by ID
* Each WaWeb Connection counts as one device, and the phone (if exists) counts as one
* So for a non-enterprise user with one WaWeb connection it should return "2"
* @param {string} contactId
* @returns {number}
*/
async getContactDeviceCount(contactId) {
let devices = await window.Store.DeviceList.getDeviceIds([window.Store.WidFactory.createWid(contactId)]);
if(devices && devices.length && devices[0] != null && typeof devices[0].devices == 'object'){
return devices[0].devices.length;
}
return 0;
}
}
module.exports = Client;

View file

@ -97,6 +97,7 @@ exports.ExposeStore = () => {
window.Store.Settings = window.require('WAWebUserPrefsGeneral');
window.Store.BotSecret = window.require('WAWebBotMessageSecret');
window.Store.BotProfiles = window.require('WAWebBotProfileCollection');
window.Store.DeviceList = window.require('WAWebApiDeviceList');
if (window.compareWwebVersions(window.Debug.VERSION, '>=', '2.3000.1014111620'))
window.Store.AddonReactionTable = window.require('WAWebAddonReactionTableMode').reactionTableMode;