-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmessageStore.js
More file actions
86 lines (73 loc) · 2.74 KB
/
messageStore.js
File metadata and controls
86 lines (73 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// messageStore.js - Version single-user
class MessageStore {
constructor() {
this.messageCache = new Map();
this.setupCleanupInterval();
}
// ⭐ MODIFICATION: Supprimer phoneNumber
async storeMessage(msg, content = '', mediaInfo = null) {
try {
const messageId = msg.key.id;
const sender = msg.key.participant || msg.key.remoteJid;
const isGroup = msg.key.remoteJid.endsWith('@g.us');
const messageData = {
messageId,
sender,
jid: msg.key.remoteJid,
content,
mediaType: mediaInfo?.type || null,
mediaPath: mediaInfo?.path || null,
isViewOnce: mediaInfo?.isViewOnce || false,
isGroup,
timestamp: new Date().toISOString()
};
// ⭐ MODIFICATION: Utiliser messageId comme clé unique
this.messageCache.set(messageId, messageData);
// Limiter la taille du cache
if (this.messageCache.size > 1000) {
const firstKey = this.messageCache.keys().next().value;
this.messageCache.delete(firstKey);
}
console.log(`💾 Message stored: ${messageId}`);
return messageData;
} catch (error) {
console.error(`❌ Message storage error:`, error.message);
return null;
}
}
// ⭐ MODIFICATION: Supprimer phoneNumber
getMessage(messageId) {
return this.messageCache.get(messageId) || null;
}
// ⭐ MODIFICATION: Supprimer phoneNumber
deleteMessage(messageId) {
const message = this.messageCache.get(messageId);
if (message && message.mediaPath) {
// Nettoyer le fichier média si nécessaire
try {
import('fs').then(fs => {
if (fs.existsSync(message.mediaPath)) {
fs.unlinkSync(message.mediaPath);
}
});
} catch (e) {
// Ignorer les erreurs de suppression
}
}
this.messageCache.delete(messageId);
}
// Nettoyage automatique du cache
setupCleanupInterval() {
setInterval(() => {
const now = Date.now();
const oneHourAgo = now - (60 * 60 * 1000);
for (const [messageId, message] of this.messageCache.entries()) {
if (new Date(message.timestamp).getTime() < oneHourAgo) {
this.deleteMessage(messageId);
}
}
}, 30 * 60 * 1000); // Toutes les 30 minutes
}
}
const messageStore = new MessageStore();
export default messageStore;