Last active
November 5, 2021 11:17
-
-
Save hieptl/f9e3cfeb647b2ec076335f162b5571bc to your computer and use it in GitHub Desktop.
index.js - Decrypt the List of Messages - CometChatMessageList
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
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