@@ -1010,9 +1010,16 @@ class Message {
10101010 const messageHeaderDiv = document . createElement ( "div" ) ;
10111011 messageHeaderDiv . classList . add ( "message-header" ) ;
10121012
1013- const messageSenderSpan = document . createElement ( "span" ) ;
1013+ // const messageSenderSpan = document.createElement("span");
1014+ // messageSenderSpan.classList.add("message-sender");
1015+ // messageSenderSpan.innerText = this.username.concat(" ");
1016+
1017+ const messageSenderSpan = document . createElement ( "a" ) ;
10141018 messageSenderSpan . classList . add ( "message-sender" ) ;
10151019 messageSenderSpan . innerText = this . username . concat ( " " ) ;
1020+ messageSenderSpan . setAttribute ( 'href' , chatURL . concat ( `/profile.php?id=${ this . user_id } ` ) )
1021+ // messageSenderSpan.setAttribute('target', '_blank');
1022+
10161023
10171024 const messageDateTime = document . createElement ( "time" ) ;
10181025 messageDateTime . classList . add ( "message-datetime" ) ;
@@ -1024,14 +1031,6 @@ class Message {
10241031
10251032 const urlRegex = new RegExp ( '(https?://[^\\s]+\\.[^\\s]+)' , 'gi' ) ;
10261033
1027- const imageImbedRegex = new RegExp ( 'https?:\/\/localhost:3000\/uploads\/\w+\.\w+$' , 'gi' ) ;
1028-
1029- const usernameRegex = new RegExp ( `@${ user } \\b` , "gi" ) ;
1030-
1031- if ( imageImbedRegex . test ( this . message ) ) {
1032- } else {
1033-
1034- }
10351034 const messageBodyDiv = document . createElement ( "div" ) ;
10361035 messageBodyDiv . classList . add ( "message-body" ) ;
10371036
@@ -1046,12 +1045,22 @@ class Message {
10461045 return aTag . outerHTML ;
10471046 } ) ;
10481047
1049- const messageMentionUser = messageFiltered . match ( usernameRegex ) ; // search for the username in the message
1050-
1048+ const usernameRegex = new RegExp ( `@ ${ user } \\b` , "gi" ) ;
1049+ const messageMentionUser = messageFiltered . match ( usernameRegex ) ;
10511050 if ( messageMentionUser ) {
1051+ messageContentDiv . classList . add ( 'mention' ) ;
1052+ messageSpan . innerHTML = messageFiltered . replace ( usernameRegex , ( text ) => {
1053+ const spanTag = document . createElement ( 'a' ) ;
1054+ spanTag . setAttribute ( 'class' , 'mention-text' ) ;
1055+ spanTag . setAttribute ( 'href' , chatURL . concat ( `/profile.php?id=${ this . user_id } ` ) ) ;
1056+ spanTag . innerText = text ;
1057+ return spanTag . outerHTML ;
1058+ } ) ;
1059+
10521060 }
1053-
1061+
10541062 messageBodyDiv . appendChild ( messageSpan ) ;
1063+
10551064 messageContentDiv . appendChild ( messageHeaderDiv ) ;
10561065 messageContentDiv . appendChild ( messageBodyDiv ) ;
10571066
@@ -1060,6 +1069,7 @@ class Message {
10601069
10611070 document . getElementById ( 'messages' ) . appendChild ( div ) ;
10621071 }
1072+
10631073 appendMessageBefore ( ) {
10641074 const div = document . createElement ( "div" ) ;
10651075 div . classList . add ( "message-container" ) ;
@@ -1080,9 +1090,16 @@ class Message {
10801090 const messageHeaderDiv = document . createElement ( "div" ) ;
10811091 messageHeaderDiv . classList . add ( "message-header" ) ;
10821092
1083- const messageSenderSpan = document . createElement ( "span" ) ;
1093+ // const messageSenderSpan = document.createElement("span");
1094+ // messageSenderSpan.classList.add("message-sender");
1095+ // messageSenderSpan.innerText = this.username.concat(" ");
1096+
1097+ const messageSenderSpan = document . createElement ( "a" ) ;
10841098 messageSenderSpan . classList . add ( "message-sender" ) ;
10851099 messageSenderSpan . innerText = this . username . concat ( " " ) ;
1100+ messageSenderSpan . setAttribute ( 'href' , chatURL . concat ( `/profile.php?id=${ this . user_id } ` ) )
1101+ // messageSenderSpan.setAttribute('target', '_blank');
1102+
10861103
10871104 const messageDateTime = document . createElement ( "time" ) ;
10881105 messageDateTime . classList . add ( "message-datetime" ) ;
@@ -1108,6 +1125,20 @@ class Message {
11081125 return aTag . outerHTML ;
11091126 } ) ;
11101127
1128+ const usernameRegex = new RegExp ( `@${ user } \\b` , "gi" ) ;
1129+ const messageMentionUser = messageFiltered . match ( usernameRegex ) ;
1130+ if ( messageMentionUser ) {
1131+ messageContentDiv . classList . add ( 'mention' ) ;
1132+ messageSpan . innerHTML = messageFiltered . replace ( usernameRegex , ( text ) => {
1133+ const spanTag = document . createElement ( 'a' ) ;
1134+ spanTag . setAttribute ( 'class' , 'mention-text' ) ;
1135+ spanTag . setAttribute ( 'href' , chatURL . concat ( `/profile.php?id=${ this . user_id } ` ) ) ;
1136+ spanTag . innerText = text ;
1137+ return spanTag . outerHTML ;
1138+ } ) ;
1139+
1140+ }
1141+
11111142 messageBodyDiv . appendChild ( messageSpan ) ;
11121143
11131144 messageContentDiv . appendChild ( messageHeaderDiv ) ;
0 commit comments