0% menganggap dokumen ini bermanfaat (0 suara)
54 tayangan26 halaman

Panduan Penggunaan WAPI untuk WhatsApp

Fungsi ini mendefinisikan metode WAPI untuk mengakses dan merangkum objek dari store WhatsApp seperti kontak, obrolan, dan pesan menjadi format JSON untuk digunakan di luar konteks halaman web. Fungsi ini mengekstrak, menyerialkan, dan mengembalikan objek-objek tersebut dari store ke objek window.WAPI. [/ringkasan]

Diunggah oleh

Armenia Rhojesta
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
54 tayangan26 halaman

Panduan Penggunaan WAPI untuk WhatsApp

Fungsi ini mendefinisikan metode WAPI untuk mengakses dan merangkum objek dari store WhatsApp seperti kontak, obrolan, dan pesan menjadi format JSON untuk digunakan di luar konteks halaman web. Fungsi ini mengekstrak, menyerialkan, dan mengembalikan objek-objek tersebut dari store ke objek window.WAPI. [/ringkasan]

Diunggah oleh

Armenia Rhojesta
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd

/**

* Skrip ini berisi fungsi WAPI yang harus dijalankan dalam konteks halaman web
*/

/**
* Penemuan otomatis referensi objek webpack dari instance yang berisi semua fungsi
yang digunakan oleh WAPI
* berfungsi dan membuat objek Store.
*/
jika (![Link]) {
(fungsi () {
fungsi getStore(modul) {
biarkan foundCount = 0;
biarkan Obyek yang dibutuhkan = [
{ id: "Store", kondisi: (modul) => ([Link] &&
[Link] && [Link]) ? [Link] : null },
{ id: "MediaCollection", kondisi: (modul) => ([Link] &&
[Link] && [Link]) ?
[Link] : null },
{ id: "Proses Media", kondisi: (modul) => ([Link]) ? modul :
null },
{ id: "Wap", kondisi: (modul) => ([Link]) ? modul :
null },
{ id: "ServiceWorker", kondisi: (module) => ([Link] &&
[Link]) ? modul : null },
{ id: "State", kondisi: (modul) => ([Link] &&
[Link]) ? modul : null },
{ id: "WapDelete", kondisi: (module) =>
([Link] && [Link] == 2) ?
modul : null },
{ id: "Conn", kondisi: (modul) => ([Link] &&
[Link] && [Link]) ? [Link] : null },
{ id: "WapQuery", kondisi: (modul) => ([Link]) ? modul :
(([Link] && [Link]) ? [Link] : null) },
{ id: "CryptoLib", kondisi: (modul) => (module.decryptE2EMedia) ?
modul : null },
{ id: "OpenChat", kondisi: (modul) => ([Link] &&
[Link] && [Link]) ? [Link] :
null },
{ id: "UserConstructor", kondisi: (module) => ([Link] &&
[Link] && [Link] &&
[Link]) ? [Link] : null },
{ id: "SendTextMsgToChat", kondisi: (module) =>
([Link]) ? [Link] : null },
{ id: "SendSeen", kondisi: (module) => ([Link]) ?
[Link] : null },
{ id: "sendDelete", kondisi: (module) => ([Link]) ?
[Link] : null }
];
untuk (biarkan idx dalam modul) {
if ((typeof modules[idx] === "objek") && (modules[idx] !== null)) {
[Link]((needObj) => {
jika (![Link] || [Link])
kembali;
biarkan needModule = [Link](modules[idx]);
if (neededModule !== null) {
ditemukan Hitung++;
[Link] = needModule;
}
});

if (foundCount == [Link]) {
merusak;
}
}
}

biarkan kebutuhanToko = [Link]((needObj) => [Link] ===


"Store");
[Link] = [Link] ? [Link] : {};
[Link]([Link](neededStore), 1);
[Link]((needObj) => {
if ([Link]) {
[Link][[Link]] = [Link];
}
});

[Link] = function (e) {


[Link](ini, ...argumen);
}

jendela [Link];
}

if (typeof webpackJsonp === 'fungsi') {


webpackJsonp([], {'parasit': (x, y, z) => getStore(z)}, ['parasit']);
} kalau tidak {
biarkan tag = new Date().getTime();
[Link]([
["parasit" + tag],
{

},
fungsi (o, e, t) {
biarkan modul = [];
untuk (biarkan idx di om) {
biarkan modul = o(idx);
[Link](modul);
}
getStore(modul);
}
]);
}

})();
}

[Link] = {
lastRead: {}
};

[Link]._serializeRawObj = (obj) => {


jika (obj) {
return [Link]();
}
kembali {}
};
/**
* Membuat serial objek obrolan
*
* Obyek Obrolan @param rawChat
* @returns {{}}
*/

[Link]._serializeChatObj = (obj) => {


if (obj == tidak terdefinisi) {
kembali nol;
}

kembalikan [Link]([Link]._serializeRawObj(obj), {
jenis : [Link],
isGroup : [Link],
kontak : obj['kontak'] ? [Link]._serializeContactObj(obj['kontak']):
null,
groupMetadata: obj["groupMetadata"] ?
[Link]._serializeRawObj(obj["groupMetadata"]): null,
kehadiran : obj["kehadiran"] ?
[Link]._serializeRawObj(obj["kehadiran"]): null,
pesan: null
});
};

