Skip to content

Commit cb55106

Browse files
committed
(fix) edit message with usertag
1 parent b05a979 commit cb55106

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

src/lib/Room/Room.vue

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ export default {
724724
true
725725
).filter(user => user._id !== this.currentUserId)
726726
},
727-
selectUserTag(user) {
727+
selectUserTag(user, editMode = false) {
728728
const { position, endPosition } = this.getCharPosition('@')
729729
730730
const space = this.message.substr(endPosition, endPosition).length
@@ -739,8 +739,11 @@ export default {
739739
740740
this.selectedUsersTag = [...this.selectedUsersTag, { ...user }]
741741
742-
this.cursorRangePosition =
743-
position + user.username.length + space.length + 1
742+
if (!editMode) {
743+
this.cursorRangePosition =
744+
position + user.username.length + space.length + 1
745+
}
746+
744747
this.focusTextarea()
745748
},
746749
resetFooterList(tagChar = null) {
@@ -879,7 +882,35 @@ export default {
879882
this.resetMessage()
880883
881884
this.editedMessage = { ...message }
882-
this.message = message.content
885+
886+
let messageContent = message.content
887+
888+
const res = [
889+
...messageContent.matchAll(new RegExp('<usertag>', 'gi'))
890+
].map(a => a.index)
891+
892+
if (res.length) {
893+
const firstTag = '<usertag>'
894+
const secondTag = '</usertag>'
895+
896+
res.forEach(r => {
897+
const userId = messageContent.substring(
898+
messageContent.indexOf(firstTag) + firstTag.length,
899+
messageContent.indexOf(secondTag)
900+
)
901+
902+
const user = this.room.users.find(user => user._id === userId)
903+
904+
messageContent = messageContent.replace(
905+
`${firstTag}${userId}${secondTag}`,
906+
`@${user.username || 'unknown'}`
907+
)
908+
909+
this.selectUserTag(user, true)
910+
})
911+
}
912+
913+
this.message = messageContent
883914
884915
if (message.files) {
885916
this.files = [...message.files]

0 commit comments

Comments
 (0)