From 7c33d673e55cb162fce5a48fa0fe94a6b28f528f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Fri, 11 Jul 2025 15:49:33 +0200 Subject: [PATCH] pl-fe: wip filtering reports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- .../features/admin/components/admin-tabs.tsx | 2 +- .../src/features/admin/tabs/dashboard.tsx | 6 +- .../pl-fe/src/features/admin/tabs/reports.tsx | 69 ++++++++++++++++--- packages/pl-fe/src/locales/en.json | 3 + packages/pl-fe/src/pages/search/search.tsx | 2 +- 5 files changed, 66 insertions(+), 16 deletions(-) diff --git a/packages/pl-fe/src/features/admin/components/admin-tabs.tsx b/packages/pl-fe/src/features/admin/components/admin-tabs.tsx index 38802af32..05a922227 100644 --- a/packages/pl-fe/src/features/admin/components/admin-tabs.tsx +++ b/packages/pl-fe/src/features/admin/components/admin-tabs.tsx @@ -26,7 +26,7 @@ const AdminTabs: React.FC = () => { }, { name: '/pl-fe/admin/reports', text: intl.formatMessage(messages.reports), - to: '/pl-fe/admin/reports', + to: '/pl-fe/admin/reports?resolved=false', count: pendingReportsCount, }, { name: '/pl-fe/admin/approval', diff --git a/packages/pl-fe/src/features/admin/tabs/dashboard.tsx b/packages/pl-fe/src/features/admin/tabs/dashboard.tsx index c518e1aaf..892e9f829 100644 --- a/packages/pl-fe/src/features/admin/tabs/dashboard.tsx +++ b/packages/pl-fe/src/features/admin/tabs/dashboard.tsx @@ -93,14 +93,14 @@ const Dashboard: React.FC = () => { measure='opened_reports' startAt={monthAgo} endAt={today} - to='/pl-fe/admin/reports' + to='/pl-fe/admin/reports?resolved=false' label={} /> } /> @@ -115,7 +115,7 @@ const Dashboard: React.FC = () => { label={} /> - }} />} /> + }} />} /> }} />} /> {/* 0 }} />} /> 0 }} />} /> */} diff --git a/packages/pl-fe/src/features/admin/tabs/reports.tsx b/packages/pl-fe/src/features/admin/tabs/reports.tsx index 4ec2842f9..fa772d62e 100644 --- a/packages/pl-fe/src/features/admin/tabs/reports.tsx +++ b/packages/pl-fe/src/features/admin/tabs/reports.tsx @@ -1,7 +1,12 @@ import React from 'react'; -import { defineMessages, useIntl } from 'react-intl'; +import { defineMessages, FormattedList, FormattedMessage, useIntl } from 'react-intl'; +import { useSearchParams } from 'react-router-dom-v5-compat'; +import { useAccount } from 'pl-fe/api/hooks/accounts/use-account'; import ScrollableList from 'pl-fe/components/scrollable-list'; +import HStack from 'pl-fe/components/ui/hstack'; +import IconButton from 'pl-fe/components/ui/icon-button'; +import Text from 'pl-fe/components/ui/text'; import { useReports } from 'pl-fe/queries/admin/use-reports'; import Report from '../components/report'; @@ -14,21 +19,63 @@ const messages = defineMessages({ const Reports: React.FC = () => { const intl = useIntl(); + const [params, setParams] = useSearchParams(); + + const resolved = params.get('resolved'); + const accountId = params.get('account_id') || undefined; + const targetAccountId = params.get('target_account_id') || undefined; + + const { account } = useAccount(accountId); + const { account: targetAccount } = useAccount(targetAccountId); const { data: reportIds = [], isPending } = useReports({ - resolved: false, + resolved: resolved === 'true' ? true : resolved === 'false' ? false : undefined, + account_id: accountId, + target_account_id: targetAccountId, }); + const handleUnsetAccounts = () => { + params.delete('account_id'); + params.delete('target_account_id'); + setParams(params => Object.fromEntries(params.entries())); + }; + return ( - - {reportIds.map(report => report && )} - + <> + {(accountId || targetAccountId) && ( + + + + {account?.acct} }} + />, + targetAccount && {targetAccount?.acct} }} + />, + ]} + /> }} + /> + + + )} + + {reportIds.map(report => report && )} + + ); }; diff --git a/packages/pl-fe/src/locales/en.json b/packages/pl-fe/src/locales/en.json index 676bba95c..4646216a0 100644 --- a/packages/pl-fe/src/locales/en.json +++ b/packages/pl-fe/src/locales/en.json @@ -359,6 +359,9 @@ "column.admin.moderation_log": "Moderation log", "column.admin.relays": "Instance relays", "column.admin.reports": "Reports", + "column.admin.reports.filter_message": "You are displaying reports {query}.", + "column.admin.reports.filter_message.account": "from @{acct}", + "column.admin.reports.filter_message.target_account": "targeting @{acct}", "column.admin.reports.menu.moderation_log": "Moderation log", "column.admin.rules": "Instance rules", "column.admin.users": "Users", diff --git a/packages/pl-fe/src/pages/search/search.tsx b/packages/pl-fe/src/pages/search/search.tsx index a516bc924..1da557711 100644 --- a/packages/pl-fe/src/pages/search/search.tsx +++ b/packages/pl-fe/src/pages/search/search.tsx @@ -326,7 +326,7 @@ const SearchResults = () => { return ( <> {accountId ? ( - +