[Link]._serializeContactObj = (obj) => {


if (obj == tidak terdefinisi) {
kembali nol;
}

kembalikan [Link]([Link]._serializeRawObj(obj), {
formattedName : [Link],
isHighLevelVerified: [Link],
isMe : [Link],
isMyContact : [Link],
isPSA : [Link],
isUser : [Link],
isVerified : [Link],
isWAContact : [Link],
profilePicThumbObj : [Link] ?
WAPI._serializeProfilePicThumb([Link]): {},
statusMute : [Link],
pesan: null
});
};

[Link]._serializeMessageObj = (obj) => {


if (obj == tidak terdefinisi) {
kembali nol;
}

kembalikan [Link]([Link]._serializeRawObj(obj), {
id : [Link]._serialized,
pengirim : obj["senderObj"] ? WAPI._serializeContactObj(obj["senderObj"]):
nol,
cap waktu : obj["t"],
isi : obj["tubuh"],
isGroupMsg : [Link],
isLink : [Link],
isMMS : [Link],
isMedia : [Link],
isNotification: [Link],
isPSA : [Link],
ketik : [Link],
obrolan : WAPI._serializeChatObj(obj['chat']),
chatId : [Link],
dikutipMsgObj : WAPI._serializeMessageObj(obj['_quotedMsgObj']),
mediaData : [Link]._serializeRawObj(obj['mediaData'])
});
};

[Link]._serializeNumberStatusObj = (obj) => {


if (obj == tidak terdefinisi) {
kembali nol;
}

mengembalikan [Link]({}, {
id : [Link],
status : [Link],
isBusiness : ([Link] === benar),
canReceiveMessage: ([Link] === 200)
});
};

[Link]._serializeProfilePicThumb = (obj) => {


if (obj == tidak terdefinisi) {
kembali nol;
}

mengembalikan [Link]({}, {
eurl : [Link],
id : [Link],
img : [Link],
imgFull: [Link],
mentah : [Link],
tag : [Link]
});
}

[Link] = function (nama, contactId) {


if (![Link](contactsId)) {
contactId = [contactsId];
}

return [Link](name, contactsId);


};

[Link] = function (groupId) {


groupId = typeof groupId == "string" ? groupId : groupId._serialized;
var grup = [Link](groupId);
kembalikan [Link]()
};

[Link] = fungsi (selesai) {


kontak const = [Link]((kontak) =>
WAPI._serializeContactObj(kontak));
if (selesai !== undefined) selesai(kontak);
kontak kembali;
};

/**
* Mengambil semua objek kontak dari toko, memfilternya
*
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Array|*} Daftar kontak
*/
[Link] = fungsi (selesai) {
const kontak = [Link]((kontak) => [Link] ===
true).map((kontak) => WAPI._serializeContactObj(kontak));
if (selesai !== undefined) selesai(kontak);
kontak kembali;
};

/**
* Mengambil objek kontak dari toko dengan ID
*
* @param id ID kontak
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {T|*} Objek kontak
*/
[Link] = function (id, selesai) {
const ditemukan = [Link](id);

if (selesai !== undefined) selesai([Link]._serializeContactObj(found))


kembali [Link]._serializeContactObj(ditemukan);
};

/**
* Mengambil semua objek obrolan dari toko
*
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Array|*} Daftar obrolan
*/
[Link] = fungsi (selesai) {
const obrolan = [Link]((obrolan) =>
WAPI._serializeChatObj(obrolan));

if (selesai !== undefined) selesai(obrolan);


kembali obrolan;
};

[Link] = fungsi (obrolan) {


kembali [Link] > 0;
};

[Link] = fungsi (selesai) {


const obrolan = [Link]([Link]).map((obrolan)
=> WAPI._serializeChatObj(obrolan));

if (selesai !== undefined) selesai(obrolan);


kembali obrolan;
};

/**
* Mengambil semua ID obrolan dari toko
*
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Array|*} Daftar id obrolan
*/
[Link] = fungsi (selesai) {
const chatIds = [Link]((chat) => [Link]._serialized ||
[Link]);

if (selesai !== undefined) selesai(chatIds);


kembali chatId;
};

/**
* Mengambil semua objek grup dari toko
*
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Array|*} Daftar obrolan
*/
[Link] = fungsi (selesai) {
grup const = [Link]((chat) => [Link]);

if (selesai !== undefined) selesai(grup);


kelompok kembali;
};

/**
* Mengambil objek obrolan dari toko dengan ID
*
* @param id ID obrolan
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {T|*} Objek obrolan
*/
[Link] = fungsi (id, selesai) {
id = typeof id == "string" ? id : id._serialized;
const ditemukan = [Link](id);
[Link] = ([Link]) ? [Link] : function
() { return [Link](ini, argumen); };
if (selesai !== undefined) selesai(ditemukan);
kembali ditemukan;
}

