// Dependencies import { welcomeSteps } from './shared.mjs' // Context import { LoadingStatusContext } from '@freesewing/react/context/LoadingStatus' // Hooks import React, { useState, useContext } from 'react' import { useAccount } from '@freesewing/react/hooks/useAccount' import { useBackend } from '@freesewing/react/hooks/useBackend' // Components import { Link as WebLink } from '@freesewing/react/components/Link' import { NoIcon, OkIcon, SaveIcon, RightIcon } from '@freesewing/react/components/Icon' import { StringInput } from '@freesewing/react/components/Input' import { IconButton } from '@freesewing/react/components/Button' import { WelcomeIcons } from './shared.mjs' /* * Component for the account/username page * * @params {object} props - All React props * @params {bool} props.welcome - Set to true to use this component on the welcome page * @params {function} props.Link - A framework specific Link component for client-side routing */ export const Username = ({ welcome = false, Link = false }) => { if (!Link) Link = WebLink // Hooks const { account, setAccount } = useAccount() const backend = useBackend() const { setLoadingStatus } = useContext(LoadingStatusContext) const [username, setUsername] = useState(account.username) const [available, setAvailable] = useState(true) const update = async (value) => { if (value !== username) { setUsername(value) const result = await backend.isUsernameAvailable(value) setAvailable(result.available ? true : false) } } const save = async () => { setLoadingStatus([true, 'Saving username']) const [status, body] = await backend.updateAccount({ username }) if (status === 200 && body.result === 'success') { setAccount(body.account) setLoadingStatus([true, 'Username updated', true, true]) } else setLoadingStatus([true, 'Something went wrong. Please report this', true, true]) } const nextHref = welcomeSteps[account.control].length > 5 ? '/welcome/' + welcomeSteps[account.control][5] : '/docs/about/guide' let btnClasses = 'daisy-btn mt-4 capitalize ' if (welcome) btnClasses += 'w-64 daisy-btn-secondary' else btnClasses += 'w-full daisy-btn-primary' return (
available} placeholder={'Sorcha Ni Dhubghaill'} labelBL={ {available ? ( <> Username is available ) : ( <> This username is taken )} } />

{welcome ? ( <> Continue {welcomeSteps[account.control].length > 0 ? ( <> 5 / {welcomeSteps[account.control].length} ) : null} ) : null}
) }