// 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 { SaveIcon } from '@freesewing/react/components/Icon' import { StringInput } from '@freesewing/react/components/Input' /** * A component to manage the user's Github handle in their account data * * @component * @returns {JSX.Element} */ export const Github = () => { // Hooks const { account, setAccount } = useAccount() const backend = useBackend() const { setLoadingStatus } = useContext(LoadingStatusContext) // State const [githubUsername, setGithubUsername] = useState(account.data.githubUsername || '') const [githubEmail, setGithubEmail] = useState(account.data.githubEmail || '') // Helper method to save changes const save = async () => { setLoadingStatus([true, 'Saving bio']) const [status, body] = await backend.updateAccount({ data: { githubUsername, githubEmail } }) if (status === 200 && body.result === 'success') { setAccount(body.account) setLoadingStatus([true, 'GitHub info updated', true, true]) } else setLoadingStatus([true, 'Something went wrong. Please report this', true, true]) } return (