// Copyright 2025 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { useCallback, useMemo } from 'react'; import type { MutableRefObject } from 'react'; import { ListBox, ListBoxItem } from 'react-aria-components'; import type { LocalizerType } from '../../types/I18N'; import { PreferencesContent } from '../Preferences'; import { SettingsRow } from '../PreferencesUtil'; import type { ChatFolderId } from '../../types/ChatFolder'; import { CHAT_FOLDER_PRESETS, matchesChatFolderPreset, type ChatFolderParams, type ChatFolderPreset, type ChatFolderRecord, } from '../../types/ChatFolder'; import { Button, ButtonVariant } from '../Button'; // import { showToast } from '../../state/ducks/toast'; export type ChatFoldersPageProps = Readonly<{ i18n: LocalizerType; onBack: () => void; onOpenEditChatFoldersPage: (chatFolderId: ChatFolderId | null) => void; chatFolders: ReadonlyArray; onCreateChatFolder: (params: ChatFolderParams) => void; settingsPaneRef: MutableRefObject; }>; export function ChatFoldersPage(props: ChatFoldersPageProps): JSX.Element { const { i18n, onOpenEditChatFoldersPage } = props; // showToast( // i18n("icu:Preferences__ChatFoldersPage__SuggestedFoldersSection__AddButton__Toast") // ) const handleOpenEditChatFoldersPageForNew = useCallback(() => { onOpenEditChatFoldersPage(null); }, [onOpenEditChatFoldersPage]); return ( } contents={ <>

{i18n('icu:Preferences__ChatFoldersPage__Description')}

{i18n( 'icu:Preferences__ChatFoldersPage__FoldersSection__CreateAFolderButton' )} {i18n( 'icu:Preferences__ChatFoldersPage__FoldersSection__AllChatsFolder__Title' )} {props.chatFolders.map(chatFolder => { return ( ); })}
} contentsRef={props.settingsPaneRef} title={i18n('icu:Preferences__ChatFoldersPage__Title')} /> ); } function ChatFolderPresetItem(props: { i18n: LocalizerType; icon: 'UnreadChats' | 'DirectChats' | 'GroupChats'; title: string; description: string; preset: ChatFolderPreset; chatFolders: ReadonlyArray; onCreateChatFolder: (params: ChatFolderParams) => void; }) { const { i18n, title, preset, chatFolders, onCreateChatFolder } = props; const handleCreateChatFolder = useCallback(() => { onCreateChatFolder({ ...preset, name: title }); }, [onCreateChatFolder, title, preset]); const hasPreset = useMemo(() => { return chatFolders.some(chatFolder => { return matchesChatFolderPreset(chatFolder, preset); }); }, [chatFolders, preset]); if (hasPreset) { return null; } return (
  • {props.title} {props.description}
  • ); } function ChatFolderListItem(props: { chatFolder: ChatFolderRecord; onOpenEditChatFoldersPage: (chatFolderId: ChatFolderId) => void; }): JSX.Element { const { chatFolder, onOpenEditChatFoldersPage } = props; const handleAction = useCallback(() => { onOpenEditChatFoldersPage(chatFolder.id); }, [chatFolder, onOpenEditChatFoldersPage]); return ( {props.chatFolder.name} ); } // function ChatFolderContextMenu(props: { // i18n: LocalizerType; // children: ReactNode; // }) { // const { i18n } = props; // return ( // // {props.children} // // // {i18n( // eslint-disable-next-line max-len // 'icu:Preferences__ChatsPage__ChatFoldersSection__ChatFolderItem__ContextMenu__EditFolder' // )} // // // {i18n( // eslint-disable-next-line max-len // 'icu:Preferences__ChatsPage__ChatFoldersSection__ChatFolderItem__ContextMenu__DeleteFolder' // )} // // // // ); // } // function DeleteChatFolderDialog(props: { i18n: LocalizerType }): JSX.Element { // const { i18n } = props; // return ( // null, // }, // ]} // onClose={() => null} // > // {i18n('icu:Preferences__ChatsPage__DeleteChatFolderDialog__Description', { // chatFolderTitle: '', // })} // // ); // }