import React, { useCallback, useState } from 'react'; import { useTranslation } from 'next-i18next'; import { toastError, toastSuccess } from '~/client/util/apiNotification'; import { apiv3Post } from '~/client/util/apiv3-client'; import BookmarkFolderNameInput from '~/components/Bookmarks/BookmarkFolderNameInput'; import BookmarkFolderTree from '~/components/Bookmarks/BookmarkFolderTree'; import BookmarkItemList from '~/components/Bookmarks/BookmarkItemList'; import FolderPlusIcon from '~/components/Icons/FolderPlusIcon'; import { useSWRxBookamrkFolderAndChild } from '~/stores/bookmark-folder'; const BookmarkContents = (): JSX.Element => { const { t } = useTranslation(); const [isCreateAction, setIsCreateAction] = useState(false); const { mutate: mutateChildBookmarkData } = useSWRxBookamrkFolderAndChild(null); const onClickNewBookmarkFolder = useCallback(() => { setIsCreateAction(true); }, []); const onPressEnterHandlerForCreate = useCallback(async(folderName: string) => { try { await apiv3Post('/bookmark-folder', { name: folderName, parent: null }); await mutateChildBookmarkData(); setIsCreateAction(false); toastSuccess(t('toaster.create_succeeded', { target: t('bookmark_folder.bookmark_folder') })); } catch (err) { toastError(err); } }, [mutateChildBookmarkData, t]); const renderAddNewBookmarkFolder = useCallback(() => ( <>
{ isCreateAction && (
setIsCreateAction(false)} onPressEnter={onPressEnterHandlerForCreate} />
) } ), [isCreateAction, onClickNewBookmarkFolder, onPressEnterHandlerForCreate, t]); return ( <> { renderAddNewBookmarkFolder() } ); }; export default BookmarkContents;