Showing
9 changed files
with
150 additions
and
39 deletions
jaksimsamil-page/package-lock.json
0 → 100644
This diff could not be displayed because it is too large.
| ... | @@ -3,6 +3,7 @@ | ... | @@ -3,6 +3,7 @@ |
| 3 | "version": "0.1.0", | 3 | "version": "0.1.0", |
| 4 | "private": true, | 4 | "private": true, |
| 5 | "dependencies": { | 5 | "dependencies": { |
| 6 | + "@material-ui/core": "^4.10.2", | ||
| 6 | "@testing-library/jest-dom": "^4.2.4", | 7 | "@testing-library/jest-dom": "^4.2.4", |
| 7 | "@testing-library/react": "^9.3.2", | 8 | "@testing-library/react": "^9.3.2", |
| 8 | "@testing-library/user-event": "^7.1.2", | 9 | "@testing-library/user-event": "^7.1.2", | ... | ... |
| 1 | +import React from 'react'; | ||
| 2 | +import { makeStyles } from '@material-ui/core/styles'; | ||
| 3 | +import Paper from '@material-ui/core/Paper'; | ||
| 4 | +import Grid from '@material-ui/core/Grid'; | ||
| 5 | +import palette from '../../lib/styles/palette'; | ||
| 6 | +const useStyles = makeStyles((theme) => ({ | ||
| 7 | + root: { | ||
| 8 | + flexGrow: 1, | ||
| 9 | + background: palette.gray[2], | ||
| 10 | + }, | ||
| 11 | + paper: { | ||
| 12 | + padding: theme.spacing(2), | ||
| 13 | + textAlign: 'center', | ||
| 14 | + color: theme.palette.text.secondary, | ||
| 15 | + }, | ||
| 16 | +})); | ||
| 17 | +const HomeForm = () => { | ||
| 18 | + const classes = useStyles(); | ||
| 19 | + return ( | ||
| 20 | + <div className={classes.root}> | ||
| 21 | + <Grid container spacing={3}> | ||
| 22 | + <Grid item xs={12}> | ||
| 23 | + <Paper className={classes.paper}>xs=12</Paper> | ||
| 24 | + </Grid> | ||
| 25 | + <Grid item xs={6}> | ||
| 26 | + <Paper className={classes.paper}>xs=6</Paper> | ||
| 27 | + </Grid> | ||
| 28 | + <Grid item xs={6}> | ||
| 29 | + <Paper className={classes.paper}>xs=6</Paper> | ||
| 30 | + </Grid> | ||
| 31 | + <Grid item xs={3}> | ||
| 32 | + <Paper className={classes.paper}>xs=3</Paper> | ||
| 33 | + </Grid> | ||
| 34 | + <Grid item xs={3}> | ||
| 35 | + <Paper className={classes.paper}>xs=3</Paper> | ||
| 36 | + </Grid> | ||
| 37 | + <Grid item xs={3}> | ||
| 38 | + <Paper className={classes.paper}>xs=3</Paper> | ||
| 39 | + </Grid> | ||
| 40 | + <Grid item xs={3}> | ||
| 41 | + <Paper className={classes.paper}>xs=3</Paper> | ||
| 42 | + </Grid> | ||
| 43 | + </Grid> | ||
| 44 | + </div> | ||
| 45 | + ); | ||
| 46 | +}; | ||
| 47 | + | ||
| 48 | +export default HomeForm; |
| 1 | import React from 'react'; | 1 | import React from 'react'; |
| 2 | +import { makeStyles } from '@material-ui/core/styles'; | ||
| 2 | import styled from 'styled-components'; | 3 | import styled from 'styled-components'; |
| 3 | -import Button from '../common/Button'; | ||
| 4 | import palette from '../../lib/styles/palette'; | 4 | import palette from '../../lib/styles/palette'; |
| 5 | +import Button from '@material-ui/core/Button'; | ||
| 6 | +import TextField from '@material-ui/core/TextField'; | ||
| 5 | const BJIDFormBlock = styled.div` | 7 | const BJIDFormBlock = styled.div` |
| 6 | width: 100%; | 8 | width: 100%; |
| 7 | - border-top: 1px solid ${palette.gray[2]}; | ||
| 8 | padding-top: 2rem; | 9 | padding-top: 2rem; |
| 9 | h4 { | 10 | h4 { |
| 10 | color: ${palette.gray[8]}; | 11 | color: ${palette.gray[8]}; |
| ... | @@ -13,21 +14,35 @@ const BJIDFormBlock = styled.div` | ... | @@ -13,21 +14,35 @@ const BJIDFormBlock = styled.div` |
| 13 | } | 14 | } |
| 14 | `; | 15 | `; |
| 15 | 16 | ||
| 17 | +const useStyles = makeStyles((theme) => ({ | ||
| 18 | + root: { | ||
| 19 | + '& > *': { | ||
| 20 | + margin: theme.spacing(1), | ||
| 21 | + }, | ||
| 22 | + }, | ||
| 23 | +})); | ||
| 24 | + | ||
| 16 | const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { | 25 | const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { |
| 26 | + const classes = useStyles(); | ||
| 17 | return ( | 27 | return ( |
| 18 | - <BJIDFormBlock> | 28 | + <div> |
| 19 | - <h4>백준 아이디</h4> | ||
| 20 | <form onSubmit={onBJIDSubmit}> | 29 | <form onSubmit={onBJIDSubmit}> |
| 21 | - <input | 30 | + <TextField |
| 22 | name="userBJID" | 31 | name="userBJID" |
| 23 | onChange={onChange} | 32 | onChange={onChange} |
| 24 | value={profile.userBJID} | 33 | value={profile.userBJID} |
| 25 | placeholder="백준 아이디" | 34 | placeholder="백준 아이디" |
| 35 | + id="standard-basic" | ||
| 36 | + label="백준 아이디" | ||
| 26 | /> | 37 | /> |
| 27 | - <button type="submit">등록</button> | 38 | + <Button variant="outlined" type="submit"> |
| 39 | + 등록 | ||
| 40 | + </Button> | ||
| 28 | </form> | 41 | </form> |
| 29 | - <button onClick={onSyncBJIDSubmit}>동기화</button> | 42 | + <Button variant="outlined" onClick={onSyncBJIDSubmit}> |
| 30 | - </BJIDFormBlock> | 43 | + 동기화 |
| 44 | + </Button> | ||
| 45 | + </div> | ||
| 31 | ); | 46 | ); |
| 32 | }; | 47 | }; |
| 33 | export default BJIDForm; | 48 | export default BJIDForm; | ... | ... |
| ... | @@ -3,6 +3,9 @@ import styled from 'styled-components'; | ... | @@ -3,6 +3,9 @@ import styled from 'styled-components'; |
| 3 | import Button from '../common/Button'; | 3 | import Button from '../common/Button'; |
| 4 | import palette from '../../lib/styles/palette'; | 4 | import palette from '../../lib/styles/palette'; |
| 5 | import BJIDForm from './BJIDForm'; | 5 | import BJIDForm from './BJIDForm'; |
| 6 | +import { makeStyles } from '@material-ui/core/styles'; | ||
| 7 | +import Paper from '@material-ui/core/Paper'; | ||
| 8 | +import Grid from '@material-ui/core/Grid'; | ||
| 6 | 9 | ||
| 7 | const SettingFormBlock = styled.div` | 10 | const SettingFormBlock = styled.div` |
| 8 | h3 { | 11 | h3 { |
| ... | @@ -33,30 +36,40 @@ const SectionContainer = styled.div` | ... | @@ -33,30 +36,40 @@ const SectionContainer = styled.div` |
| 33 | display: flex; | 36 | display: flex; |
| 34 | `; | 37 | `; |
| 35 | 38 | ||
| 39 | +const useStyles = makeStyles((theme) => ({ | ||
| 40 | + root: { | ||
| 41 | + flexGrow: 1, | ||
| 42 | + background: palette.gray[2], | ||
| 43 | + }, | ||
| 44 | + paper: { | ||
| 45 | + margin: 'auto', | ||
| 46 | + textAlign: 'center', | ||
| 47 | + padding: 30, | ||
| 48 | + }, | ||
| 49 | +})); | ||
| 50 | + | ||
| 36 | const SettingForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { | 51 | const SettingForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { |
| 52 | + const classes = useStyles(); | ||
| 37 | return ( | 53 | return ( |
| 38 | - <SettingFormBlock> | 54 | + <div className={classes.root}> |
| 39 | - <SectionContainer> | 55 | + <Grid container spacing={3}> |
| 40 | - <h3>{profile.username}</h3> | 56 | + <Grid item xs={12}> |
| 41 | - <p>입력</p> | 57 | + <Paper className={classes.paper}> |
| 42 | - </SectionContainer> | 58 | + <h3>{profile.username}</h3> |
| 43 | - | 59 | + </Paper> |
| 44 | - <SectionContainer> | 60 | + </Grid> |
| 45 | - <BJIDForm | 61 | + <Grid container item xs={12}> |
| 46 | - profile={profile} | 62 | + <Paper className={classes.paper} elevation={3}> |
| 47 | - onChange={onChange} | 63 | + <BJIDForm |
| 48 | - onBJIDSubmit={onBJIDSubmit} | 64 | + profile={profile} |
| 49 | - onSyncBJIDSubmit={onSyncBJIDSubmit} | 65 | + onChange={onChange} |
| 50 | - /> | 66 | + onBJIDSubmit={onBJIDSubmit} |
| 51 | - </SectionContainer> | 67 | + onSyncBJIDSubmit={onSyncBJIDSubmit} |
| 52 | - | 68 | + /> |
| 53 | - <SectionContainer> | 69 | + </Paper> |
| 54 | - <h3>친구</h3> | 70 | + </Grid> |
| 55 | - <StyledInput name="BJID" placeholder="친구 아이디" /> | 71 | + </Grid> |
| 56 | - <Button>추가</Button> | 72 | + </div> |
| 57 | - </SectionContainer> | ||
| 58 | - <h3>친구 리스트</h3> | ||
| 59 | - </SettingFormBlock> | ||
| 60 | ); | 73 | ); |
| 61 | }; | 74 | }; |
| 62 | 75 | ... | ... |
| 1 | +import React, { useEffect, useState } from 'react'; | ||
| 2 | +import { useDispatch, useSelector } from 'react-redux'; | ||
| 3 | +import { withRouter } from 'react-router-dom'; | ||
| 4 | +import HomeForm from '../../components/home/HomeForm'; | ||
| 5 | +const HomeContainer = ({ histroy }) => { | ||
| 6 | + const dispatch = useDispatch(); | ||
| 7 | + const [isLogin, setLogin] = useState(false); | ||
| 8 | + const { user, profile } = useSelector(({ user, profile }) => ({ | ||
| 9 | + user: user.user, | ||
| 10 | + profile: profile, | ||
| 11 | + })); | ||
| 12 | + | ||
| 13 | + useEffect(() => { | ||
| 14 | + if (user) { | ||
| 15 | + setLogin(true); | ||
| 16 | + } | ||
| 17 | + }); | ||
| 18 | + return <HomeForm />; | ||
| 19 | +}; | ||
| 20 | +export default withRouter(HomeContainer); |
| ... | @@ -9,7 +9,7 @@ import { | ... | @@ -9,7 +9,7 @@ import { |
| 9 | initializeProfile, | 9 | initializeProfile, |
| 10 | } from '../../modules/profile'; | 10 | } from '../../modules/profile'; |
| 11 | import SettingForm from '../../components/setting/SettingForm'; | 11 | import SettingForm from '../../components/setting/SettingForm'; |
| 12 | -import { sync } from '../../../node_modules/fast-glob/index'; | 12 | + |
| 13 | const SettingContainer = ({ history }) => { | 13 | const SettingContainer = ({ history }) => { |
| 14 | const dispatch = useDispatch(); | 14 | const dispatch = useDispatch(); |
| 15 | const { user, profile } = useSelector(({ user, profile }) => ({ | 15 | const { user, profile } = useSelector(({ user, profile }) => ({ |
| ... | @@ -42,12 +42,17 @@ const SettingContainer = ({ history }) => { | ... | @@ -42,12 +42,17 @@ const SettingContainer = ({ history }) => { |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | useEffect(() => { | 44 | useEffect(() => { |
| 45 | - let username = user.username; | 45 | + if (!user) { |
| 46 | - dispatch(getPROFILE({ username })); | 46 | + alert('로그인이 필요합니다 '); |
| 47 | - return () => { | 47 | + history.push('/'); |
| 48 | - dispatch(initializeProfile()); | 48 | + } else { |
| 49 | - }; | 49 | + let username = user.username; |
| 50 | - }, [dispatch, user]); | 50 | + dispatch(getPROFILE({ username })); |
| 51 | + return () => { | ||
| 52 | + dispatch(initializeProfile()); | ||
| 53 | + }; | ||
| 54 | + } | ||
| 55 | + }, [dispatch, user, history]); | ||
| 51 | 56 | ||
| 52 | return ( | 57 | return ( |
| 53 | <SettingForm | 58 | <SettingForm | ... | ... |
jaksimsamil-page/src/lib/util/analyzeBJ.js
0 → 100644
| 1 | import React from 'react'; | 1 | import React from 'react'; |
| 2 | import HeaderContainer from '../containers/common/HeaderContainer'; | 2 | import HeaderContainer from '../containers/common/HeaderContainer'; |
| 3 | -import Button from '../components/common/Button'; | 3 | +import HomeContainer from '../containers/home/HomeContainer'; |
| 4 | 4 | ||
| 5 | const HomePage = () => { | 5 | const HomePage = () => { |
| 6 | return ( | 6 | return ( |
| 7 | <div> | 7 | <div> |
| 8 | <HeaderContainer /> | 8 | <HeaderContainer /> |
| 9 | - <Button>home</Button> | 9 | + <HomeContainer /> |
| 10 | </div> | 10 | </div> |
| 11 | ); | 11 | ); |
| 12 | }; | 12 | }; | ... | ... |
-
Please register or login to post a comment