From f577f6fcbefbbb66d7f5058500a68e138c9033ac Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 19 Apr 2022 12:28:47 -0500 Subject: [PATCH] Account: normalize favicon and domain, clean up account.tsx --- app/soapbox/components/account.tsx | 35 +++++++++---------- .../normalizers/__tests__/account-test.js | 14 ++++++++ app/soapbox/normalizers/account.ts | 14 ++++++++ 3 files changed, 44 insertions(+), 19 deletions(-) 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);