diff --git a/projects/stream-chat-angular/src/lib/message-text/message-text.component.spec.ts b/projects/stream-chat-angular/src/lib/message-text/message-text.component.spec.ts index 803990ee..5f0ee538 100644 --- a/projects/stream-chat-angular/src/lib/message-text/message-text.component.spec.ts +++ b/projects/stream-chat-angular/src/lib/message-text/message-text.component.spec.ts @@ -302,6 +302,42 @@ describe('MessageTextComponent', () => { ); }); + it('should not double-prefix URLs with uppercase or mixed-case schemes', () => { + component.message = { + text: 'This is a message with a link HTTPS://example.com', + } as any as StreamMessage; + component.ngOnChanges({ message: {} as SimpleChange }); + + expect(component.messageTextParts![0].content).toContain( + 'HTTPS://example.com' + ); + expect(component.messageTextParts![0].content).not.toContain( + 'https://HTTPS://example.com' + ); + + component.message.text = + 'This is a message with a link Https://example.com'; + component.ngOnChanges({ message: {} as SimpleChange }); + + expect(component.messageTextParts![0].content).toContain( + 'Https://example.com' + ); + + component.message.text = 'This is a message with a link FTP://example.com'; + component.ngOnChanges({ message: {} as SimpleChange }); + + expect(component.messageTextParts![0].content).toContain( + 'FTP://example.com' + ); + + component.message.text = 'This is a message with a link example.com'; + component.ngOnChanges({ message: {} as SimpleChange }); + + expect(component.messageTextParts![0].content).toContain( + 'example.com' + ); + }); + it('should replace URL links inside text content - custom link renderer', () => { const service = TestBed.inject(MessageService); service.customLinkRenderer = (url) => diff --git a/projects/stream-chat-angular/src/lib/message-text/message-text.component.ts b/projects/stream-chat-angular/src/lib/message-text/message-text.component.ts index ed599ba5..44a6c634 100644 --- a/projects/stream-chat-angular/src/lib/message-text/message-text.component.ts +++ b/projects/stream-chat-angular/src/lib/message-text/message-text.component.ts @@ -157,11 +157,7 @@ export class MessageTextComponent implements OnChanges { return this.messageService.customLinkRenderer(match); } else { let href = match; - if ( - !href.startsWith('http') && - !href.startsWith('ftp') && - !href.startsWith('file') - ) { + if (!/^(?:https?|ftp|file):\/\//i.test(href)) { href = `https://${match}`; } return `${match}`;