diff --git a/src/components/Message/renderText/__tests__/renderText.test.tsx b/src/components/Message/renderText/__tests__/renderText.test.tsx index af8264abf..e2f5d833f 100644 --- a/src/components/Message/renderText/__tests__/renderText.test.tsx +++ b/src/components/Message/renderText/__tests__/renderText.test.tsx @@ -28,6 +28,14 @@ describe(`renderText`, () => { expect(container).toMatchSnapshot(); }); + it('linkifies a URL with an uppercase scheme like a lowercase one', () => { + const Markdown = renderText('see HTTPS://en.wikipedia.org/wiki/Apple'); + render(Markdown); + const link = screen.getByRole('link', { name: 'en.wikipedia.org/wiki/Apple' }); + expect(link).toHaveClass('str-chat__message-url-link'); + expect(link).toHaveAttribute('href', 'HTTPS://en.wikipedia.org/wiki/Apple'); + }); + it('handles the special case where user name matches to an e-mail pattern - 1', () => { const Markdown = renderText( 'Hello @username@email.com, is username@email.com your @primary e-mail?', diff --git a/src/components/Message/renderText/componentRenderers/Anchor.tsx b/src/components/Message/renderText/componentRenderers/Anchor.tsx index 2eee61072..0e5a8ca21 100644 --- a/src/components/Message/renderText/componentRenderers/Anchor.tsx +++ b/src/components/Message/renderText/componentRenderers/Anchor.tsx @@ -4,7 +4,7 @@ import React from 'react'; export const Anchor = ({ children, href }: ComponentProps<'a'>) => { const isEmail = href?.startsWith('mailto:'); - const isUrl = href?.startsWith('http'); + const isUrl = href?.toLowerCase().startsWith('http'); if (!href || (!isEmail && !isUrl)) return <>{children}; diff --git a/src/components/Message/renderText/regex.ts b/src/components/Message/renderText/regex.ts index cf26f2731..1d2a89d79 100644 --- a/src/components/Message/renderText/regex.ts +++ b/src/components/Message/renderText/regex.ts @@ -2,7 +2,7 @@ export function escapeRegExp(text: string) { return text.replace(/[-[\]{}()*+?.,/\\^$|#]/g, '\\$&'); } -export const detectHttp = /(http(s?):\/\/)?(www\.)?/; +export const detectHttp = /(http(s?):\/\/)?(www\.)?/i; // Regexes are hoisted to module scope so they are compiled once rather than on // every call. `codeRegex`/`regexMdLinks` are only used with `String#match`