Showing
8 changed files
with
98 additions
and
25 deletions
jaksimsamil-page/.eslintcache
0 → 100644
1 | +[{"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\index.js":"1","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\App.js":"2","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\serviceWorker.js":"3","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\user.js":"4","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\index.js":"5","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\LoginPage.js":"6","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\RegisterPage.js":"7","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\SettingPage.js":"8","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\HomePage.js":"9","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\createRequestSaga.js":"10","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\auth.js":"11","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\auth.js":"12","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\loading.js":"13","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\profile.js":"14","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\client.js":"15","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\auth\\LoginForm.js":"16","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\auth\\RegisterForm.js":"17","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\common\\HeaderContainer.js":"18","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\home\\HomeContainer.js":"19","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\setting\\SettingContainer.js":"20","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\auth\\AuthTemplate.js":"21","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\profile.js":"22","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\auth\\AuthForm.js":"23","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\home\\HomeForm.js":"24","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\SettingForm.js":"25","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\styles\\palette.js":"26","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Header.js":"27","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Button.js":"28","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\BJIDForm.js":"29","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\SlackForm.js":"30","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\GoalNumForm.js":"31","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\KakaoLogin.js":"32","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Responsive.js":"33","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Categories.js":"34","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\scripts\\getRecommend.js":"35"},{"size":1381,"mtime":1607049804685,"results":"36","hashOfConfig":"37"},{"size":598,"mtime":1607049804646,"results":"38","hashOfConfig":"37"},{"size":5227,"mtime":1607049804713,"results":"39","hashOfConfig":"37"},{"size":1697,"mtime":1607178574200,"results":"40","hashOfConfig":"37"},{"size":464,"mtime":1607049804700,"results":"41","hashOfConfig":"37"},{"size":299,"mtime":1607049804708,"results":"42","hashOfConfig":"37"},{"size":317,"mtime":1607049804710,"results":"43","hashOfConfig":"37"},{"size":348,"mtime":1607049804712,"results":"44","hashOfConfig":"37"},{"size":313,"mtime":1607049804707,"results":"45","hashOfConfig":"37"},{"size":822,"mtime":1607049804693,"results":"46","hashOfConfig":"37"},{"size":502,"mtime":1607179035551,"results":"47","hashOfConfig":"37"},{"size":2300,"mtime":1607049804698,"results":"48","hashOfConfig":"37"},{"size":689,"mtime":1607049804701,"results":"49","hashOfConfig":"37"},{"size":4472,"mtime":1607049804703,"results":"50","hashOfConfig":"37"},{"size":84,"mtime":1607049804690,"results":"51","hashOfConfig":"37"},{"size":1846,"mtime":1607049804674,"results":"52","hashOfConfig":"37"},{"size":2415,"mtime":1607049804675,"results":"53","hashOfConfig":"37"},{"size":475,"mtime":1607049804678,"results":"54","hashOfConfig":"37"},{"size":1144,"mtime":1607049804680,"results":"55","hashOfConfig":"37"},{"size":2526,"mtime":1607049804682,"results":"56","hashOfConfig":"37"},{"size":1047,"mtime":1607049804652,"results":"57","hashOfConfig":"37"},{"size":476,"mtime":1607049804692,"results":"58","hashOfConfig":"37"},{"size":2472,"mtime":1607049804651,"results":"59","hashOfConfig":"37"},{"size":3350,"mtime":1607049804662,"results":"60","hashOfConfig":"37"},{"size":2702,"mtime":1606936169401,"results":"61","hashOfConfig":"37"},{"size":453,"mtime":1607049804695,"results":"62","hashOfConfig":"37"},{"size":1574,"mtime":1607049804658,"results":"63","hashOfConfig":"37"},{"size":1078,"mtime":1607049804655,"results":"64","hashOfConfig":"37"},{"size":1144,"mtime":1607049804665,"results":"65","hashOfConfig":"37"},{"size":994,"mtime":1607049804670,"results":"66","hashOfConfig":"37"},{"size":1043,"mtime":1607049804667,"results":"67","hashOfConfig":"37"},{"size":746,"mtime":1607233016374,"results":"68","hashOfConfig":"37"},{"size":460,"mtime":1607049804660,"results":"69","hashOfConfig":"37"},{"size":1228,"mtime":1607049804656,"results":"70","hashOfConfig":"37"},{"size":966,"mtime":1607239812081,"results":"71","hashOfConfig":"37"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},"ecom5p",{"filePath":"75","messages":"76","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"81","messages":"82","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"83","messages":"84","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"85","messages":"86","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"87","messages":"88","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"89","messages":"90","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"91","messages":"92","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"93","messages":"94","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"95","messages":"96","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"97","messages":"98","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"101","messages":"102","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"103","messages":"104","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"105","messages":"106","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"107","messages":"108","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"109","messages":"110","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"111","messages":"112","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"113","usedDeprecatedRules":"74"},{"filePath":"114","messages":"115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"118","messages":"119","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"120","messages":"121","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"122","usedDeprecatedRules":"74"},{"filePath":"123","messages":"124","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"125","messages":"126","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"127","messages":"128","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"129","messages":"130","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"131","messages":"132","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"133","messages":"134","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"135","messages":"136","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"137","messages":"138","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"139","messages":"140","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"141","messages":"142","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"143","messages":"144","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\index.js",[],["145","146"],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\App.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\serviceWorker.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\user.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\index.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\LoginPage.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\RegisterPage.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\SettingPage.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\pages\\HomePage.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\createRequestSaga.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\auth.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\auth.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\loading.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\modules\\profile.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\client.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\auth\\LoginForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\auth\\RegisterForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\common\\HeaderContainer.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\home\\HomeContainer.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\containers\\setting\\SettingContainer.js",["147"],"import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n changeField,\r\n setBJID,\r\n getPROFILE,\r\n syncBJID,\r\n initializeProfile,\r\n setSLACK,\r\n setGOALNUM,\r\n} from '../../modules/profile';\r\nimport SettingForm from '../../components/setting/SettingForm';\r\n\r\nconst SettingContainer = ({ history }) => {\r\n const [isLoading, setLoading] = useState(false);\r\n\r\n const dispatch = useDispatch();\r\n const { user, profile, loading } = useSelector(\r\n ({ user, profile, loading }) => ({\r\n user: user.user,\r\n profile: profile,\r\n loading: loading,\r\n }),\r\n );\r\n\r\n const onChange = (e) => {\r\n const { value, name } = e.target;\r\n dispatch(\r\n changeField({\r\n key: name,\r\n value: value,\r\n }),\r\n );\r\n };\r\n\r\n const onSyncBJIDSubmit = (e) => {\r\n e.preventDefault();\r\n let username = profile.username;\r\n dispatch(syncBJID({ username }));\r\n };\r\n\r\n const onGoalNumSubmit = (e) => {\r\n e.preventDefault();\r\n let username = profile.username;\r\n let goalNum = profile.goalNum;\r\n dispatch(setGOALNUM({ username, goalNum }));\r\n };\r\n const onSlackURLSubmit = (e) => {\r\n e.preventDefault();\r\n let username = profile.username;\r\n let slackWebHookURL = profile.slackWebHookURL;\r\n dispatch(setSLACK({ username, slackWebHookURL }));\r\n };\r\n\r\n const onBJIDSubmit = (e) => {\r\n e.preventDefault();\r\n let username = profile.username;\r\n let userBJID = profile.userBJID;\r\n\r\n dispatch(setBJID({ username, userBJID }));\r\n };\r\n\r\n useEffect(() => {\r\n if (!user) {\r\n alert('로그인이 필요합니다 ');\r\n history.push('/login');\r\n } else {\r\n let username = user.username;\r\n dispatch(getPROFILE({ username }));\r\n return () => {\r\n dispatch(initializeProfile());\r\n };\r\n }\r\n }, [dispatch, user, history]);\r\n useEffect(() => {\r\n if (loading['profile/SYNC_BJID'] == true) {\r\n setLoading(true);\r\n } else {\r\n setLoading(false);\r\n }\r\n }, [dispatch, loading]);\r\n\r\n return (\r\n <div>\r\n <SettingForm\r\n type=\"setting\"\r\n onChange={onChange}\r\n onBJIDSubmit={onBJIDSubmit}\r\n onSyncBJIDSubmit={onSyncBJIDSubmit}\r\n onSlackURLSubmit={onSlackURLSubmit}\r\n onGoalNumSubmit={onGoalNumSubmit}\r\n profile={profile}\r\n isLoading={isLoading}\r\n ></SettingForm>\r\n </div>\r\n );\r\n};\r\n\r\nexport default withRouter(SettingContainer);\r\n","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\auth\\AuthTemplate.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\api\\profile.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\auth\\AuthForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\home\\HomeForm.js",["148","149","150","151","152","153","154"],"import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport palette from '../../lib/styles/palette';\r\nimport AuthForm from '../auth/AuthForm';\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n background: palette.gray[2],\r\n padding: theme.spacing(8),\r\n },\r\n paper: {\r\n padding: theme.spacing(8),\r\n margin: 'auto',\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\nconst HomeForm = ({ PSdata, goalNum }) => {\r\n const classes = useStyles();\r\n return PSdata ? (\r\n <div className={classes.root}>\r\n <Grid container spacing={5}>\r\n <Grid item xs={12}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.recommend_data.problem_number}</h1>\r\n <h1>{PSdata.recommend_data.problem_title}</h1>\r\n <a\r\n href={'http://www.boj.kr/' + PSdata.recommend_data.problem_number}\r\n >\r\n 바로가기\r\n </a>\r\n\r\n <h3>오늘의 추천 문제</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.presentNum + '/' + goalNum}</h1>\r\n <h3>오늘 푼 문제</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.latestSolve.problem_number}</h1>\r\n <h1>{PSdata.latestSolve.problem_title}</h1>\r\n <h3>마지막으로 푼 문제</h3>\r\n </Paper>\r\n </Grid>\r\n\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.weekNum}</h1>\r\n <h3>7일</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.monthNum}</h1>\r\n <h3>30일</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1>{PSdata.totalNum}</h1>\r\n <h3>전체</h3>\r\n </Paper>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n ) : (\r\n <div className={classes.root}>\r\n <Grid container spacing={5}>\r\n <Grid item xs={12}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>오늘의 추천 문제</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>오늘</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>마지막 날</h3>\r\n </Paper>\r\n </Grid>\r\n\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>7일</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>30일</h3>\r\n </Paper>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Paper className={classes.paper}>\r\n <h1></h1>\r\n <h3>전체</h3>\r\n </Paper>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nexport default HomeForm;\r\n","C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\SettingForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\lib\\styles\\palette.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Header.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Button.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\BJIDForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\SlackForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\GoalNumForm.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\setting\\KakaoLogin.js",["155","156","157","158"],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Responsive.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\components\\common\\Categories.js",[],"C:\\Users\\SJH\\Desktop\\Document\\2017103998\\2020-2\\OpenSourceSW\\Project\\Jaksimsamil\\jaksimsamil-page\\src\\scripts\\getRecommend.js",[],{"ruleId":"159","replacedBy":"160"},{"ruleId":"161","replacedBy":"162"},{"ruleId":"163","severity":1,"message":"164","line":78,"column":38,"nodeType":"165","messageId":"166","endLine":78,"endColumn":40},{"ruleId":"167","severity":1,"message":"168","line":6,"column":8,"nodeType":"169","messageId":"170","endLine":6,"endColumn":16},{"ruleId":"171","severity":1,"message":"172","line":77,"column":13,"nodeType":"173","endLine":77,"endColumn":17},{"ruleId":"171","severity":1,"message":"172","line":83,"column":13,"nodeType":"173","endLine":83,"endColumn":17},{"ruleId":"171","severity":1,"message":"172","line":89,"column":13,"nodeType":"173","endLine":89,"endColumn":17},{"ruleId":"171","severity":1,"message":"172","line":96,"column":13,"nodeType":"173","endLine":96,"endColumn":17},{"ruleId":"171","severity":1,"message":"172","line":102,"column":13,"nodeType":"173","endLine":102,"endColumn":17},{"ruleId":"171","severity":1,"message":"172","line":108,"column":13,"nodeType":"173","endLine":108,"endColumn":17},{"ruleId":"167","severity":1,"message":"174","line":1,"column":10,"nodeType":"169","messageId":"170","endLine":1,"endColumn":20},{"ruleId":"167","severity":1,"message":"175","line":2,"column":8,"nodeType":"169","messageId":"170","endLine":2,"endColumn":17},{"ruleId":"176","severity":1,"message":"177","line":18,"column":38,"nodeType":"178","messageId":"179","endLine":18,"endColumn":67},{"ruleId":"180","severity":1,"message":"181","line":19,"column":9,"nodeType":"173","endLine":22,"endColumn":11},"no-native-reassign",["182"],"no-negated-in-lhs",["183"],"eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","no-unused-vars","'AuthForm' is defined but never used.","Identifier","unusedVar","jsx-a11y/heading-has-content","Headings must have content and the content must be accessible by a screen reader.","JSXOpeningElement","'makeStyles' is defined but never used.","'TextField' is defined but never used.","no-script-url","Script URL is a form of eval.","Literal","unexpectedScriptURL","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","no-global-assign","no-unsafe-negation"] | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
This diff could not be displayed because it is too large.
1 | import { makeStyles } from '@material-ui/core/styles'; | 1 | import { makeStyles } from '@material-ui/core/styles'; |
2 | import TextField from '@material-ui/core/TextField'; | 2 | import TextField from '@material-ui/core/TextField'; |
3 | import React from 'react'; | 3 | import React from 'react'; |
4 | -import path from 'path'; | 4 | +import getRecommend from "../../scripts/getRecommend"; |
5 | -require("dotenv").config({ | ||
6 | - path : path.join(__dirname,'/jaksimsamil-server/.env') | ||
7 | -}); | ||
8 | -console.log(process.env.KAKAO_JS_KEY); | ||
9 | - | ||
10 | -const useStyles = makeStyles((theme) => ({ | ||
11 | - root: { | ||
12 | - '& > *': { | ||
13 | - margin: theme.spacing(1), | ||
14 | - }, | ||
15 | - }, | ||
16 | - button: { | ||
17 | - margin: theme.spacing(1), | ||
18 | - }, | ||
19 | -})); | ||
20 | 5 | ||
21 | const KakaoLoginBtn = () => { | 6 | const KakaoLoginBtn = () => { |
22 | - const classes = useStyles(); | 7 | + const KakaoLogin = function () { |
23 | - const kakaoLogin = function() { | ||
24 | window.Kakao.Auth.login({ | 8 | window.Kakao.Auth.login({ |
25 | - success:function(auth) { | 9 | + success: getRecommend, |
26 | - console.log(auth); | 10 | + fail: function (err) { |
27 | - }, | 11 | + console.log("login failed", err); |
28 | - fail:function(err) { | ||
29 | - console.log(err); | ||
30 | } | 12 | } |
31 | }) | 13 | }) |
32 | } | 14 | } |
33 | return ( | 15 | return ( |
34 | <div> | 16 | <div> |
35 | - <button onClick={kakaoLogin}>KakaoLogin</button> | 17 | + <button onClick={KakaoLogin} |
18 | + a id="custom-login-btn" href="javascript:loginWithKakao()"> | ||
19 | + <img | ||
20 | + src="//k.kakaocdn.net/14/dn/btqCn0WEmI3/nijroPfbpCa4at5EIsjyf0/o.jpg" | ||
21 | + width="140" | ||
22 | + /> | ||
23 | + </button> | ||
36 | </div> | 24 | </div> |
37 | ); | 25 | ); |
38 | }; | 26 | }; | ... | ... |
... | @@ -9,3 +9,8 @@ export const register = ({ username, password }) => | ... | @@ -9,3 +9,8 @@ export const register = ({ username, password }) => |
9 | export const check = () => client.get('api/auth/check'); | 9 | export const check = () => client.get('api/auth/check'); |
10 | 10 | ||
11 | export const logout = () => client.post('/api/auth/logout'); | 11 | export const logout = () => client.post('/api/auth/logout'); |
12 | + | ||
13 | +export const kakaotoken = (kakaotoken) => | ||
14 | + client.post('api/auth/kakaotoken', { | ||
15 | + kakaotoken: kakaotoken | ||
16 | + }); | ... | ... |
jaksimsamil-page/src/scripts/getRecommend.js
0 → 100644
1 | +function getRecommend(auth) { | ||
2 | + console.log("login success", auth); | ||
3 | + const host = 'http://localhost:23023'; | ||
4 | + const url = host+"/api/profile/recommend"; | ||
5 | + const data = { username: 'test' }; | ||
6 | + window.fetch(url, { | ||
7 | + method: "POST", | ||
8 | + body: JSON.stringify(data), | ||
9 | + headers: { | ||
10 | + 'Content-Type': 'application/json' | ||
11 | + } | ||
12 | + }) | ||
13 | + .then(res => { | ||
14 | + console.log(res); | ||
15 | + return res.json(); | ||
16 | + }) | ||
17 | + .then(shareToKakao); | ||
18 | +} | ||
19 | + | ||
20 | +function shareToKakao({problem_number, problem_title, solved_date}) { | ||
21 | + console.log('getting ready to share...'); | ||
22 | + const boj_link = "https://acmicpc.net/problem/" + problem_number.toString(); | ||
23 | + window.Kakao.Link.sendDefault({ | ||
24 | + objectType: 'text', | ||
25 | + text: `오늘의 추천문제는 ${problem_title}`, | ||
26 | + link: { | ||
27 | + mobileWebUrl: boj_link, | ||
28 | + webUrl: boj_link, | ||
29 | + } | ||
30 | + }); | ||
31 | +} | ||
32 | + | ||
33 | +export { | ||
34 | + getRecommend as default | ||
35 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | const Router = require("koa-router"); | 1 | const Router = require("koa-router"); |
2 | const auth = new Router(); | 2 | const auth = new Router(); |
3 | const authCtrl = require("./auth.ctrl"); | 3 | const authCtrl = require("./auth.ctrl"); |
4 | +const kakaoAuth = require("./kakaoAuth"); | ||
5 | + | ||
4 | auth.post("/login", authCtrl.login); | 6 | auth.post("/login", authCtrl.login); |
5 | auth.post("/logout", authCtrl.logout); | 7 | auth.post("/logout", authCtrl.logout); |
6 | auth.post("/register", authCtrl.register); | 8 | auth.post("/register", authCtrl.register); |
7 | auth.get("/check", authCtrl.check); | 9 | auth.get("/check", authCtrl.check); |
8 | 10 | ||
11 | +auth.post("/kakaotoken", kakaoAuth.kakaotoken); | ||
12 | + | ||
9 | module.exports = auth; | 13 | module.exports = auth; | ... | ... |
jaksimsamil-server/src/api/auth/kakaoAuth.js
0 → 100644
1 | +const request = require('request'); | ||
2 | +const querystring = require('querystring'); | ||
3 | + | ||
4 | + | ||
5 | +exports.kakaotoken = async (ctx) => { | ||
6 | + const token = ctx.request.body; | ||
7 | + | ||
8 | + 'http://kapi.kakao.com/v2/api/talk/memo/default/send' | ||
9 | + | ||
10 | + console.log(ctx); | ||
11 | + console.log("token setted", token); | ||
12 | + let template_objectObj = { | ||
13 | + object_type: "text", | ||
14 | + text: "hi", link: { | ||
15 | + web_url: "https://developers.kakao.com", | ||
16 | + } | ||
17 | + }; | ||
18 | + | ||
19 | + let template_objectStr = JSON.stringify(template_objectObj); | ||
20 | + console.log(template_objectStr); | ||
21 | + let options = { | ||
22 | + url: "http://kapi.kakao.com/v2/api/talk/memo/default/send", | ||
23 | + method: "POST", | ||
24 | + headers: { | ||
25 | + "Authorization": "Bearer ".concat(token), | ||
26 | + "Content-Type": "application/x-www-form-urlencoded" | ||
27 | + }, form: { | ||
28 | + template_object: template_objectStr | ||
29 | + } | ||
30 | + }; | ||
31 | + request.post(options, (err, res, body) => { | ||
32 | + if (err != null) { | ||
33 | + console.log(err); | ||
34 | + } | ||
35 | + }); | ||
36 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -118,14 +118,16 @@ POST /api/proflie/recommend | ... | @@ -118,14 +118,16 @@ POST /api/proflie/recommend |
118 | */ | 118 | */ |
119 | exports.recommend = async (ctx) => { | 119 | exports.recommend = async (ctx) => { |
120 | const { username } = ctx.request.body; | 120 | const { username } = ctx.request.body; |
121 | - | ||
122 | if (!username) { | 121 | if (!username) { |
122 | + console.log('no given username'); | ||
123 | ctx.status = 401; | 123 | ctx.status = 401; |
124 | return; | 124 | return; |
125 | } | 125 | } |
126 | try { | 126 | try { |
127 | + console.log('finding username:', username); | ||
127 | const profile = await Profile.findByUsername(username); | 128 | const profile = await Profile.findByUsername(username); |
128 | if (!profile) { | 129 | if (!profile) { |
130 | + console.log('no profile'); | ||
129 | ctx.status = 401; | 131 | ctx.status = 401; |
130 | return; | 132 | return; |
131 | } | 133 | } |
... | @@ -137,5 +139,7 @@ exports.recommend = async (ctx) => { | ... | @@ -137,5 +139,7 @@ exports.recommend = async (ctx) => { |
137 | //데이터가 비었을 떄 예외처리 필요 | 139 | //데이터가 비었을 떄 예외처리 필요 |
138 | } catch (e) { | 140 | } catch (e) { |
139 | ctx.throw(500, e); | 141 | ctx.throw(500, e); |
142 | + } finally { | ||
143 | + console.log('successfully sent user recommendation') | ||
140 | } | 144 | } |
141 | }; | 145 | }; | ... | ... |
-
Please register or login to post a comment