import React, { useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { toastSuccess } from '~/client/util/apiNotification'; import { IDataWithMeta, IPageHasId, IPageInfo, } from '~/interfaces/page'; import { useEmptyTrashModal } from '~/stores/modal'; import { useSWRxDescendantsPageListForCurrrentPath, useSWRxPageInfoForList } from '~/stores/page-listing'; const EmptyTrashButton = () => { const { t } = useTranslation(); const { open: openEmptyTrashModal } = useEmptyTrashModal(); const { data: pagingResult, mutate } = useSWRxDescendantsPageListForCurrrentPath(); const pageIds = pagingResult?.items?.map(page => page._id); const { injectTo } = useSWRxPageInfoForList(pageIds, null, true, true); let pageWithMetas: IDataWithMeta[] = []; const convertToIDataWithMeta = (page) => { return { data: page }; }; if (pagingResult != null) { const dataWithMetas = pagingResult.items.map(page => convertToIDataWithMeta(page)); pageWithMetas = injectTo(dataWithMetas); } const deletablePages = pageWithMetas.filter(page => page.meta?.isAbleToDeleteCompletely); const onEmptiedTrashHandler = useCallback(() => { toastSuccess(t('empty_trash')); mutate(); }, [t, mutate]); const emptyTrashClickHandler = () => { if (deletablePages.length === 0) { return } openEmptyTrashModal(deletablePages, { onEmptiedTrash: onEmptiedTrashHandler, canDelepeAllPages: pagingResult?.totalCount === deletablePages.length }); }; return (
); }; export default EmptyTrashButton;