Skip to content

Commit

Permalink
Only warn on links to bsky.app if it represents itself as another url (
Browse files Browse the repository at this point in the history
…#1662)

* Only warn on links to bsky.app if it represents itself as another url (close #1652)

* Clean up
  • Loading branch information
pfrazee authored Oct 10, 2023
1 parent e878da0 commit 4d450da
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 5 deletions.
36 changes: 36 additions & 0 deletions __tests__/lib/strings/url-helpers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,42 @@ describe('linkRequiresWarning', () => {
['http://site.pages', 'http://site.pages.dev', true],
['http://site.pages.dev', 'site.pages', true],
['http://site.pages', 'site.pages.dev', true],
['http://bsky.app/profile/bob.test/post/3kbeuduu7m22v', 'my post', false],
['https://bsky.app/profile/bob.test/post/3kbeuduu7m22v', 'my post', false],
['http://bsky.app/', 'bluesky', false],
['https://bsky.app/', 'bluesky', false],
[
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
false,
],
[
'https://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
false,
],
[
'http://bsky.app/',
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
false,
],
[
'https://bsky.app/',
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
false,
],
[
'http://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
'https://google.com',
true,
],
[
'https://bsky.app/profile/bob.test/post/3kbeuduu7m22v',
'https://google.com',
true,
],
['http://bsky.app/', 'https://google.com', true],
['https://bsky.app/', 'https://google.com', true],

// bad uri inputs, default to true
['', '', true],
Expand Down
27 changes: 22 additions & 5 deletions src/lib/strings/url-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,15 +170,32 @@ export function getYoutubeVideoId(link: string): string | undefined {

export function linkRequiresWarning(uri: string, label: string) {
const labelDomain = labelToDomain(label)
if (!labelDomain) {
return true
}
let urip
try {
const urip = new URL(uri)
return labelDomain !== urip.hostname
urip = new URL(uri)
} catch {
return true
}

if (urip.hostname === 'bsky.app') {
// if this is a link to internal content,
// warn if it represents itself as a URL to another app
if (
labelDomain &&
labelDomain !== 'bsky.app' &&
isPossiblyAUrl(labelDomain)
) {
return true
}
return false
} else {
// if this is a link to external content,
// warn if the label doesnt match the target
if (!labelDomain) {
return true
}
return labelDomain !== urip.hostname
}
}

function labelToDomain(label: string): string | undefined {
Expand Down

0 comments on commit 4d450da

Please sign in to comment.