eb975e5301
Merge branch 'main' into feature/140 #140 Merge remote-tracking branch 'origin/main' into feature/140 #140 #140 #140 #140 #140 Merge remote-tracking branch 'origin/main' into feature/140 #140 #140 #140 #140 #140 #140 #140 #140 #140 #140 #140 Merge remote-tracking branch 'origin/main' into feature/140 Merge remote-tracking branch 'origin/main' into feature/140 #140 ぼちぼち Merge remote-tracking branch 'origin/main' into feature/140 #140 #140 #140 Co-authored-by: miteruzo <miteruzo@naver.com> Reviewed-on: #256
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { Button } from '@/components/ui/button'
|
||
import { Dialog,
|
||
DialogContent,
|
||
DialogTitle } from '@/components/ui/dialog'
|
||
import { toast } from '@/components/ui/use-toast'
|
||
import { apiPost } from '@/lib/api'
|
||
|
||
import type { User } from '@/types'
|
||
|
||
type Props = { visible: boolean
|
||
onVisibleChange: (visible: boolean) => void
|
||
user: User | null
|
||
setUser: React.Dispatch<React.SetStateAction<User | null>> }
|
||
|
||
|
||
export default ({ visible, onVisibleChange, user, setUser }: Props) => {
|
||
const handleChange = async () => {
|
||
if (!(user))
|
||
return
|
||
|
||
if (!(confirm ('引継ぎコードを再発行しますか?\n再発行するとほかのブラウザからはログアウトされます.')))
|
||
return
|
||
|
||
const data = await apiPost<{ code: string }> ('/users/code/renew', { },
|
||
{ headers: { 'Content-Type': 'multipart/form-data' } })
|
||
if (data.code)
|
||
{
|
||
localStorage.setItem ('user_code', data.code)
|
||
setUser (user => ({ ...user, inheritanceCode: data.code } as User))
|
||
toast ({ title: '再発行しました.' })
|
||
}
|
||
}
|
||
|
||
return (
|
||
<Dialog open={visible} onOpenChange={onVisibleChange}>
|
||
<DialogContent>
|
||
<DialogTitle>引継ぎコード</DialogTitle>
|
||
<div>
|
||
<p>あなたの引継ぎコードはこちらです:</p>
|
||
<div className="m-2">{user?.inheritanceCode}</div>
|
||
<p className="mt-1 text-sm text-red-500">
|
||
このコードはほかの人には教えないでください!
|
||
</p>
|
||
<div className="my-4">
|
||
<Button onClick={handleChange}
|
||
className="px-4 py-2 bg-red-600 text-white rounded disabled:bg-gray-400">
|
||
引継ぎコード再発行
|
||
</Button>
|
||
</div>
|
||
</div>
|
||
</DialogContent>
|
||
</Dialog>)
|
||
}
|