import React, { useState, useContext, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { Button, Grid, LinearProgress, Typography, Alert, Select, MenuItem, Box, useTheme, Tooltip, type SelectChangeEvent, } from '@mui/material'; import { Bolt, Add, DeleteSweep, Logout, Download } from '@mui/icons-material'; import RobotAvatar from '../../components/RobotAvatar'; import TokenInput from './TokenInput'; import { type Slot, type Robot } from '../../models'; import { AppContext, type UseAppStoreType } from '../../contexts/AppContext'; import { genBase62Token } from '../../utils'; import { LoadingButton } from '@mui/lab'; import { GarageContext, type UseGarageStoreType } from '../../contexts/GarageContext'; import { FederationContext, type UseFederationStoreType } from '../../contexts/FederationContext'; interface RobotProfileProps { robot: Robot; setRobot: (state: Robot) => void; setView: (state: 'welcome' | 'onboarding' | 'recovery' | 'profile') => void; getGenerateRobot: (token: string, slot?: number) => void; inputToken: string; logoutRobot: () => void; setInputToken: (state: string) => void; width: number; baseUrl: string; } const RobotProfile = ({ inputToken, getGenerateRobot, setInputToken, logoutRobot, setView, width, }: RobotProfileProps): JSX.Element => { const { windowSize, hostUrl } = useContext(AppContext); const { currentOrder } = useContext(FederationContext); const { garage, robotUpdatedAt } = useContext(GarageContext); const { t } = useTranslation(); const theme = useTheme(); const navigate = useNavigate(); const [loading, setLoading] = useState(true); useEffect(() => { if (garage.getRobot().nickname != null && garage.getRobot().avatarLoaded) { setLoading(false); } }, [robotUpdatedAt]); const handleAddRobot = (): void => { getGenerateRobot(genBase62Token(36)); setLoading(true); }; const handleChangeSlot = (e: SelectChangeEvent): void => { garage.currentSlot = Number(e.target.value); setLoading(true); }; return ( {garage.getRobot().avatarLoaded && garage.getRobot().nickname != null ? (
{width < 19 ? null : ( )} {garage.getRobot().nickname} {width < 19 ? null : ( )}
) : ( <> {t('Building your robot!')} )}
{garage.getRobot().found && Number(garage.getRobot().lastOrderId) > 0 ? ( {t('Welcome back!')} ) : ( <> )} {Boolean(garage.getRobot().activeOrderId) && garage.getRobot().avatarLoaded && Boolean(garage.getRobot().nickname) ? ( ) : null} {Boolean(garage.getRobot().lastOrderId) && garage.getRobot().avatarLoaded && Boolean(garage.getRobot().nickname) ? ( {t( 'Reusing trading identity degrades your privacy against other users, coordinators and observers.', )} ) : null} null} />
{t('Robot Garage')}
{t('Add Robot')} {window.NativeRobosats === undefined ? ( ) : null} ); }; export default RobotProfile;