const { DISPLAY_TYPES, MENTION_PREFIX } = require('../constants.js')
module.exports = { displayReplaceMention }
function displayReplaceMention({ text, display }, memberId, name) {
if (!text) return { text: '', display }
let newText
const newDisplay = []
let delta = 0
let replaced = false
const sorted = [...display].sort((a, b) => a.start - b.start)
for (const d of sorted) {
const start = d.start + delta
if (d.type === DISPLAY_TYPES.MENTION && d.memberId === memberId) {
const mention = MENTION_PREFIX + name
const length = mention.length
newText = text.slice(0, start) + mention + text.slice(start + d.length)
newDisplay.push({
...d,
start,
length
})
delta += length - d.length
replaced = true
} else {
newDisplay.push({
...d,
start
})
}
}
if (!replaced) {
return { text, display }
}
return { text: newText, display: newDisplay }
}