From df0936a4f9115aa6e0a55e32b2f136dbed13769e Mon Sep 17 00:00:00 2001 From: Tommaso Casaburi Date: Thu, 21 May 2026 17:59:52 +0700 Subject: [PATCH] fix(ui): hardcode /all/ and /mod/ multiboard titles Use fixed labels in the board header and mobile board selector instead of directories metadata or translated mod copy. --- .../board-header/__tests__/board-header.test.tsx | 5 +---- src/components/board-header/board-header.tsx | 10 ++++------ .../boards-bar/__tests__/boards-bar.test.tsx | 3 --- src/components/boards-bar/boards-bar.tsx | 10 ++++------ 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/components/board-header/__tests__/board-header.test.tsx b/src/components/board-header/__tests__/board-header.test.tsx index 1c0febed..f0c98c9d 100644 --- a/src/components/board-header/__tests__/board-header.test.tsx +++ b/src/components/board-header/__tests__/board-header.test.tsx @@ -13,7 +13,6 @@ const testState = vi.hoisted(() => ({ community: { address: 'music-posting.eth' } as { address?: string; name?: string; publicKey?: string } | undefined, communityIdentifier: { name: 'music-posting.eth' } as { name?: string; publicKey?: string } | undefined, directories: [{ address: 'music-posting.eth', title: '/mu/ - Music' }] as Array<{ address: string; title?: string }>, - directoriesMetadata: { title: '/all/ - Directories' } as { title?: string } | undefined, isMobile: false, navigateMock: vi.fn(), offlineIconClass: 'offline', @@ -82,7 +81,6 @@ vi.mock('../../../hooks/use-stable-community', () => ({ vi.mock('../../../hooks/use-directories', () => ({ useDirectories: () => testState.directories, - useDirectoriesMetadata: () => testState.directoriesMetadata, })); vi.mock('../../../hooks/use-community-identifiers', () => ({ @@ -132,7 +130,6 @@ describe('BoardHeader', () => { testState.community = { address: 'music-posting.eth' }; testState.communityIdentifier = { name: 'music-posting.eth' }; testState.directories = [{ address: 'music-posting.eth', title: '/mu/ - Music' }]; - testState.directoriesMetadata = { title: '/all/ - Directories' }; testState.isMobile = false; testState.navigateMock.mockReset(); testState.offlineIconClass = 'offline'; @@ -169,7 +166,7 @@ describe('BoardHeader', () => { it('renders the all view title and banner chrome on desktop', async () => { await renderHeader('/all'); - expect(container.textContent).toContain('/all/ - Directories'); + expect(container.textContent).toContain('/all/ - All 5chan Directories'); expect(container.querySelector('img')?.getAttribute('src')).toBe('banner-a.png'); expect(container.textContent).not.toContain('subscriptions_subtitle'); }); diff --git a/src/components/board-header/board-header.tsx b/src/components/board-header/board-header.tsx index e1c0befc..65e4b4e0 100644 --- a/src/components/board-header/board-header.tsx +++ b/src/components/board-header/board-header.tsx @@ -9,14 +9,13 @@ import { useStableCommunity } from '../../hooks/use-stable-community'; import { isAllView, isSubscriptionsView, isModView } from '../../lib/utils/view-utils'; import { isArchiveRoute, isDirectoryListRoute } from '../../lib/utils/route-utils'; import styles from './board-header.module.css'; -import { useDirectoriesMetadata, useDirectories } from '../../hooks/use-directories'; +import { useDirectories } from '../../hooks/use-directories'; import { useResolvedCommunityAddress } from '../../hooks/use-resolved-community-address'; import useSafeAccountComment from '../../hooks/use-safe-account-comment'; import useIsMobile from '../../hooks/use-is-mobile'; import useIsCommunityOffline from '../../hooks/use-is-community-offline'; import { shouldShowSnow } from '../../lib/snow'; import Tooltip from '../tooltip'; -import startCase from 'lodash/startCase'; import { BANNERS } from '../../generated/asset-manifest'; const ImageBanner = () => { @@ -63,7 +62,6 @@ const BoardHeader = () => { const stableCommunity = useStableCommunity(communityAddress); const { address, shortAddress } = stableCommunity || {}; - const directoriesMetadata = useDirectoriesMetadata(); const directories = useDirectories(); // Find matching community from default list to get its title @@ -78,18 +76,18 @@ const BoardHeader = () => { const subscriptionsSubtitle = t('subscriptions_subtitle', { count: subscriptionsCount }); const title = isInAllView - ? directoriesMetadata?.title || '/all/ - 5chan Directories' + ? '/all/ - All 5chan Directories' : isInSubscriptionsView ? '/subs/ - Subscriptions' : isInModView - ? startCase(t('boards_you_moderate')) + ? '/mod/ - Boards You Moderate' : defaultCommunity?.title || stableCommunity?.title; const subtitle = isInAllView ? '' : isInSubscriptionsView ? subscriptionsSubtitle : isInModView - ? '/mod/' + ? '' : isInDirectoryListView ? t('directory_subtitle', { boardIdentifier: params.boardIdentifier }) : `${address || communityAddress || ''}`; diff --git a/src/components/boards-bar/__tests__/boards-bar.test.tsx b/src/components/boards-bar/__tests__/boards-bar.test.tsx index 4d26b78c..dfc6c27c 100644 --- a/src/components/boards-bar/__tests__/boards-bar.test.tsx +++ b/src/components/boards-bar/__tests__/boards-bar.test.tsx @@ -15,7 +15,6 @@ const testState = vi.hoisted(() => ({ { address: 'music-posting.eth', title: '/mu/ - Music' }, { address: 'tech-posting.eth', title: '/g/ - Technology' }, ] as Array<{ address: string; title?: string }>, - directoriesMetadata: { title: '/all/ - All Boards' } as { title?: string } | null, initializeVisibilityMock: vi.fn(), navigateMock: vi.fn(), openBoardsBarEditModalMock: vi.fn(), @@ -78,7 +77,6 @@ vi.mock('../../../hooks/use-directories', async () => { return { ...actual, useDirectories: () => testState.directories, - useDirectoriesMetadata: () => testState.directoriesMetadata, }; }); @@ -160,7 +158,6 @@ describe('BoardsBar', () => { { address: 'music-posting.eth', title: '/mu/ - Music' }, { address: 'tech-posting.eth', title: '/g/ - Technology' }, ]; - testState.directoriesMetadata = { title: '/all/ - All Boards' }; testState.navigateMock.mockReset(); testState.openBoardsBarEditModalMock.mockReset(); testState.openCreateBoardModalMock.mockReset(); diff --git a/src/components/boards-bar/boards-bar.tsx b/src/components/boards-bar/boards-bar.tsx index a6933362..8021f493 100644 --- a/src/components/boards-bar/boards-bar.tsx +++ b/src/components/boards-bar/boards-bar.tsx @@ -5,7 +5,7 @@ import getShortAddress from '../../lib/get-short-address'; import useAccountsStore from '@bitsocial/bitsocial-react-hooks/dist/stores/accounts'; import { isAllView, isCatalogView, isModView, isSubscriptionsView } from '../../lib/utils/view-utils'; import { useAccountCommunityAddresses } from '../../hooks/use-account-community-addresses'; -import { useDirectories, useDirectoriesMetadata, DirectoryCommunity } from '../../hooks/use-directories'; +import { useDirectories, DirectoryCommunity } from '../../hooks/use-directories'; import { useBoardPath, useResolvedCommunityAddress } from '../../hooks/use-resolved-community-address'; import useSafeAccountComment from '../../hooks/use-safe-account-comment'; import { getBoardPath, extractDirectoryFromTitle } from '../../lib/utils/route-utils'; @@ -19,7 +19,6 @@ import styles from './boards-bar.module.css'; import capitalize from 'lodash/capitalize'; import debounce from 'lodash/debounce'; import lowerCase from 'lodash/lowerCase'; -import startCase from 'lodash/startCase'; const SearchBar = ({ setShowSearchBar }: { setShowSearchBar: (show: boolean) => void }) => { const { t } = useTranslation(); @@ -302,7 +301,6 @@ const BoardsBarMobile = ({ communityAddress }: { communityAddress?: string }) => const { t } = useTranslation(); const navigate = useNavigate(); const directories = useDirectories(); - const directoriesMetadata = useDirectoriesMetadata(); const displayCommunityAddress = communityAddress && communityAddress.length > 30 ? communityAddress.slice(0, 30).concat('...') : communityAddress; const [showSearchBar, setShowSearchBar] = useState(false); @@ -325,9 +323,9 @@ const BoardsBarMobile = ({ communityAddress }: { communityAddress?: string }) => // Build multiboards with full titles, then combine with directory boards and sort alphabetically const sortedBoardOptions = useMemo(() => { - const allTitle = directoriesMetadata?.title || '/all/ - All 5chan Directories'; + const allTitle = '/all/ - All 5chan Directories'; const subsTitle = '/subs/ - Subscriptions'; - const modTitle = `/mod/ - ${startCase(t('boards_you_moderate'))}`; + const modTitle = '/mod/ - Boards You Moderate'; const multiboards: Array<{ value: string; label: string }> = [ { value: 'all', label: allTitle }, @@ -341,7 +339,7 @@ const BoardsBarMobile = ({ communityAddress }: { communityAddress?: string }) => }); return [...multiboards, ...directoryOptions].sort((a, b) => a.label.localeCompare(b.label, undefined, { sensitivity: 'base' })); - }, [directoriesMetadata?.title, t, accountCommunityAddresses.length, directoryBoards]); + }, [accountCommunityAddresses.length, directoryBoards]); const boardSelect = (