import * as React from "bloatless-react"; import { ViewController } from "../viewController"; import { StringToTextSpan } from "../Components/textSpan"; import FileTransferViewModel, { FileTransferModals, FileTransferOption, } from "../../ViewModel/Global/fileTransferViewModel"; import CoreViewModel from "../../ViewModel/Global/coreViewModel"; import ConnectionViewModel from "../../ViewModel/Global/connectionViewModel"; import StorageModel from "../../Model/Global/storageModel"; export function DataTransferModalWrapper( coreViewModel: CoreViewModel, connectionViewModel: ConnectionViewModel, fileTransferViewModel: FileTransferViewModel, ) { return (
{DirectionSelectionModal( coreViewModel, connectionViewModel, fileTransferViewModel, )} {FileSelectionModal(coreViewModel, fileTransferViewModel)} {TransferDataDisplayModal(coreViewModel, fileTransferViewModel)} {TransferDisplayModal(coreViewModel, fileTransferViewModel)} {TransferDataInputModal(coreViewModel, fileTransferViewModel)} {DataReceptionModal(coreViewModel, fileTransferViewModel)} {ImportModal(coreViewModel, fileTransferViewModel)}
); } function DirectionSelectionModal( coreViewModel: CoreViewModel, connectionViewModel: ConnectionViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.DirectionSelection, ); const isDisconnected = React.createProxyState( [connectionViewModel.isConnected], () => connectionViewModel.isConnected.value == false, ); return ( ); } function FileSelectionModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { // option const OptionConverter: React.StateItemConverter = ( fileOption: FileTransferOption, ) => { return OptionEntry(fileOption, fileTransferViewModel); }; function OptionEntry( fileOption: FileTransferOption, fileTransferViewModel: FileTransferViewModel, ) { const isSelected = new React.State(false); if (fileTransferViewModel.selectedPaths.value.has(fileOption.path)) { isSelected.value = true; } isSelected.subscribeSilent((isSelected) => { if (isSelected == true) { fileTransferViewModel.selectedPaths.add(fileOption.path); } else { fileTransferViewModel.selectedPaths.remove(fileOption.path); } }); function toggle() { isSelected.value = !isSelected.value; } return ( ); } // state const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.FileSelection, ); return ( ); } function TransferDataDisplayModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.TransferDataDisplay, ); return ( ); } function TransferDisplayModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.TransferDisplay, ); return ( ); } function TransferDataInputModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.TransferDataInput, ); return ( ); } function DataReceptionModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.ReceptionDisplay, ); return ( ); } function ImportModal( coreViewModel: CoreViewModel, fileTransferViewModel: FileTransferViewModel, ) { const isPresented = React.createProxyState( [fileTransferViewModel.presentedModal], () => fileTransferViewModel.presentedModal.value == FileTransferModals.ImportModal, ); return ( ); }