diff --git a/src/components/account.tsx b/src/components/account.tsx index 4871079a7..ddee09385 100644 --- a/src/components/account.tsx +++ b/src/components/account.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from 'react'; +import React, { useRef, useState } from 'react'; import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; import { Link, useHistory } from 'react-router-dom'; @@ -27,6 +27,9 @@ const messages = defineMessages({ const InstanceFavicon: React.FC = ({ account, disabled }) => { const history = useHistory(); + const [missing, setMissing] = useState(false); + + const handleError = () => setMissing(true); const handleClick: React.MouseEventHandler = (e) => { e.stopPropagation(); @@ -41,7 +44,7 @@ const InstanceFavicon: React.FC = ({ account, disabled }) => { } }; - if (!account.pleroma?.favicon) { + if (missing || !account.pleroma?.favicon) { return null; } @@ -51,7 +54,13 @@ const InstanceFavicon: React.FC = ({ account, disabled }) => { onClick={handleClick} disabled={disabled} > - + ); }; diff --git a/src/schemas/account.ts b/src/schemas/account.ts index 15ebc821e..1a6944386 100644 --- a/src/schemas/account.ts +++ b/src/schemas/account.ts @@ -45,6 +45,7 @@ const baseAccountSchema = z.object({ is_registered: z.boolean().catch(false), external_url: z.string().optional().catch(undefined), }), + domain: z.string().optional().catch(undefined), emojis: filteredArray(customEmojiSchema), fields: filteredArray(fieldSchema), followers_count: z.number().catch(0), @@ -145,7 +146,7 @@ const transformAccount = ({ pleroma, other_setti })); const displayName = account.display_name.trim().length === 0 ? account.username : account.display_name; - const domain = getDomain(account.url || account.uri); + const domain = account.domain ?? getDomain(account.url || account.uri); if (pleroma) { pleroma.birthday = pleroma.birthday || other_settings?.birthday;