diff --git a/app/soapbox/components/account.tsx b/app/soapbox/components/account.tsx
index ccdc10578..c60893e5a 100644
--- a/app/soapbox/components/account.tsx
+++ b/app/soapbox/components/account.tsx
@@ -5,7 +5,7 @@ import HoverRefWrapper from 'soapbox/components/hover_ref_wrapper';
import VerificationBadge from 'soapbox/components/verification_badge';
import ActionButton from 'soapbox/features/ui/components/action_button';
import { useAppSelector, useOnScreen } from 'soapbox/hooks';
-import { getAcct, getDomain } from 'soapbox/utils/accounts';
+import { getAcct } from 'soapbox/utils/accounts';
import { displayFqn } from 'soapbox/utils/state';
import RelativeTimestamp from './relative_timestamp';
@@ -91,7 +91,7 @@ const Account = ({
);
}
- if (account.get('id') !== me && account.get('relationship', null) !== null) {
+ if (account.id !== me) {
return ;
}
@@ -118,8 +118,8 @@ const Account = ({
if (hidden) {
return (
<>
- {account.get('display_name')}
- {account.get('username')}
+ {account.display_name}
+ {account.username}
>
);
}
@@ -128,34 +128,31 @@ const Account = ({
const LinkEl: any = showProfileHoverCard ? Link : 'div';
- const favicon = account.pleroma.get('favicon');
- const domain = getDomain(account);
-
return (
{children}}
+ wrapper={(children) => {children}}
>
event.stopPropagation()}
>
-
+
{children}}
+ wrapper={(children) => {children}}
>
event.stopPropagation()}
>
@@ -163,10 +160,10 @@ const Account = ({
size='sm'
weight='semibold'
truncate
- dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }}
+ dangerouslySetInnerHTML={{ __html: account.display_name_html }}
/>
- {account.get('verified') && }
+ {account.verified && }
@@ -174,9 +171,9 @@ const Account = ({
@{username}
- {favicon && (
-
-
+ {account.favicon && (
+ e.stopPropagation()}>
+
)}
diff --git a/app/soapbox/normalizers/__tests__/account-test.js b/app/soapbox/normalizers/__tests__/account-test.js
index 1735d0628..b78017e06 100644
--- a/app/soapbox/normalizers/__tests__/account-test.js
+++ b/app/soapbox/normalizers/__tests__/account-test.js
@@ -177,4 +177,18 @@ describe('normalizeAccount()', () => {
expect(result.staff).toBe(true);
expect(result.moderator).toBe(false);
});
+
+ it('normalizes Pleroma favicon', () => {
+ const account = require('soapbox/__fixtures__/pleroma-account.json');
+ const result = normalizeAccount(account);
+
+ expect(result.favicon).toEqual('https://gleasonator.com/favicon.png');
+ });
+
+ it('adds account domain', () => {
+ const account = require('soapbox/__fixtures__/pleroma-account.json');
+ const result = normalizeAccount(account);
+
+ expect(result.domain).toEqual('gleasonator.com');
+ });
});
diff --git a/app/soapbox/normalizers/account.ts b/app/soapbox/normalizers/account.ts
index 679dd770d..2ca866c18 100644
--- a/app/soapbox/normalizers/account.ts
+++ b/app/soapbox/normalizers/account.ts
@@ -28,6 +28,7 @@ export const AccountRecord = ImmutableRecord({
created_at: new Date(),
display_name: '',
emojis: ImmutableList(),
+ favicon: '',
fields: ImmutableList(),
followers_count: 0,
following_count: 0,
@@ -52,6 +53,7 @@ export const AccountRecord = ImmutableRecord({
// Internal fields
admin: false,
display_name_html: '',
+ domain: '',
moderator: false,
note_emojified: '',
note_plain: '',
@@ -224,6 +226,16 @@ const normalizeFqn = (account: ImmutableMap) => {
return account.set('fqn', fqn);
};
+const normalizeFavicon = (account: ImmutableMap) => {
+ const favicon = account.getIn(['pleroma', 'favicon']) || '';
+ return account.set('favicon', favicon);
+};
+
+const addDomain = (account: ImmutableMap) => {
+ const domain = account.get('fqn', '').split('@')[1] || '';
+ return account.set('domain', domain);
+};
+
const addStaffFields = (account: ImmutableMap) => {
const admin = account.getIn(['pleroma', 'is_admin']) === true;
const moderator = account.getIn(['pleroma', 'is_moderator']) === true;
@@ -248,6 +260,8 @@ export const normalizeAccount = (account: Record) => {
normalizeBirthday(account);
normalizeLocation(account);
normalizeFqn(account);
+ normalizeFavicon(account);
+ addDomain(account);
addStaffFields(account);
fixUsername(account);
fixDisplayName(account);