Skip to content

Instantly share code, notes, and snippets.

@hieptl
Last active November 5, 2021 11:17
Show Gist options
  • Save hieptl/f9e3cfeb647b2ec076335f162b5571bc to your computer and use it in GitHub Desktop.
Save hieptl/f9e3cfeb647b2ec076335f162b5571bc to your computer and use it in GitHub Desktop.
index.js - Decrypt the List of Messages - CometChatMessageList
...
getVirgilGroupInstance = async guid => {
try {
if (guid) {
const eThree = this.context.eThree;
let group = await eThree.getGroup(guid);
if (group) {
return group;
}
const ownerCard = await eThree.findUsers(this.context.item.owner);
group = await eThree.loadGroup(guid, ownerCard);
return group;
}
return null
} catch (error) {
return null;
}
}
decryptGroupMessage = async (message) => {
try {
if (message && message.data.text) {
const eThree = this.context.eThree;
const group = await this.getVirgilGroupInstance(message.receiverId);
const messageSender = await eThree.findUsers(message.sender.uid);
const decryptedMessage = await group.decrypt(message.data.text, messageSender);
return decryptedMessage;
}
return message.data.text;
} catch (error) {
return message.data.text;
}
}
decryptUserMessage = async (message) => {
try {
if (message && message.data.text) {
const eThree = this.context.eThree;
const identities = [message.sender.uid, message.receiverId];
const findUserResults = await eThree.findUsers(identities);
const decryptedMessage = await eThree.authDecrypt(message.data.text, findUserResults[message.sender.uid]);
return decryptedMessage;
}
return message.data.text;
} catch (error) {
return message.data.text;
}
};
decryptMessage = async (message) => {
try {
const receiverType = message.receiverType;
if (receiverType === 'group') {
return await this.decryptGroupMessage(message);
} else if (receiverType === 'user') {
return await this.decryptUserMessage(message);
}
return message.data.text;
} catch (error) {
return message.data.text;
}
};
decryptMessages = async (messageList) => {
if (messageList && messageList.length !== 0) {
const decryptedMessages = [];
for (const message of messageList) {
if (message && message.data.text) {
const decryptedMessage = await this.decryptMessage(message);
message.text = decryptedMessage;
message.data.text = decryptedMessage;
decryptedMessages.push(message);
} else {
decryptedMessages.push(message);
}
}
return decryptedMessages;
}
return messageList;
};
fetchMessages = () => {
const promise = new Promise((resolve, reject) => {
this.MessageListManager.fetchPreviousMessages()
.then(async messageList => {
const decryptedMessages = await this.decryptMessages(messageList);
resolve(decryptedMessages);
})
.catch(error => reject(error));
});
return promise;
};
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment