mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-19 19:16:29 +08:00
fix(editor): should add HTTP protocol into link automatically (#11934)
Closes: [BS-3291](https://linear.app/affine-design/issue/BS-3291/工具栏展开时报错,链接无法点击打开) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - URLs entered without a protocol (e.g., "github.com/...") are now automatically normalized to use "https://", ensuring links are secure and consistently formatted. - **Bug Fixes** - Improved handling and validation of links to prevent issues with missing or invalid protocols in bookmarks and inline links. - Simplified URL validation logic by leveraging native URL parsing, removing complex regex and email-specific checks. - Streamlined toolbar link actions to operate only on valid normalized URLs. - Refined URL detection in markdown preprocessing to exclude lines containing spaces from being treated as URLs. - **Tests** - Added tests to verify that links without a protocol are correctly normalized and displayed across different views. - Updated URL validation tests to better reflect valid and invalid URL formats, including IP addresses and domain variants. - **Style** - Updated snapshots to reflect the use of "https://" in links. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -29,13 +29,13 @@ describe('isValidUrl: determining whether a URL is valid is very complicated', (
|
||||
expect(isValidUrl('www.example.com')).toEqual(true);
|
||||
expect(isValidUrl('example.co')).toEqual(true);
|
||||
expect(isValidUrl('example.cm')).toEqual(true);
|
||||
expect(isValidUrl('1.1.1.1')).toEqual(true);
|
||||
expect(isValidUrl('1.1.1.1')).toEqual(false);
|
||||
|
||||
expect(isValidUrl('example.c')).toEqual(false);
|
||||
});
|
||||
|
||||
test('special cases', () => {
|
||||
expect(isValidUrl('example.com.')).toEqual(true);
|
||||
expect(isValidUrl('example.com.')).toEqual(false);
|
||||
|
||||
// I don't know why
|
||||
// private & local networks is excluded
|
||||
@@ -44,8 +44,8 @@ describe('isValidUrl: determining whether a URL is valid is very complicated', (
|
||||
expect(isValidUrl('localhost')).toEqual(false);
|
||||
expect(isValidUrl('0.0.0.0')).toEqual(false);
|
||||
|
||||
expect(isValidUrl('128.0.0.1')).toEqual(true);
|
||||
expect(isValidUrl('1.0.0.1')).toEqual(true);
|
||||
expect(isValidUrl('128.0.0.1')).toEqual(false);
|
||||
expect(isValidUrl('1.0.0.1')).toEqual(false);
|
||||
});
|
||||
|
||||
test('email link is a valid URL', () => {
|
||||
|
||||
Reference in New Issue
Block a user