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}`;