diff --git a/source/ts/utilities/relation-link.ts b/source/ts/utilities/relation-link.ts index 9ef2284..a9b28d1 100644 --- a/source/ts/utilities/relation-link.ts +++ b/source/ts/utilities/relation-link.ts @@ -18,6 +18,7 @@ const known: KnownLink[] = knownLinks.map((data: Record) => ({ })); export default class RelationLink { + public readonly isKnown: boolean; public readonly link: URL; public readonly original: string; public readonly text: string; @@ -27,6 +28,7 @@ export default class RelationLink { this.link = new URL(relationUrl); const knownLink = known.find(({regex}) => regex.test(this.link.host)); + this.isKnown = knownLink !== undefined; this.text = knownLink?.text ?? this.link.host; } } diff --git a/source/ts/utilities/release.ts b/source/ts/utilities/release.ts index 978a899..e28464b 100644 --- a/source/ts/utilities/release.ts +++ b/source/ts/utilities/release.ts @@ -58,7 +58,14 @@ export default class Release { ); const links = Array.from(relations) .map((url) => new RelationLink(url)) - .sort((a, b) => a.text.localeCompare(b.text)); + .sort((a, b) => + // Sort links that aren't known to us at the bottom. + a.isKnown === b.isKnown + ? a.text.localeCompare(b.text) + : b.isKnown + ? 1 // This return 1 or -1 is because .sort() expects a number. + : -1, + ); return new Release({ artist,