From eef3a3baa6ca9c4030cd3d315f6de09dd26886a3 Mon Sep 17 00:00:00 2001 From: plebeius Date: Fri, 7 Nov 2025 18:43:58 +0100 Subject: [PATCH] refactor(topbar-edit-modal): simplify UI and default to empty input --- .../topbar-edit-modal.module.css | 6 --- .../topbar-edit-modal/topbar-edit-modal.tsx | 48 +++++++++++-------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/components/topbar-edit-modal/topbar-edit-modal.module.css b/src/components/topbar-edit-modal/topbar-edit-modal.module.css index 60610e80..7bd0fc21 100644 --- a/src/components/topbar-edit-modal/topbar-edit-modal.module.css +++ b/src/components/topbar-edit-modal/topbar-edit-modal.module.css @@ -134,9 +134,3 @@ border-top: var(--settings-modal-header-border-bottom); } -.topbarEditFooter button { - padding: 4px 12px; - cursor: pointer; - font-size: var(--body-font-size); -} - diff --git a/src/components/topbar-edit-modal/topbar-edit-modal.tsx b/src/components/topbar-edit-modal/topbar-edit-modal.tsx index 3c1d005a..0e7b5960 100644 --- a/src/components/topbar-edit-modal/topbar-edit-modal.tsx +++ b/src/components/topbar-edit-modal/topbar-edit-modal.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useState, useMemo } from 'react'; import { useAccount } from '@plebbit/plebbit-react-hooks'; import Plebbit from '@plebbit/plebbit-js'; import useTopbarEditModalStore from '../../stores/use-topbar-edit-modal-store'; @@ -30,17 +30,25 @@ const TopbarEditModal = () => { return new Set(codes); }; + // Memoize board codes to avoid recalculating + const allBoardCodes = useMemo(() => getAllBoardCodes(), []); + + // Check if all directories are visible (default state) + const allDirectoriesVisible = useMemo(() => allBoardCodes.every((code) => visibleDirectories.has(code)), [allBoardCodes, visibleDirectories]); + // Local state for text input (will be saved on Save click) - const [localDirectoryInput, setLocalDirectoryInput] = useState(directoriesToString(visibleDirectories)); + // Empty string means all directories visible (default), otherwise show only the specified codes + const [localDirectoryInput, setLocalDirectoryInput] = useState(allDirectoriesVisible ? '' : directoriesToString(visibleDirectories)); const [localSubscriptionVisibility, setLocalSubscriptionVisibility] = useState>(visibleSubscriptions); // Update local state when modal opens or store changes useEffect(() => { if (showModal) { - setLocalDirectoryInput(directoriesToString(visibleDirectories)); + const allVisible = allBoardCodes.every((code) => visibleDirectories.has(code)); + setLocalDirectoryInput(allVisible ? '' : directoriesToString(visibleDirectories)); setLocalSubscriptionVisibility(new Set(visibleSubscriptions)); } - }, [showModal, visibleDirectories, visibleSubscriptions]); + }, [showModal, visibleDirectories, visibleSubscriptions, allBoardCodes]); if (!showModal) { return null; @@ -63,14 +71,20 @@ const TopbarEditModal = () => { }; const handleSave = () => { - // Parse directory input and apply changes - const inputDirectories = stringToDirectories(localDirectoryInput); - const allCodes = getAllBoardCodes(); - - // Hide all directories first, then show only the ones in the input - allCodes.forEach((code) => { - setDirectoryVisibility(code, inputDirectories.has(code)); - }); + // If input is empty, show all directories (default behavior) + // Otherwise, show only the directories specified in the input + if (localDirectoryInput.trim() === '') { + // Show all directories + allBoardCodes.forEach((code) => { + setDirectoryVisibility(code, true); + }); + } else { + // Show only specified directories + const inputDirectories = stringToDirectories(localDirectoryInput); + allBoardCodes.forEach((code) => { + setDirectoryVisibility(code, inputDirectories.has(code)); + }); + } // Apply subscription visibility changes subscriptions.forEach((address: string) => { @@ -80,19 +94,12 @@ const TopbarEditModal = () => { closeTopbarEditModal(); }; - const handleCancel = () => { - // Reset local state to match store - setLocalDirectoryInput(directoriesToString(visibleDirectories)); - setLocalSubscriptionVisibility(new Set(visibleSubscriptions)); - closeTopbarEditModal(); - }; - return (

Custom Board List

-
@@ -129,7 +136,6 @@ const TopbarEditModal = () => {
-