@@ -47,21 +47,53 @@ export default function OGMessageItemBody({
4747 >
4848 < p className = "sendbird-og-message-item-body__text-bubble" >
4949 {
50- message ?. message . split ( ' ' ) . map ( ( word : string ) => (
51- isUrl ( word )
52- ? (
53- < LinkLabel
54- className = "sendbird-og-message-item-body__text-bubble__message"
55- key = { uuidv4 ( ) }
56- src = { word }
57- type = { LabelTypography . BODY_1 }
58- color = { isByMe ? LabelColors . ONCONTENT_1 : LabelColors . ONBACKGROUND_1 }
59- >
60- { word }
61- </ LinkLabel >
62- )
63- : ( `${ word } ` )
64- ) )
50+ message ?. message . split ( ' ' ) . map ( ( word : string ) => {
51+ const urlRegex = new RegExp ( "([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?" ) ;
52+ const targetUrl = urlRegex . exec ( word ) ?. [ 0 ] ;
53+ const stringUrl = { front : '' , url : '' , back : '' } ;
54+ if ( targetUrl ) {
55+ const targetUrlIndex = word . indexOf ( targetUrl ) ;
56+ if ( targetUrlIndex > 0 ) {
57+ stringUrl . front = word . slice ( 0 , targetUrlIndex ) ;
58+ }
59+ stringUrl . url = word . slice ( targetUrlIndex , targetUrlIndex + targetUrl . length ) ;
60+ if ( targetUrlIndex + targetUrl . length < word . length ) {
61+ stringUrl . back = word . slice ( targetUrlIndex + targetUrl . length ) ;
62+ }
63+ }
64+ if ( targetUrl ) {
65+ return [
66+ stringUrl . front ? stringUrl . front : '' ,
67+ stringUrl . url ? (
68+ < LinkLabel
69+ className = "sendbird-word__url"
70+ key = { uuidv4 ( ) }
71+ src = { stringUrl . url }
72+ type = { LabelTypography . BODY_1 }
73+ color = { isByMe ? LabelColors . ONCONTENT_1 : LabelColors . ONBACKGROUND_1 }
74+ >
75+ { stringUrl . url }
76+ </ LinkLabel >
77+ ) : null ,
78+ stringUrl . back ? stringUrl . back : '' ,
79+ ] ;
80+ }
81+ return (
82+ isUrl ( word )
83+ ? (
84+ < LinkLabel
85+ className = "sendbird-og-message-item-body__text-bubble__message"
86+ key = { uuidv4 ( ) }
87+ src = { word }
88+ type = { LabelTypography . BODY_1 }
89+ color = { isByMe ? LabelColors . ONCONTENT_1 : LabelColors . ONBACKGROUND_1 }
90+ >
91+ { word }
92+ </ LinkLabel >
93+ )
94+ : ( `${ word } ` )
95+ ) ;
96+ } )
6597 }
6698 {
6799 isEditedMessage ( message ) && (
0 commit comments