import { Fragment, useEffect, useState } from 'react'; import { Folder, Home, SpaceLink } from '@hyper-hyper-space/home'; import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography } from '@mui/material'; import FolderTreeComponent from '../../components/FolderTreeComponent'; import { Box } from '@mui/system'; import { HashedObject, Identity, MutableReference, SpaceEntryPoint, Store } from '@hyper-hyper-space/core'; function SaveSpaceDialog(props: {home?: Home, spaceEntryPoint: HashedObject & SpaceEntryPoint, onClose: () => void}) { const [open, setOpen] = useState(true); const [saving, setSaving] = useState(false); const defaultName = props.spaceEntryPoint.getName(); const [name, setName] = useState((defaultName instanceof MutableReference? defaultName.getValue() : defaultName) || ''); const [nameError, setNameError] = useState(false); const [destination, setDestination] = useState(props.home?.desktop?.root as Folder); useEffect(() => { setDestination(props.home?.desktop?.root as Folder); }, [props.home]); const handleNameChange = (event: React.ChangeEvent) => { setName(event.target.value); }; const handleNameKeyPress = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault(); save(); } else { setNameError(false); } }; const close = () => { setOpen(false); props.onClose(); } const doSave = async () => { setSaving(true); const store = (props.home as Home).getStore() as Store; const link = new SpaceLink((props.home as Home).getAuthor() as Identity, props.spaceEntryPoint); link.name?.setValue(name); console.log('destination is defined', destination !== undefined); console.log('destination', destination); await store.save(link); destination.items?.push(link); await destination.items?.saveQueuedOps(); close(); } const save = () => { if (name.trim() === '') { setNameError(true); } else { doSave(); } } const folderChosen = (folder: Folder) => { console.log('choosed:') console.log(folder) setDestination(folder); } return ( Save Space to 🏠 { props.home?.desktop === undefined && Loading... } { props.home?.desktop !== undefined && Choose folder: } {props.home !== undefined && { !saving && } { saving && } } ); } export default SaveSpaceDialog;