import { IPubcompPacket, IPublishPacket, IPubrelPacket } from 'mqtt-packet'
import { PacketHandler } from '../shared'
const handlePubrel: PacketHandler = (client, packet: IPubrelPacket, done) => {
client.log('handling pubrel packet')
const callback = typeof done !== 'undefined' ? done : client.noop
const { messageId } = packet
const comp: IPubcompPacket = { cmd: 'pubcomp', messageId }
client.incomingStore.get(packet, (err, pub: IPublishPacket) => {
if (!err) {
client.emit('message', pub.topic, pub.payload as Buffer, pub)
client.handleMessage(pub, (err2) => {
if (err2) {
return callback(err2)
}
client.incomingStore.del(pub, client.noop)
client['_sendPacket'](comp, callback)
})
} else {
client['_sendPacket'](comp, callback)
}
})
}
export default handlePubrel