import * as React from "react"; import * as Yup from "yup"; import { ErrorMessage, Form, Formik, FormikHelpers } from "formik"; import { useStorjWidgetContext } from "../../StorjWidget.context"; import { emptyInputErrorMessage, EScreenView, LocalStorageKey, RCloneEndPoints, storjGalileoLink, storJStorageName, } from "../../../../constants"; import { useCommonStyles } from "../../StorjWidget.style"; import fetchRClone from "../../../../helpers/fetchRClone"; import { createUseStyles } from "react-jss"; import BackButton from "../../../BackButton"; const AccessGrantValidationSchema = Yup.object().shape({ accessGrant: Yup.string().required(emptyInputErrorMessage), remoteName: Yup.string().required(emptyInputErrorMessage), }); const useStyles = createUseStyles({ remoteListText: { cursor: "pointer", "&:hover": { textDecoration: "underline", }, marginLeft: "auto", }, headerContainer: { display: "flex", alignItems: "center", }, accountText: { marginTop: 24, }, }); interface FormValues { accessGrant: string; remoteName: string; } const initialValues: FormValues = { accessGrant: "", remoteName: "", }; const AccessGrantScreen = () => { const selectedRemoteName = localStorage.getItem( LocalStorageKey.SELECTED_REMOTE ); const { setCurrentScreen } = useStorjWidgetContext(); const classes = useStyles(); const commonClasses = useCommonStyles(); const handleSubmit = async ( values: FormValues, helpers: FormikHelpers ) => { const { setSubmitting, setFieldError } = helpers; console.log(JSON.stringify(values)); setSubmitting(true); const options = { body: JSON.stringify({ name: values.remoteName, type: storJStorageName, parameters: { access_grant: values.accessGrant }, }), }; const aboutOptions = { body: JSON.stringify({ fs: `${values.remoteName}:`, }), }; try { await fetchRClone(RCloneEndPoints.createConfig, options); const response = await fetchRClone( RCloneEndPoints.getFsInfo, aboutOptions ); if (response.ok) { localStorage.setItem( LocalStorageKey.SELECTED_REMOTE, values.remoteName ); setCurrentScreen(EScreenView.ACTIONS_SCREEN); } else { await fetchRClone(RCloneEndPoints.deleteConfig, { body: JSON.stringify({ name: values.remoteName, }), }); throw new Error(); } } catch (error) { setFieldError( "accessGrant", "Something went wrong while connecting to the Storj. Please make sure that your access grant is valid." ); console.error(error); } finally { setSubmitting(false); } }; const handleClickRemoteList = () => { setCurrentScreen(EScreenView.REMOTE_LIST_SCREEN); }; return ( {({ isSubmitting, values, handleChange }) => (
{selectedRemoteName && (

My Remote List

)} {!selectedRemoteName && ( {`Don't have a Storj account yet? You can create a free account from `} here . )} )}
); }; export default AccessGrantScreen;