diff --git a/packages/pl-api/lib/utils/domain.ts b/packages/pl-api/lib/utils/domain.ts new file mode 100644 index 000000000..111fcc863 --- /dev/null +++ b/packages/pl-api/lib/utils/domain.ts @@ -0,0 +1,23 @@ +import type { Account } from '../entities'; + +const getDomainFromURL = (account: Pick): string => { + try { + const url = account.url; + return new URL(url).host; + } catch { + return ''; + } +}; + +const guessFqn = (account: Pick): string => { + const acct = account.acct; + const [user, domain] = acct.split('@'); + + if (domain) { + return acct; + } else { + return [user, getDomainFromURL(account)].join('@'); + } +}; + +export { getDomainFromURL, guessFqn }; diff --git a/packages/pl-fe/src/components/still-image.tsx b/packages/pl-fe/src/components/still-image.tsx index 2ed9d9998..7b18fef3a 100644 --- a/packages/pl-fe/src/components/still-image.tsx +++ b/packages/pl-fe/src/components/still-image.tsx @@ -39,7 +39,7 @@ const StillImage: React.FC = ({ const canvas = useRef(null); const img = useRef(null); - const hoverToPlay = src && !autoPlayGif && ((isGif) || src.endsWith('.gif') || src.startsWith('blob:') || (src && staticSrc && src !== staticSrc)); + const hoverToPlay = src && !autoPlayGif && (isGif || src.endsWith('.gif') || src.startsWith('blob:') || (src && staticSrc && src !== staticSrc)); const handleImageLoad: React.ReactEventHandler = (e) => { if (hoverToPlay && !staticSrc && canvas.current && img.current) { diff --git a/packages/pl-fe/src/components/ui/avatar.tsx b/packages/pl-fe/src/components/ui/avatar.tsx index 66c4a4381..08e32b281 100644 --- a/packages/pl-fe/src/components/ui/avatar.tsx +++ b/packages/pl-fe/src/components/ui/avatar.tsx @@ -24,7 +24,7 @@ const messages = defineMessages({ avatar_with_content: { id: 'account.avatar.with_content', defaultMessage: 'Avatar for {username}: {alt}' }, }); -interface IAvatar extends Pick { +interface IAvatar extends Pick { /** Width and height of the avatar in pixels. */ size?: number; /** Whether the user is a cat. */ diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx b/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx index 346f7b68f..e699ce4cd 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx @@ -154,7 +154,7 @@ const ChatPageMain = () => { src={require('@phosphor-icons/core/regular/info.svg')} component={() => ( - + {chat.account.display_name} @{chat.account.acct} diff --git a/packages/pl-fe/src/features/chats/components/chat-widget/chat-settings.tsx b/packages/pl-fe/src/features/chats/components/chat-widget/chat-settings.tsx index 6d637c89b..f4fe4f3be 100644 --- a/packages/pl-fe/src/features/chats/components/chat-widget/chat-settings.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-widget/chat-settings.tsx @@ -110,7 +110,7 @@ const ChatSettings = () => { - + {chat.account.display_name} @{chat.account.acct} diff --git a/packages/pl-fe/src/normalizers/account.ts b/packages/pl-fe/src/normalizers/account.ts index 874b96696..e6fe69c75 100644 --- a/packages/pl-fe/src/normalizers/account.ts +++ b/packages/pl-fe/src/normalizers/account.ts @@ -8,9 +8,7 @@ const normalizeAccount = (account: BaseAccount) => { mute_expires_at: null, ...account, avatar: account.avatar || account.avatar_static || missingAvatar, - avatar_static: account.avatar_static || missingAvatar, header: account.header || account.header_static || missingHeader, - header_static: account.header_static || missingHeader, }; }; diff --git a/packages/pl-fe/src/normalizers/group.ts b/packages/pl-fe/src/normalizers/group.ts index 473a7cb6b..f70952da6 100644 --- a/packages/pl-fe/src/normalizers/group.ts +++ b/packages/pl-fe/src/normalizers/group.ts @@ -7,9 +7,7 @@ const normalizeGroup = (group: BaseGroup) => { return { ...group, avatar: group.avatar || group.avatar_static || missingAvatar, - avatar_static: group.avatar_static || missingAvatar, header: group.header || group.header_static || missingHeader, - header_static: group.header_static || missingHeader, }; }; diff --git a/packages/pl-fe/src/pages/account-lists/directory.tsx b/packages/pl-fe/src/pages/account-lists/directory.tsx index 10631dbcb..baa9f5b0e 100644 --- a/packages/pl-fe/src/pages/account-lists/directory.tsx +++ b/packages/pl-fe/src/pages/account-lists/directory.tsx @@ -12,6 +12,7 @@ import LoadMore from 'pl-fe/components/load-more'; import { ParsedContent } from 'pl-fe/components/parsed-content'; import { RadioGroup, RadioItem } from 'pl-fe/components/radio'; import RelativeTimestamp from 'pl-fe/components/relative-timestamp'; +import StillImage from 'pl-fe/components/still-image'; import Avatar from 'pl-fe/components/ui/avatar'; import { CardTitle } from 'pl-fe/components/ui/card'; import Column from 'pl-fe/components/ui/column'; @@ -22,7 +23,6 @@ import { useAppSelector } from 'pl-fe/hooks/use-app-selector'; import { useFeatures } from 'pl-fe/hooks/use-features'; import { useInstance } from 'pl-fe/hooks/use-instance'; import { useDirectory } from 'pl-fe/queries/accounts/use-directory'; -import { useSettings } from 'pl-fe/stores/settings'; import { shortNumberFormat } from 'pl-fe/utils/numbers'; const messages = defineMessages({ @@ -40,7 +40,6 @@ interface IAccountCard { const AccountCard: React.FC = ({ id }) => { const me = useAppSelector((state) => state.me); const { account } = useAccount(id); - const { autoPlayGif } = useSettings(); if (!account) return null; @@ -62,8 +61,9 @@ const AccountCard: React.FC = ({ id }) => { - {account.header_description}