basic delete message

This commit is contained in:
Daniel Lugo 2020-01-13 16:10:27 -04:00
parent 17ed0f6a9d
commit 107b3cde4c

View file

@ -658,6 +658,64 @@ const sendMessage = async (recipientPublicKey, body, user, SEA) => {
}) })
} }
/**
* @param {string} recipientPub
* @param {string} msgID
* @param {UserGUNNode} user
* @param {ISEA} SEA
* @returns {Promise<void>}
*/
const deleteMessage = async (recipientPub, msgID, user, SEA) => {
if (!user.is) {
throw new Error(ErrorCode.NOT_AUTH)
}
if (typeof recipientPub !== 'string') {
throw new TypeError(
`expected recipientPublicKey to be an string, but instead got: ${typeof recipientPub}`
)
}
if (recipientPub.length === 0) {
throw new TypeError(
'expected recipientPublicKey to be an string of length greater than zero'
)
}
if (typeof msgID !== 'string') {
throw new TypeError(
`expected msgID to be an string, instead got: ${typeof msgID}`
)
}
if (msgID.length === 0) {
throw new TypeError(
'expected msgID to be an string of length greater than zero'
)
}
const outgoingID = await Utils.recipientToOutgoingID(recipientPub, user, SEA)
if (outgoingID === null) {
throw new Error(`Could not fetch an outgoing id for user: ${recipientPub}`)
}
return new Promise((res, rej) => {
user
.get(Key.OUTGOINGS)
.get(outgoingID)
.get(Key.MESSAGES)
.get(msgID)
.put(null, ack => {
if (ack.err) {
rej(new Error(ack.err))
} else {
res()
}
})
})
}
/** /**
* @param {string|null} avatar * @param {string|null} avatar
* @param {UserGUNNode} user * @param {UserGUNNode} user
@ -781,6 +839,7 @@ module.exports = {
blacklist, blacklist,
generateHandshakeAddress, generateHandshakeAddress,
sendHandshakeRequest, sendHandshakeRequest,
deleteMessage,
sendMessage, sendMessage,
sendHRWithInitialMsg, sendHRWithInitialMsg,
setAvatar, setAvatar,