Store
by Hw
19
Raw
const store = {
contacts: new Map(),
chats: new Map(),
messages: new Map(),
saveMessage(jid, id, message, expireMs = 1200000) {
if (!jid || !id || !message) return false;
if (!this.messages.has(jid)) this.messages.set(jid, new Map());
const msgs = this.messages.get(jid);
if (msgs.has(id)) clearTimeout(msgs.get(id).timer);
msgs.set(id, {
data: message,
timer: setTimeout(() => {
msgs.delete(id);
if (!msgs.size) this.messages.delete(jid);
}, expireMs),
savedAt: Date.now()
});
return true;
},
loadMessage(jid, id) {
return this.messages.get(jid)?.get(id)?.data;
},
hasMessage(jid, id) {
return !!this.messages.get(jid)?.has(id);
},
deleteMessage(jid, id) {
const msgs = this.messages.get(jid);
if (!msgs?.has(id)) return false;
clearTimeout(msgs.get(id).timer);
msgs.delete(id);
if (!msgs.size) this.messages.delete(jid);
return true;
},
flushMessages() {
this.messages.forEach(msgs => msgs.forEach(m => clearTimeout(m.timer)));
this.messages.clear();
}
};