[Link] = fungsi (nama, selesai) {


const ditemukan = [Link]().find(val =>
[Link](name))
if (selesai !== undefined) selesai(ditemukan);
kembali ditemukan;
};

[Link] = function (picId, chatId, caption) {


var chatDatabase = [Link]('DATABASEPICBOT');
var msgWithImg = [Link]((msg) => [Link] == picId);

if (msgWithImg === undefined) {


kembali salah;
}
var chatSend = [Link](chatId);
if (chatSend === undefined) {
kembali salah;
}
constKeterangan lama = [Link];

[Link] = [Link]();
[Link] = chatId;
msgWithImg.t = [Link](new Date().getTime() / 1000);
[Link] = chatId;

if (caption !== undefined && caption !== '') {


[Link] = keterangan;
} kalau tidak {
[Link] = '';
}

[Link](msgWithImg).lalu(fungsi (e) {
[Link] = Keterangan lama;
});

kembali benar;
};

[Link] = function (thumb, url, title, description, text,


chatId, done) {
var chatSend = [Link](chatId);
if (chatSend === undefined) {
if (selesai !== undefined) selesai(false);
kembali salah;
}
var tautanPratinjau = {
canonicalUrl: url,
deskripsi : deskripsi,
matchedText : url,
judul : judul,
thumbnail : ibu jari,
menulis: benar
};
[Link](teks, { linkPreview: linkPreview,
disebutkanJidList: [],
dikutipMsg: nol,
dikutipMsgAdminGroupJid: null });
if (selesai !== undefined) selesai(benar);
kembali benar;
};

[Link] = fungsi () {
var teks = "";
var mungkin = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

untuk (var i = 0; i < 20; i++)


teks += [Link]([Link]([Link]() * [Link]));
kembali teks;
};

[Link] = fungsi (id, selesai) {


biarkan ditemukan = [Link](id);
jika ketemu) {
ditemukan = WAPI._serializeChatObj(ditemukan);
} kalau tidak {
ditemukan = salah;
}
if (selesai !== undefined) selesai(ditemukan);
kembali ditemukan;
};

/**
* Saya mengembalikan semua pesan yang belum dibaca dari obrolan yang diminta dan
menandainya sebagai sudah dibaca.
*
* :param id: id obrolan
* :ketik id: string
*
* :param includeMe: menunjukkan apakah pesan pengguna harus disertakan
* :ketik includeMe: boolean
*
* :param includeNotifications: menunjukkan apakah notifikasi harus disertakan
* :type includeNotifications: boolean
*
* :param selesai: panggilan balik diteruskan oleh Selenium
* :ketik selesai: fungsi
*
* :returns: daftar pesan yang belum dibaca dari chat yang ditanyakan
* :rtype: objek
*/
[Link] = function (id, includeMe,
includeNotifications, done) {
// dapatkan obrolan dan pesannya
biarkan obrolan = [Link](id);
biarkan pesan = [Link]._models;

// menginisialisasi daftar hasil


biarkan keluaran = [];

// cari pesan yang belum dibaca, yang terbaru ada di akhir array
for (biarkan i = [Link] - 1; i >= 0; i--) {
// pesan sistem: lewati saja
if (i === "hapus") {
melanjutkan;
}

// dapatkan pesan
biarkan pesanObj = pesan[i];

// menemukan pesan yang sudah dibaca: berhenti mencari orang lain


if (typeof ([Link]) !== "boolean" || [Link] ===
salah) {
melanjutkan;
} kalau tidak {
[Link] = false;
// mengolahnya
biarkan pesan = [Link](messageObj,
termasuk saya,
sertakan Pemberitahuan);

// simpan pesan yang diproses pada daftar hasil


jika (pesan)
[Link](pesan);
}
}
// callback diteruskan: jalankan
if (selesai !== undefined) selesai(output);
// mengembalikan daftar hasil
kembali keluaran;
}
;

/**
* Muat lebih banyak pesan di objek obrolan dari toko berdasarkan ID
*
* @param id ID obrolan
* @param selesai Fungsi callback opsional untuk eksekusi async
* @mengembalikan Tidak ada
*/
[Link] = fungsi (id, selesai) {
const ditemukan = [Link](id);
if (selesai !== undefined) {
[Link]().then(fungsi () {
selesai()
});
} kalau tidak {
[Link]();
}
};

/**
* Muat lebih banyak pesan di objek obrolan dari toko berdasarkan ID
*
* @param id ID obrolan
* @param selesai Fungsi callback opsional untuk eksekusi async
* @mengembalikan Tidak ada
*/
[Link] = fungsi (id, selesai) {
const ditemukan = [Link](id);
x = fungsi () {
if (![Link]) {
[Link]().then(x);
} lain jika (selesai) {
selesai();
}
};
x();
};

[Link] = fungsi (id, selesai) {


selesai();
[Link](id);
};

[Link] = fungsi (id, selesai) {


const ditemukan = [Link](id);
if (![Link]) {
jika (selesai) selesai (salah);
kembali salah
}
jika (selesai) selesai (benar);
kembali benar
};

/**
* Muat lebih banyak pesan di objek obrolan dari toko berdasarkan ID hingga tanggal
tertentu
*
* @param id ID obrolan
* @param lastMessage stempel waktu UTC dari pesan terakhir yang akan dimuat
* @param selesai Fungsi callback opsional untuk eksekusi async
* @mengembalikan Tidak ada
*/

[Link] = function (id, lastMessage, selesai) {


const ditemukan = [Link](id);
x = fungsi () {
if ([Link][0].t > lastMessage && !
[Link]) {
[Link]().then(x);
} kalau tidak {
selesai();
}
};
x();
};

/**
* Mengambil semua objek metadata grup dari toko
*
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Array|*} Daftar metadata grup
*/
[Link] = fungsi (selesai) {
const groupData = [Link]((groupData) => [Link]);

if (selesai !== undefined) selesai(groupData);


kembalikan groupData;
};

/**
* Mengambil objek metadata grup dari penyimpanan berdasarkan ID
*
* @param id ID grup
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {T|*} Objek metadata grup
*/
[Link] = fungsi async (id, selesai) {
biarkan output = [Link](id);

if (keluaran !== tidak terdefinisi) {


if ([Link]) {
menunggu [Link](id);
}
}

if (selesai !== undefined) selesai(output);


kembali keluaran;

};
/**
* Mengambil peserta grup
*
* @param id ID grup
* @returns {Janji.<*>} Menghasilkan metadata grup
* @pribadi
*/
[Link]._getGroupParticipants = fungsi async (id) {
const metadata = menunggu [Link](id);
mengembalikan [Link];
};

/**
* Mengambil ID peserta grup
*
* @param id ID grup
* @param selesai Fungsi callback opsional untuk eksekusi async
* @returns {Janji.<Array|*>} Menghasilkan daftar ID
*/
[Link] = fungsi async (id, selesai) {
output const = (menunggu WAPI._getGroupParticipants(id))
.map((peserta) => [Link]);

if (selesai !== undefined) selesai(output);


kembali keluaran;
};

[Link] = fungsi async (id, selesai) {


output const = (menunggu WAPI._getGroupParticipants(id))
.filter((peserta) => [Link])
.map((admin) => [Link]);

if (selesai !== undefined) selesai(output);


kembali keluaran;
};

/**
* Mendapat objek yang mewakili pengguna yang masuk
*
* @returns {Array|*|$[Link]}
*/
[Link] = fungsi (selesai) {
const rawMe = [Link]([Link]);

if (selesai !== undefined) selesai([Link]);


kembalikan [Link];
};

[Link] = fungsi (selesai) {


// Kontak selalu ada saat login
const isLogged = [Link] && [Link] !==
undefined;

if (selesai !== undefined) selesai(isLogged);


return isLogged;
};
[Link] = fungsi (selesai) {
// Ikon Telepon Terputus muncul saat telepon terputus dari tnternet
const isConnected = [Link]('*[data-icon="alert-phone"]') !==
null ? salah benar;

if (selesai !== undefined) selesai(terhubung);


kembali Terhubung;
};

[Link] = fungsi (messageObj, includeMe,


includeNotifications) {
if ([Link]) {
jika (termasuk Pemberitahuan)
kembalikan WAPI._serializeMessageObj(messageObj);
kalau tidak
kembali;
// Pesan sistem
// (yaitu "Pesan yang Anda kirim ke obrolan ini dan panggilan sekarang
diamankan dengan enkripsi ujung-ke-ujung...")
} else if ([Link] === false || includeMe) {
kembalikan WAPI._serializeMessageObj(messageObj);
}
kembali;
};

[Link] = function (id, includeMe, includeNotifications,


done) {
const obrolan = [Link](id);
biarkan keluaran = [];
const pesan = [Link]._models;

untuk (const i dalam pesan) {


if (i === "hapus") {
melanjutkan;
}
const messageObj = pesan[i];

biarkan pesan = [Link](messageObj, includeMe,


includeNotifications)
jika (pesan)
[Link](pesan);
}
if (selesai !== undefined) selesai(output);
kembali keluaran;
};

[Link] = function (id, includeMe, includeNotifications,


done) {
const obrolan = [Link](id);
biarkan keluaran = [];
const pesan = [Link]._models;

untuk (const i dalam pesan) {


jika ((i === "hapus")
|| (!includeMe && pesan[i].isMe)
|| (!includeNotifications && messages[i].isNotification)) {
melanjutkan;
}
[Link](messages[i].id._serialized);
}
if (selesai !== undefined) selesai(output);
kembali keluaran;
};

[Link] = function (id, selesai) {


biarkan hasil = salah;
mencoba {
biarkan msg = [Link](id);
jika (pesan) {
hasil = [Link](pesan, benar, benar);
}
} tangkap (err) {}

if (selesai !== undefined) {


selesai(hasil);
} kalau tidak {
mengembalikan hasil;
}
};

[Link] = fungsi (idMessage, pesan, selesai) {


var messageObject = [Link](idMessage);
if (messageObject === tidak terdefinisi) {
if (selesai !== undefined) selesai(false);
kembali salah;
}
messageObject = [Link]();

const obrolan = [Link]([Link])


if (obrolan !== tidak terdefinisi) {
if (selesai !== undefined) {
[Link](pesan, null, pesanObjek).lalu(fungsi () {
fungsi tidur(ms) {
kembalikan Janji baru(resolve => setTimeout(resolve, ms));
}

var percobaan = 0;

pemeriksaan fungsi() {
for (biarkan i = [Link] - 1; i >= 0; i--) {
biarkan msg = [Link][i];

if (![Link] || [Link] != pesan) {


melanjutkan;
}
selesai(WAPI._serializeMessageObj(msg));
kembali Benar;
}
percobaan += 1;
[Link](percobaan);
if (percobaan > 30) {
selesai(benar);
kembali;
}
tidur(500).lalu(periksa);
}
memeriksa();
});
kembali benar;
} kalau tidak {
[Link](pesan, null, objekpesan);
kembali benar;
}
} kalau tidak {
if (selesai !== undefined) selesai(false);
kembali salah;
}
};

[Link] = fungsi (id, pesan, selesai) {


mencoba {
[Link] = (id) => {
return [Link](id);
}
[Link](id).lalu(kontak => {
if ([Link] === 404) {
selesai(benar);
} kalau tidak {
[Link]([Link]).then(chat => {
[Link] Pesan(pesan);
kembali benar;
}).catch(tolak => {
if ([Link](id, pesan)) {
selesai(benar);
kembali benar;
}kalau tidak{
selesai (salah);
kembali salah;
}
});
}
});
} tangkap (e) {
jika ([Link] === 0)
kembali salah;

firstChat = [Link][0];
var originalID = [Link];
[Link] = typeof originalID === "string" ? id : jendela
[Link](id, { sengajaUsePrivateConstructor: true });
if (selesai !== undefined) {
[Link](pesan).lalu(fungsi () {
[Link] = ID asli;
selesai(benar);
});
kembali benar;
} kalau tidak {
[Link](pesan);
[Link] = ID asli;
kembali benar;
}
}
if (selesai !== undefined) selesai(false);
kembali salah;
}

[Link] = fungsi (id, pesan, selesai) {


var obrolan = [Link](id);
if (obrolan !== tidak terdefinisi) {
if (selesai !== undefined) {
[Link](pesan).lalu(fungsi () {
fungsi tidur(ms) {
kembalikan Janji baru(resolve => setTimeout(resolve, ms));
}

var percobaan = 0;

pemeriksaan fungsi() {
for (biarkan i = [Link] - 1; i >= 0; i--) {
biarkan msg = [Link][i];

if (![Link] || [Link] != pesan) {


melanjutkan;
}
selesai(WAPI._serializeMessageObj(msg));
kembali Benar;
}
percobaan += 1;
[Link](percobaan);
if (percobaan > 30) {
selesai(benar);
kembali;
}
tidur(500).lalu(periksa);
}
memeriksa();
});
kembali benar;
} kalau tidak {
[Link] Pesan(pesan);
kembali benar;
}
} kalau tidak {
if (selesai !== undefined) selesai(false);
kembali salah;
}
};

[Link].sendMessage2 = fungsi (id, pesan, selesai) {


var obrolan = [Link](id);
if (obrolan !== tidak terdefinisi) {
mencoba {
if (selesai !== undefined) {
[Link](pesan).lalu(fungsi () {
selesai(benar);
});
} kalau tidak {
[Link] Pesan(pesan);
}
kembali benar;
} tangkap (kesalahan) {
jika (selesai !== tidak terdefinisi) selesai (salah)
kembali salah;
}
}
jika (selesai !== tidak terdefinisi) selesai (salah)
kembali salah;
};

[Link] = fungsi (id, selesai) {


var obrolan = [Link](id);
if (obrolan !== tidak terdefinisi) {
if (selesai !== undefined) {
jika ([Link] === tidak terdefinisi)
[Link] = fungsi () { };
[Link](obrolan, salah).lalu(fungsi () {
selesai(benar);
});
kembali benar;
} kalau tidak {
[Link](chat, false);
kembali benar;
}
}
if (selesai !== undefined) selesai();
kembali salah;
};

function isChatMessage(pesan) {
jika ([Link]) {
kembali salah;
}
if ([Link]) {
kembali salah;
}
if (![Link]) {
kembali salah;
}
kembali benar;
}

