import React, { FC, useState, useEffect } from 'react'; import path from 'path'; import fs from 'fs'; import { useResource } from 'react-request-hook'; import DappbotAPI from '@eximchain/dappbot-api-client'; import ArgPrompt from './helpers/ArgPrompt'; import Responses from '@eximchain/dappbot-types/spec/responses'; import User from '@eximchain/dappbot-types/spec/user'; import { Loader, errMsgFromResource, SuccessBox, ErrorBox, ChevronText } from './helpers'; import { trackLogin, saveAuthToFile } from '../services'; export interface LoginFlowProps { API: DappbotAPI } export const LoginFlow: FC = ({ API }) => { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [loginResult, requestLogin] = useResource(API.auth.login.resource); const { data, isLoading, error } = loginResult; useEffect(function handleLoginResponse() { if ( Responses.isSuccessResponse(data) && User.isAuthData(data.data) ) { saveAuthToFile(data.data) trackLogin(API, false); } }, [data]) let credentialsLabel = Please enter your login credentials.; if (username === '') { return ( ) } else if (password === '') { return ( { requestLogin({ username, password: val }); setPassword(val) }} /> ) } else if (isLoading || (!data && !error)) { return ( ) } else if (error) { return ( ) } else { return ( ) } } export default LoginFlow;