-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #104 from nkc-ug/feature/userData
ユーザー情報確認機能実装/ユーザー認証関連を分離
- Loading branch information
Showing
5 changed files
with
155 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import { useState, useContext } from 'react'; | ||
import { Button } from '@mui/material'; | ||
import { Auth } from './AuthGoogleSigninPopup'; | ||
import { IsLoginContext } from '../../provider/ContextProviders'; | ||
import { EmailContext } from '../../provider/ContextProviders'; | ||
|
||
export const LoginButton = () => { | ||
const [loginButtonText, setLoginButtonText] = useState('ろぐいん'); | ||
const [isLogin, setIsLogin] = useContext(IsLoginContext); | ||
const [email, setEmail] = useContext(EmailContext); | ||
|
||
const handleLoginClick = async () => { | ||
if (!isLogin) { | ||
// ログイン作業の分岐 | ||
const fetchEmail = String( | ||
localStorage.getItem('email') !== null ? localStorage.getItem('email') : '' | ||
); | ||
setEmail(fetchEmail); | ||
if (fetchEmail === '') { | ||
// ローカルストレージにEmailが格納されていない場合の処理(Authでログインし、Emailを取得後ローカルストレージに格納) | ||
const fetchEmail = await Auth(); | ||
setEmail(fetchEmail); | ||
localStorage.setItem('email', fetchEmail); | ||
} | ||
setIsLogin(true); | ||
} else { | ||
// ログアウト作業の分岐 | ||
localStorage.clear(); | ||
setEmail(''); | ||
setIsLogin(false); | ||
} | ||
setLoginButtonText(loginButtonText === 'ろぐいん' ? 'ろぐあうと' : 'ろぐいん'); | ||
setIsLogin(!isLogin); | ||
}; | ||
|
||
return ( | ||
<Button variant="contained" onClick={handleLoginClick}> | ||
{loginButtonText} | ||
</Button> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import { useContext } from 'react'; | ||
import { Button } from '@mui/material'; | ||
import { IsLoginContext } from '../../provider/ContextProviders'; | ||
import { UserDataModal } from './UserDataModal'; | ||
import { useDiscloser } from '../../hooks/useDiscloser'; | ||
|
||
export const UserDataButton = () => { | ||
const [isLogin, setIsLogin] = useContext(IsLoginContext); | ||
const [modalOpen, handleUserModalOpen, handleUserModalClose] = useDiscloser(false); | ||
|
||
const userDataButton = async () => { | ||
handleUserModalOpen(); | ||
}; | ||
|
||
return isLogin ? ( | ||
<div> | ||
<UserDataModal open={modalOpen} closeClick={handleUserModalClose} /> | ||
<Button variant="outlined" color="primary" onClick={userDataButton}> | ||
ゆーざーでーた | ||
</Button> | ||
</div> | ||
) : null; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
import { FC, useContext, useEffect, useState } from 'react'; | ||
import Backdrop from '@mui/material/Backdrop'; | ||
import Modal from '@mui/material/Modal'; | ||
import Fade from '@mui/material/Fade'; | ||
import Typography from '@mui/material/Typography'; | ||
import { Button, Stack } from '@mui/material'; | ||
import { modalStyle } from '../../styles/modalStyle'; | ||
import { EmailContext } from '../../provider/ContextProviders'; | ||
import { getAuth } from './getAuth'; | ||
import { UserDataType } from '../../types/UserDataType'; | ||
|
||
type Props = { | ||
open: boolean; | ||
closeClick: React.MouseEventHandler<HTMLButtonElement> | undefined; | ||
}; | ||
|
||
export const UserDataModal: FC<Props> = ({ open, closeClick }) => { | ||
const [email, setEmail] = useContext(EmailContext); | ||
const [userData, setUserData] = useState<UserDataType>(); | ||
useEffect(() => { | ||
// useEffect自体ではasyncの関数を受け取れないので内部で関数を定義して呼び出す。 | ||
const access_db = async () => { | ||
const response = await getAuth(email); | ||
setUserData(response); | ||
}; | ||
access_db(); | ||
}, []); | ||
const labelList = new Map([ | ||
[0, 'ゆーざーID'], | ||
[1, email], | ||
[2, 'ゆーざーねーむ'], | ||
[3, userData?.userName], | ||
]); | ||
|
||
return ( | ||
<div> | ||
{/* <IconButton onClick={openClick} color="primary"> | ||
<QuestionMarkIcon fontSize="large" color="primary" /> | ||
</IconButton> */} | ||
<Modal | ||
open={open} | ||
onClose={closeClick} | ||
closeAfterTransition | ||
slots={{ backdrop: Backdrop }} | ||
slotProps={{ | ||
backdrop: { | ||
timeout: 500, | ||
}, | ||
}} | ||
> | ||
<Fade in={open}> | ||
<Stack sx={modalStyle} spacing={3}> | ||
<Typography | ||
id="transition-modal-title" | ||
sx={{ | ||
variant: 'h5', | ||
textAlign: 'center', | ||
fontSize: '30px', | ||
}} | ||
> | ||
ゆーざーでーた | ||
</Typography> | ||
<Stack justifyContent="center" spacing={1}> | ||
{[...labelList].map(([key]) => ( | ||
<Typography key={key} sx={{ mt: 2, variant: 'h6', textAlign: 'center' }}> | ||
{labelList.get(key)} | ||
</Typography> | ||
))} | ||
</Stack> | ||
<Stack justifyContent="center" direction="row"> | ||
<Button variant="contained" sx={{ color: 'white' }} onClick={closeClick}> | ||
とじる | ||
</Button> | ||
</Stack> | ||
</Stack> | ||
</Fade> | ||
</Modal> | ||
</div> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters