import React, { useState } from "react"; import { useSpaceQuery } from "@/features/space/queries/space-query.ts"; import { EditSpaceForm } from "@/features/space/components/edit-space-form.tsx"; import { Button, Divider, Text } from "@mantine/core"; import DeleteSpaceModal from "./delete-space-modal"; import { useDisclosure } from "@mantine/hooks"; import ExportModal from "@/components/common/export-modal.tsx"; import AvatarUploader from "@/components/common/avatar-uploader.tsx"; import { uploadSpaceIcon, removeSpaceIcon, } from "@/features/attachments/services/attachment-service.ts"; import { useTranslation } from "react-i18next"; import { AvatarIconType } from "@/features/attachments/types/attachment.types.ts"; import { queryClient } from "@/main.tsx"; import { ResponsiveSettingsContent, ResponsiveSettingsControl, ResponsiveSettingsRow, } from "@/components/ui/responsive-settings-row.tsx"; interface SpaceDetailsProps { spaceId: string; readOnly?: boolean; } export default function SpaceDetails({ spaceId, readOnly }: SpaceDetailsProps) { const { t } = useTranslation(); const { data: space, isLoading, refetch } = useSpaceQuery(spaceId); const [exportOpened, { open: openExportModal, close: closeExportModal }] = useDisclosure(false); const [isIconUploading, setIsIconUploading] = useState(false); const handleIconUpload = async (file: File) => { setIsIconUploading(true); try { await uploadSpaceIcon(file, spaceId); await refetch(); await queryClient.invalidateQueries({ predicate: (item) => ["spaces"].includes(item.queryKey[0] as string), }); } catch (err) { // skip } finally { setIsIconUploading(false); } }; const handleIconRemove = async () => { setIsIconUploading(true); try { await removeSpaceIcon(spaceId); await refetch(); await queryClient.invalidateQueries({ predicate: (item) => ["spaces"].includes(item.queryKey[0] as string), }); } catch (err) { // skip } finally { setIsIconUploading(false); } }; return ( <> {space && (
{t("Details")}
{t("Icon")}
{!readOnly && ( <> {t("Export space")} {t("Export all pages and attachments in this space.")} {t("Delete space")} {t("Delete this space with all its pages and data.")} )}
)} ); }