[Link] = function (includeMe, includeNotifications,


use_unread_count, done) {
const obrolan = [Link];
biarkan keluaran = [];

untuk (biarkan obrolan dalam obrolan) {


if (isNaN(obrolan)) {
melanjutkan;
}

biarkan messageGroupObj = obrolan[obrolan];


biarkan messageGroup = WAPI._serializeChatObj(messageGroupObj);

[Link] = [];

const pesan = [Link]._models;


for (biarkan i = [Link] - 1; i >= 0; i--) {
biarkan pesanObj = pesan[i];
if (typeof ([Link]) != "boolean" || [Link]
=== salah) {
melanjutkan;
} kalau tidak {
[Link] = false;
biarkan pesan = [Link](messageObj, includeMe,
includeNotifications);
jika (pesan) {
[Link](pesan);
}
}
}

if ([Link] > 0) {
[Link](messageGroup);
} else { // tidak ada pesan dengan isNewMsg benar
jika (use_unread_count) {
biarkan n = [Link]; // akan menggunakan
atribut unreadCount untuk mengambil n pesan terakhir dari pengirim
for (biarkan i = [Link] - 1; i >= 0; i--) {
biarkan pesanObj = pesan[i];
jika (n > 0) {
if (![Link]) {
biarkan pesan = [Link](messageObj,
includeMe, includeNotifications);
[Link](message);
n -= 1;
}
} else if (n === -1) { // obrolan ditandai sebagai belum dibaca
sehingga akan mengambil pesan terakhir sebagai belum dibaca
if (![Link]) {
biarkan pesan = [Link](messageObj,
includeMe, includeNotifications);
[Link](message);
merusak;
}
} else { // unreadCount = 0
merusak;
}
}
if ([Link] > 0) {
[Link] = 0; // setel ulang penghitung yang
belum dibaca
[Link](messageGroup);
}
}
}
}
if (selesai !== undefined) {
selesai (keluaran);
}
kembali keluaran;
};

[Link] = fungsi async (id, selesai) {


output const = (menunggu [Link](id)).[Link];
if (selesai !== undefined) {
selesai (keluaran);
}
kembali keluaran;

};

[Link] = fungsi async (id, selesai) {


biarkan keluaran = [];

grup = [Link]();

untuk (biarkan idx dalam grup) {


mencoba {
peserta = menunggu [Link](groups[idx].id);
if ([Link]((peserta) => peserta == id).panjang) {
[Link](grup[idx]);
}
} tangkap (err) {
[Link]("Kesalahan dalam grup:");
[Link](grup[idx]);
[Link](err);
}
}

if (selesai !== undefined) {


selesai (keluaran);
}
kembali keluaran;
};

[Link] = fungsi (id, selesai) {


[Link](id).kemudian(fungsi (d) {
if ([Link] !== tidak terdefinisi) {
[Link]([Link], selesai);
} kalau tidak {
selesai (salah);
}
}, fungsi (e) {
selesai (salah);
})
};

[Link] = fungsi (id, selesai) {


[Link](id).kemudian(fungsi (d) {
if ([Link] !== undefined) {
[Link]([Link], selesai);
} kalau tidak {
selesai (salah);
}
}, fungsi (e) {
selesai (salah);
})
};

[Link] = fungsi (url, selesai) {


biarkan xhr = new XMLHttpRequest();

[Link] = fungsi () {
jika ([Link] == 4) {
if ([Link] == 200) {
biarkan pembaca = new FileReader();
[Link]([Link]);
[Link] = fungsi (e) {
selesai([Link]([Link](',') + 1))
};
} kalau tidak {
[Link]([Link]);
}
} kalau tidak {
[Link](err);
selesai (salah);
}
};

[Link]("DAPATKAN", url, benar);


[Link] = true;
[Link] = 'gumpalan';
[Link](null);
};

[Link] = fungsi (url, selesai) {


biarkan xhr = new XMLHttpRequest();

[Link] = fungsi () {
jika ([Link] == 4) {
if ([Link] == 200) {
biarkan pembaca = new FileReader();
[Link]([Link]);
[Link] = fungsi (e) {
selesai([Link]([Link](',') + 1))
};
} kalau tidak {
[Link]([Link]);
}
} kalau tidak {
[Link](err);
selesai (salah);
}
};

[Link]("DAPATKAN", url, benar);


[Link] = 'gumpalan';
[Link](null);
};

[Link] = fungsi (selesai) {


if ([Link]) {
if (selesai !== undefined) {
selesai(100);
}
mengembalikan 100;
}
output = [Link];
if (selesai !== undefined) {
selesai (keluaran);
}
kembali keluaran;
};

[Link] = fungsi (chatId, selesai) {


biarkan userId = jendela [Link](chatId,
{intentionallyUsePrivateConstructor: true});
biarkan percakapan = [Link](userId);

if (! percakapan) {
if (selesai !== undefined) {
selesai (salah);
}
kembali salah;
}

[Link](percakapan, false).then(() => {


if (selesai !== undefined) {
selesai(benar);
}
}).catch(() => {
if (selesai !== undefined) {
selesai (salah);
}
});

kembali benar;
};

[Link] = function (chatId, messageArray, cabut=false, selesai) {


biarkan userId = jendela [Link](chatId,
{intentionallyUsePrivateConstructor: true});
biarkan percakapan = [Link](userId);

jika(!percakapan) {
if(selesai !== undefined) {
selesai (salah);
}
kembali salah;
}

if (![Link](messageArray)) {
PesanArray = [PesanArray];
}
biarkan pesanToDelete = [Link](msgId => [Link](msgId));

jika (cabut) {
[Link](messagesToDelete, percakapan);
} kalau tidak {
[Link](messagesToDelete, percakapan);
}

if (selesai !== undefined) {


selesai(benar);
}

kembali benar;
};

