summaryrefslogtreecommitdiff
path: root/packages/backend/src/services/fetch-instance-metadata.ts
diff options
context:
space:
mode:
authorJohann150 <johann.galle@protonmail.com>2022-02-23 12:17:43 +0100
committerGitHub <noreply@github.com>2022-02-23 20:17:43 +0900
commitbd07c7312a96b19aa81f49fafbbf8414b2183139 (patch)
treecb8302b72ceb93eb9d74552fc55a0fdd32926816 /packages/backend/src/services/fetch-instance-metadata.ts
parentadd sk-SK lang to locales/index.js (#8325) (diff)
downloadmisskey-bd07c7312a96b19aa81f49fafbbf8414b2183139.tar.gz
misskey-bd07c7312a96b19aa81f49fafbbf8414b2183139.tar.bz2
misskey-bd07c7312a96b19aa81f49fafbbf8414b2183139.zip
fix: also recognize "shortcut icon" favicon (#8220)
* also recognize "shortcut icon" favicon Not using querySelector for this because it uses jsdom which might be slower. Reversing the order because WHATWG says the last appropriate link should be used. * also fetchIconUrl * br * improve readability * fix * フォールバックにhrefの評価を含める * fix val name * 将来的な拡張を考えたコードにした Co-authored-by: tamaina <tamaina@hotmail.co.jp> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'packages/backend/src/services/fetch-instance-metadata.ts')
-rw-r--r--packages/backend/src/services/fetch-instance-metadata.ts18
1 files changed, 12 insertions, 6 deletions
diff --git a/packages/backend/src/services/fetch-instance-metadata.ts b/packages/backend/src/services/fetch-instance-metadata.ts
index 2c401508a9..95601bfd82 100644
--- a/packages/backend/src/services/fetch-instance-metadata.ts
+++ b/packages/backend/src/services/fetch-instance-metadata.ts
@@ -156,7 +156,8 @@ async function fetchFaviconUrl(instance: Instance, doc: DOMWindow['document'] |
const url = 'https://' + instance.host;
if (doc) {
- const href = doc.querySelector('link[rel="icon"]')?.getAttribute('href');
+ // https://github.com/misskey-dev/misskey/pull/8220#issuecomment-1025104043
+ const href = Array.from(doc.getElementsByTagName('link')).reverse().find(link => link.relList.contains('icon'))?.href;
if (href) {
return (new URL(href, url)).href;
@@ -186,11 +187,16 @@ async function fetchIconUrl(instance: Instance, doc: DOMWindow['document'] | nul
if (doc) {
const url = 'https://' + instance.host;
- const hrefAppleTouchIconPrecomposed = doc.querySelector('link[rel="apple-touch-icon-precomposed"]')?.getAttribute('href');
- const hrefAppleTouchIcon = doc.querySelector('link[rel="apple-touch-icon"]')?.getAttribute('href');
- const hrefIcon = doc.querySelector('link[rel="icon"]')?.getAttribute('href');
-
- const href = hrefAppleTouchIconPrecomposed || hrefAppleTouchIcon || hrefIcon;
+ // https://github.com/misskey-dev/misskey/pull/8220#issuecomment-1025104043
+ const links = Array.from(doc.getElementsByTagName('link')).reverse();
+ // https://github.com/misskey-dev/misskey/pull/8220/files/0ec4eba22a914e31b86874f12448f88b3e58dd5a#r796487559
+ const href =
+ [
+ links.find(link => link.relList.contains('apple-touch-icon-precomposed'))?.href,
+ links.find(link => link.relList.contains('apple-touch-icon'))?.href,
+ links.find(link => link.relList.contains('icon'))?.href,
+ ]
+ .find(href => href);
if (href) {
return (new URL(href, url)).href;