@@ -74,17 +74,26 @@ type MarkDownRenderers = {
7474const markDownRenderers : { [ nodeType : string ] : React . ElementType } = {
7575 // eslint-disable-next-line react/display-name
7676 link : ( props : MarkDownRenderers ) => {
77- if (
78- ! props . href ||
79- ( ! props . href . startsWith ( 'http' ) && ! props . href . startsWith ( 'mailto:' ) )
80- ) {
81- return props . children ;
77+ const { children, href } = props ;
78+
79+ const isEmail = href ?. startsWith ( 'mailto:' ) ;
80+ const isUrl = href ?. startsWith ( 'http' ) ;
81+
82+ if ( ! href || ( ! isEmail && ! isUrl ) ) {
83+ return children ;
8284 }
8385
8486 return (
85- < a href = { props . href } rel = 'nofollow noreferrer noopener' target = '_blank' >
86- { props . children }
87- </ a >
87+ < span >
88+ < a
89+ className = { `${ isUrl ? 'str-chat__message-url-link' : '' } ` }
90+ href = { href }
91+ rel = 'nofollow noreferrer noopener'
92+ target = '_blank'
93+ >
94+ { children }
95+ </ a >
96+ </ span >
8897 ) ;
8998 } ,
9099 span : 'span' ,
@@ -156,13 +165,11 @@ export type RenderTextOptions = {
156165 customMarkDownRenderers ?: {
157166 [ nodeType : string ] : React . ElementType ;
158167 } ;
159- truncationLimit ?: number ;
160168} ;
161169
162170export const renderText = < Us extends DefaultUserType < Us > = DefaultUserType > (
163171 text ?: string ,
164172 mentioned_users ?: UserResponse < Us > [ ] ,
165- MentionComponent : React . ComponentType < MentionProps < Us > > = Mention ,
166173 options : RenderTextOptions = { } ,
167174) => {
168175 // take the @ mentions and turn them into markdown?
@@ -196,12 +203,8 @@ export const renderText = <Us extends DefaultUserType<Us> = DefaultUserType>(
196203 if ( noParsingNeeded . length > 0 || linkIsInBlock ) return ;
197204
198205 const displayLink =
199- type === 'email'
200- ? value
201- : truncate (
202- value . replace ( detectHttp , '' ) ,
203- options . truncationLimit || 20 ,
204- ) ;
206+ type === 'email' ? value : value . replace ( detectHttp , '' ) ;
207+
205208 newText = newText . replace ( value , `[${ displayLink } ](${ encodeURI ( href ) } )` ) ;
206209 } ) ;
207210
@@ -212,9 +215,9 @@ export const renderText = <Us extends DefaultUserType<Us> = DefaultUserType>(
212215 }
213216
214217 const renderers = {
218+ mention : Mention ,
215219 ...markDownRenderers ,
216220 ...options . customMarkDownRenderers ,
217- mention : MentionComponent ,
218221 } ;
219222
220223 return (
0 commit comments