[Link] = fungsi (id, selesai) {


[Link](id).kemudian((hasil) => {
jika( selesai !== tidak terdefinisi) {
if ([Link] === undefined) lempar 404;
selesai([Link]._serializeNumberStatusObj(hasil));
}
}).catch((e) => {
if (selesai !== undefined) {
selesai([Link]._serializeNumberStatusObj({
keadaan: e,
jid : id
}));
}
});

kembali benar;
};

/**
* Pesan baru fungsi yang dapat diamati.
*/
[Link]._newMessagesQueue = [];
[Link]._newMessagesBuffer = ([Link]('saved_msgs') != null) ?
[Link]([Link]('saved_msgs')) : [];
[Link]._newMessagesDebouncer = null;
[Link]._newMessagesCallbacks = [];

[Link]('tambahkan');
[Link]('saved_msgs');

[Link]._newMessagesListener = [Link]('tambahkan', (pesanbaru)


=> {
if (PesanBaru && [Link] && ![Link]) {
biarkan pesan = [Link](newMessage, false, false);
jika (pesan) {
[Link]._newMessagesQueue.push(pesan);
[Link]._newMessagesBuffer.push(pesan);
}

// Memulai waktu debouncer untuk tidak memanggil panggilan balik untuk


setiap pesan jika lebih dari satu pesan masuk
// di detik yang sama
if (![Link]._newMessagesDebouncer &&
[Link]._newMessagesQueue.length > 0) {
[Link]._newMessagesDebouncer = setTimeout(() => {
biarkan queuedMessages = [Link]._newMessagesQueue;

[Link]._newMessagesDebouncer = null;
[Link]._newMessagesQueue = [];

biarkan hapusCallbacks = [];

[Link]._newMessagesCallbacks.forEach(fungsi (callbackObj) {
if ([Link] !== undefined) {
[Link](queuedMessages);
}
jika ([Link] === benar) {
[Link](callbackObj);
}
});

// Hapus panggilan balik yang dapat dilepas.


[Link](fungsi (rmCallbackObj) {
biarkan callbackIndex =
[Link]._newMessagesCallbacks.indexOf(rmCallbackObj);
[Link]._newMessagesCallbacks.splice(callbackIndex, 1);
});
}, 1000);
}
}
});

