/* * SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * * SPDX-License-Identifier: AGPL-3.0-only */ import type { ChangeEvent, FormEvent } from 'react' import React, { useEffect, useState } from 'react' import { Alert, Button, Card, Form } from 'react-bootstrap' import { Trans, useTranslation } from 'react-i18next' import { updateDisplayName } from '../../../api/me' import { fetchAndSetUser } from '../../login-page/auth/utils' import { useApplicationState } from '../../../hooks/common/use-application-state' export const ProfileDisplayName: React.FC = () => { const regexInvalidDisplayName = /^\s*$/ const { t } = useTranslation() const userName = useApplicationState((state) => state.user?.name) const [submittable, setSubmittable] = useState(false) const [error, setError] = useState(false) const [displayName, setDisplayName] = useState('') useEffect(() => { if (userName !== undefined) { setDisplayName(userName) } }, [userName]) if (!userName) { return User not logged in } const changeNameField = (event: ChangeEvent) => { setSubmittable(!regexInvalidDisplayName.test(event.target.value)) setDisplayName(event.target.value) } const doAsyncChange = async () => { await updateDisplayName(displayName) await fetchAndSetUser() } const changeNameSubmit = (event: FormEvent) => { doAsyncChange().catch(() => setError(true)) event.preventDefault() } return (
) }