From d94c19fd9d76124ec3c89a0936b6fa232646ec4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Mon, 27 Oct 2025 12:01:06 +0100 Subject: [PATCH] pl-fe: improve mute expiration handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/pl-fe/src/components/account.tsx | 6 ++++-- packages/pl-fe/src/normalizers/account.ts | 16 ++-------------- packages/pl-fe/src/pages/settings/mutes.tsx | 4 ++-- .../src/queries/account-lists/use-blocks.ts | 4 ++-- packages/pl-fe/src/queries/utils/minify-list.ts | 9 +++++++-- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/packages/pl-fe/src/components/account.tsx b/packages/pl-fe/src/components/account.tsx index a6b1d70aa..d662964a2 100644 --- a/packages/pl-fe/src/components/account.tsx +++ b/packages/pl-fe/src/components/account.tsx @@ -108,6 +108,7 @@ interface IAccount { note?: string; items?: React.ReactNode; disabled?: boolean; + muteExpiresAt?: string | null; } const Account = ({ @@ -135,6 +136,7 @@ const Account = ({ note, items, disabled, + muteExpiresAt, }: IAccount) => { const overflowRef = useRef(null); const actionRef = useRef(null); @@ -381,11 +383,11 @@ const Account = ({ )} - {actionType === 'muting' && account.mute_expires_at ? ( + {actionType === 'muting' && muteExpiresAt ? ( <> · - + ) : null} diff --git a/packages/pl-fe/src/normalizers/account.ts b/packages/pl-fe/src/normalizers/account.ts index e6fe69c75..a75b7ba86 100644 --- a/packages/pl-fe/src/normalizers/account.ts +++ b/packages/pl-fe/src/normalizers/account.ts @@ -1,17 +1,5 @@ -import type { Account as BaseAccount } from 'pl-api'; +import type { Account } from 'pl-api'; -const normalizeAccount = (account: BaseAccount) => { - const missingAvatar: string = require('pl-fe/assets/images/avatar-missing.png'); - const missingHeader: string = require('pl-fe/assets/images/header-missing.png'); - - return { - mute_expires_at: null, - ...account, - avatar: account.avatar || account.avatar_static || missingAvatar, - header: account.header || account.header_static || missingHeader, - }; -}; - -type Account = ReturnType; +const normalizeAccount = (account: Account) => account; export { normalizeAccount, type Account }; diff --git a/packages/pl-fe/src/pages/settings/mutes.tsx b/packages/pl-fe/src/pages/settings/mutes.tsx index 10e818726..c051ba801 100644 --- a/packages/pl-fe/src/pages/settings/mutes.tsx +++ b/packages/pl-fe/src/pages/settings/mutes.tsx @@ -35,8 +35,8 @@ const MutesPage: React.FC = () => { } > - {data.map((accountId) => - , + {data.map(([accountId, muteExpiresAt]) => + , )} diff --git a/packages/pl-fe/src/queries/account-lists/use-blocks.ts b/packages/pl-fe/src/queries/account-lists/use-blocks.ts index 5c74b0f80..59387ade9 100644 --- a/packages/pl-fe/src/queries/account-lists/use-blocks.ts +++ b/packages/pl-fe/src/queries/account-lists/use-blocks.ts @@ -1,5 +1,5 @@ import { makePaginatedResponseQuery } from '../utils/make-paginated-response-query'; -import { minifyAccountList } from '../utils/minify-list'; +import { minifyAccountList, minifyMutedAccountList } from '../utils/minify-list'; const useBlocks = makePaginatedResponseQuery( ['accountsLists', 'blocked'], @@ -8,7 +8,7 @@ const useBlocks = makePaginatedResponseQuery( const useMutes = makePaginatedResponseQuery( ['accountsLists', 'muted'], - (client) => client.filtering.getMutes({ with_relationships: true }).then(minifyAccountList), + (client) => client.filtering.getMutes({ with_relationships: true }).then(minifyMutedAccountList), ); export { useBlocks, useMutes }; diff --git a/packages/pl-fe/src/queries/utils/minify-list.ts b/packages/pl-fe/src/queries/utils/minify-list.ts index 6af1bb865..dc3a075c4 100644 --- a/packages/pl-fe/src/queries/utils/minify-list.ts +++ b/packages/pl-fe/src/queries/utils/minify-list.ts @@ -3,7 +3,7 @@ import { store } from 'pl-fe/store'; import { queryClient } from '../client'; -import type { Account, AdminAccount, AdminReport, PaginatedResponse, Status } from 'pl-api'; +import type { Account, AdminAccount, AdminReport, MutedAccount, PaginatedResponse, Status } from 'pl-api'; const minifyList = ({ previous, next, items, ...response }: PaginatedResponse, minifier: (value: T1) => T2, importer?: (items: Array) => void): PaginatedResponse => { importer?.(items); @@ -26,6 +26,11 @@ const minifyAccountList = (response: PaginatedResponse): PaginatedRespo store.dispatch(importEntities({ accounts }) as any); }); +const minifyMutedAccountList = (response: PaginatedResponse): PaginatedResponse<[string, string | null]> => + minifyList(response, (account) => [account.id, account.mute_expires_at], (accounts) => { + store.dispatch(importEntities({ accounts }) as any); + }); + const minifyAdminAccount = ({ account, ...adminAccount }: AdminAccount) => { store.dispatch(importEntities({ accounts: [account] }) as any); queryClient.setQueryData(['admin', 'accounts', adminAccount.id], adminAccount); @@ -70,4 +75,4 @@ const minifyAdminReportList = (response: PaginatedResponse) => } }); -export { minifyList, minifyAccountList, minifyStatusList, minifyAdminAccount, minifyAdminAccountList, minifyAdminReport, minifyAdminReportList }; +export { minifyList, minifyAccountList, minifyMutedAccountList, minifyStatusList, minifyAdminAccount, minifyAdminAccountList, minifyAdminReport, minifyAdminReportList };