[Link]._unloadInform = (acara) => {


// Simpan di buffer pesan yang belum dibaca
[Link]._newMessagesBuffer.forEach((pesan) => {
[Link](message).forEach(key => pesan[kunci] === undefined ? hapus
pesan[kunci] : '');
});
[Link]("saved_msgs",
[Link]([Link]._newMessagesBuffer));

// Beri tahu callback bahwa halaman akan dimuat ulang.


[Link]._newMessagesCallbacks.forEach(fungsi (callbackObj) {
if ([Link] !== undefined) {
[Link]({ status: -1, pesan: 'halaman akan dimuat ulang,
tunggu dan daftarkan panggilan balik lagi.' });
}
});
};

[Link]("unload", [Link]._unloadInform, false);


[Link]("beforeunload", [Link]._unloadInform, false);
[Link]("pageunload", [Link]._unloadInform, false);

/**
* Mendaftarkan panggilan balik untuk dipanggil saat pesan baru tiba di WAPI.
* @param rmCallbackAfterUse - Boolean - Tentukan apakah callback hanya perlu
dijalankan sekali
* @param selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan baru
tiba.
* @returns {boolean}
*/
[Link] = fungsi (rmCallbackAfterUse = true, selesai) {
[Link]._newMessagesCallbacks.push({ callback: selesai, rmAfterUse:
rmCallbackAfterUse });
kembali benar;
};

/**
* Membaca pesan baru buffered.
* @param selesai - fungsi - Fungsi panggilan balik untuk dipanggil berisi pesan
buffer.
* @returns {Array}
*/
[Link] = fungsi (selesai) {
biarkan bufferedMessages = [Link]._newMessagesBuffer;
[Link]._newMessagesBuffer = [];
if (selesai !== undefined) {
selesai(bufferedMessages);
}
kembali pesan buffered;
};
/** Mengakhiri pesan baru fungsi yang dapat diamati **/
[Link] = function (imgBase64, chatid, nama file, caption, selesai) {
//var idUser = jendela [Link](chatid);
var idUser = jendela [Link](chatid,
{ sengajaUsePrivateConstructor: true });
// buat obrolan baru
return [Link](idUser).then((chat) => {
var mediaBlob = [Link].base64ImageToFile(imgBase64, namafile);
var mc = [Link](obrolan);
[Link]([{file: mediaBlob}, 1], obrolan, 1).then(() => {
var media = [Link][0];
[Link](obrolan, { keterangan: keterangan });
if (selesai !== undefined) selesai(benar);
});
});
}

[Link].base64ImageToFile = function (b64Data, nama file) {


var arr = [Link](',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]);
var n = [Link];
var u8arr = new Uint8Array(n);

sementara (n--) {
u8arr[n] = [Link](n);
}

kembalikan File baru ([u8arr], nama file, {type: mime});


};

/**
* Kirim kartu kontak ke obrolan tertentu menggunakan id obrolan
*
* @param {string} ke '000000000000@[Link]'
* @param {string|array} kontak '111111111111@[Link]' | ['222222222222@[Link]',
'333333333333@[Link], ... 'nnnnnnnnnnnn@[Link]']
*/
[Link] = fungsi (untuk, kontak) {
if (![Link](kontak)) {
kontak = [kontak];
}
kontak = [Link]((c) => {
return [Link](c).__x_contact;
});

if (panjang kontak > 1) {


[Link](ke).sendContactList(kontak);
} lain jika ([Link] === 1) {
[Link](ke).sendContact(kontak[0]);
}
};

/**
* Buat ID obrolan berdasarkan yang dikloning
*
* @param {string} chatId '000000000000@[Link]'
*/
[Link] = function (chatId) {
var newMsgId = [Link][0].__x_id.clone();
[Link] = true;
[Link] = [Link]().toUpperCase();
[Link] = chatId;
newMsgId._serialized = `${[Link]}_${[Link]}_${[Link]}`

return newMsgId;
};

/**
* Kirim VCard Khusus tanpa perlu kontak menjadi Kontak Whatsapp
*
* @param {string} chatId '000000000000@[Link]'
* @param {objek|array} vcard { displayName: 'Nama Kontak', vcard: 'BEGIN:VCARD\
nVERSION:3.0\nN:;Nama Kontak;;;\nEND:VCARD' } | [{ displayName: 'Nama Kontak 1',
vcard: 'BEGIN:VCARD\nVERSI:3.0\nN:;Nama Kontak 1;;;\nEND:VCARD' }, { displayName:
'Nama Kontak 2', vcard: 'BEGIN :VCARD\nVERSION:3.0\nN:;Nama Kontak 2;;;\nEND:VCARD'
}]
*/
[Link] = function (chatId, vcard) {
var obrolan = [Link](chatId);
var tempMsg = [Link]([Link](msg => msg.__x_isSentByMe)
[0]);
var newId = [Link](chatId);

var memperpanjang = {
ack : 0,
id : id baru,
lokal : !0,
diri : "keluar",
t : parseInt(new Date().getTime() / 1000),
ke : chatId,
isNewMsg: !0,
};

if ([Link](vcard)) {
[Link](memperpanjang, {
ketik : "multi_vcard",
vcardList: vcard
});

hapus [Link];
} kalau tidak {
[Link](memperpanjang, {
ketik : "vcard",
subtipe: [Link],
body : [Link]
});

hapus [Link];
}

[Link](tempMsg, perpanjang);

[Link](tempMsg);
};
/**
* Blokir kontak
* @param {string} id '000000000000@[Link]'
* @param {*} selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan
baru masuk.
*/
[Link] = fungsi (id, selesai) {
kontak const = [Link](id);
if (kontak !== undefined) {
[Link](!0);
selesai(benar);
kembali benar;
}
selesai (salah);
kembali salah;
}
/**
* buka Blokir kontak
* @param {string} id '000000000000@[Link]'
* @param {*} selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan
baru masuk.
*/
[Link] = fungsi (id, selesai) {
kontak const = [Link](id);
if (kontak !== undefined) {
[Link](!1);
selesai(benar);
kembali benar;
}
selesai (salah);
kembali salah;
}

/**
* Hapus peserta Grup
* @param {*} idGroup '0000000000-00000000@[Link]'
* @param {*} idParticipant '000000000000@[Link]'
* @param {*} selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan
baru masuk.
*/
[Link] = function (idGroup, idParticipant, selesai) {
[Link](idGroup, [idParticipant]).then(() => {
const metaDataGroup = [Link](id)
checkParticipant = [Link]._index[idParticipant];
if (checkParticipant === undefined) {
selesai(benar); kembali benar;
}
})
}

/**
* Promosikan Peserta menjadi Admin di Grup
* @param {*} idGroup '0000000000-00000000@[Link]'
* @param {*} idParticipant '000000000000@[Link]'
* @param {*} selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan
baru masuk.
*/
[Link] = function (idGroup, idParticipant,
selesai) {
[Link](idGroup, [idParticipant]).then(() =>
{
const metaDataGroup = [Link](id)
checkParticipant = [Link]._index[idParticipant];
if (checkParticipant !== undefined && [Link]) {
selesai(benar); kembali benar;
}
selesai (salah); kembali salah;
})
}

/**
* Turunkan Admin Grup
* @param {*} idGroup '0000000000-00000000@[Link]'
* @param {*} idParticipant '000000000000@[Link]'
* @param {*} selesai - fungsi - Fungsi panggilan balik untuk dipanggil saat pesan
baru masuk.
*/
[Link] = function (idGroup, idParticipant,
selesai) {
[Link](idGroup, [idParticipant]).then(() => {
const metaDataGroup = [Link](id)
if (metaDataGroup === tidak terdefinisi) {
selesai (salah); kembali salah;
}
checkParticipant = [Link]._index[idParticipant];
if (checkParticipant !== undefined && [Link]) {
selesai (salah); kembali salah;
}
selesai(benar); kembali benar;
})
}

Anda mungkin juga menyukai