CoastalCommitsPastes/client/components/new-post/password/index.tsx

54 lines
1.9 KiB
TypeScript
Raw Normal View History

import Input from "@geist-ui/core/dist/input"
import Modal from "@geist-ui/core/dist/modal"
import Note from "@geist-ui/core/dist/note"
import Spacer from "@geist-ui/core/dist/spacer"
2022-03-21 06:28:06 -04:00
import { useState } from "react"
type Props = {
creating?: boolean
2022-03-21 06:28:06 -04:00
isOpen: boolean
onClose: () => void
onSubmit: (password: string) => void
}
const PasswordModal = ({ isOpen, onClose, onSubmit: onSubmitAfterVerify, creating }: Props) => {
2022-03-21 06:28:06 -04:00
const [password, setPassword] = useState<string>()
const [confirmPassword, setConfirmPassword] = useState<string>()
const [error, setError] = useState<string>()
const onSubmit = () => {
if (!password || (creating && !confirmPassword)) {
2022-03-21 06:28:06 -04:00
setError('Please enter a password')
return
}
if (password !== confirmPassword && creating) {
2022-03-21 06:28:06 -04:00
setError("Passwords do not match")
return
}
onSubmitAfterVerify(password)
}
return (<>
{<Modal visible={isOpen} >
<Modal.Title>Enter a password</Modal.Title>
<Modal.Content>
{!error && creating && <Note type="warning" label='Warning'>
2022-03-21 06:28:06 -04:00
This doesn&apos;t protect your post from the server administrator.
</Note>}
{error && <Note type="error" label='Error'>
{error}
</Note>}
<Spacer />
<Input width={"100%"} label="Password" marginBottom={1} htmlType="password" placeholder="Password" onChange={(e) => setPassword(e.target.value)} />
{creating && <Input width={"100%"} label="Confirm" htmlType="password" placeholder="Confirm Password" onChange={(e) => setConfirmPassword(e.target.value)} />}
2022-03-21 06:28:06 -04:00
</Modal.Content>
<Modal.Action passive onClick={onClose}>Cancel</Modal.Action>
<Modal.Action onClick={onSubmit}>Submit</Modal.Action>
</Modal>}
</>)
}
export default PasswordModal