@@ -724,7 +724,7 @@ export default {
724
724
true
725
725
).filter (user => user ._id !== this .currentUserId )
726
726
},
727
- selectUserTag (user ) {
727
+ selectUserTag (user , editMode = false ) {
728
728
const { position , endPosition } = this .getCharPosition (' @' )
729
729
730
730
const space = this .message .substr (endPosition, endPosition).length
@@ -739,8 +739,11 @@ export default {
739
739
740
740
this .selectedUsersTag = [... this .selectedUsersTag , { ... user }]
741
741
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
+
744
747
this .focusTextarea ()
745
748
},
746
749
resetFooterList (tagChar = null ) {
@@ -879,7 +882,35 @@ export default {
879
882
this .resetMessage ()
880
883
881
884
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
883
914
884
915
if (message .files ) {
885
916
this .files = [... message .files ]
0 commit comments