JaeHyeok Song

implement of sharing BOJ to kakao

[{"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
This diff could not be displayed because it is too large.
import { makeStyles } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';
import React from 'react';
import path from 'path';
require("dotenv").config({
path : path.join(__dirname,'/jaksimsamil-server/.env')
});
console.log(process.env.KAKAO_JS_KEY);
const useStyles = makeStyles((theme) => ({
root: {
'& > *': {
margin: theme.spacing(1),
},
},
button: {
margin: theme.spacing(1),
},
}));
import getRecommend from "../../scripts/getRecommend";
const KakaoLoginBtn = () => {
const classes = useStyles();
const kakaoLogin = function() {
const KakaoLogin = function () {
window.Kakao.Auth.login({
success:function(auth) {
console.log(auth);
},
fail:function(err) {
console.log(err);
success: getRecommend,
fail: function (err) {
console.log("login failed", err);
}
})
}
return (
<div>
<button onClick={kakaoLogin}>KakaoLogin</button>
<button onClick={KakaoLogin}
a id="custom-login-btn" href="javascript:loginWithKakao()">
<img
src="//k.kakaocdn.net/14/dn/btqCn0WEmI3/nijroPfbpCa4at5EIsjyf0/o.jpg"
width="140"
/>
</button>
</div>
);
};
......
......@@ -9,3 +9,8 @@ export const register = ({ username, password }) =>
export const check = () => client.get('api/auth/check');
export const logout = () => client.post('/api/auth/logout');
export const kakaotoken = (kakaotoken) =>
client.post('api/auth/kakaotoken', {
kakaotoken: kakaotoken
});
......
function getRecommend(auth) {
console.log("login success", auth);
const host = 'http://localhost:23023';
const url = host+"/api/profile/recommend";
const data = { username: 'test' };
window.fetch(url, {
method: "POST",
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => {
console.log(res);
return res.json();
})
.then(shareToKakao);
}
function shareToKakao({problem_number, problem_title, solved_date}) {
console.log('getting ready to share...');
const boj_link = "https://acmicpc.net/problem/" + problem_number.toString();
window.Kakao.Link.sendDefault({
objectType: 'text',
text: `오늘의 추천문제는 ${problem_title}`,
link: {
mobileWebUrl: boj_link,
webUrl: boj_link,
}
});
}
export {
getRecommend as default
};
\ No newline at end of file
const Router = require("koa-router");
const auth = new Router();
const authCtrl = require("./auth.ctrl");
const kakaoAuth = require("./kakaoAuth");
auth.post("/login", authCtrl.login);
auth.post("/logout", authCtrl.logout);
auth.post("/register", authCtrl.register);
auth.get("/check", authCtrl.check);
auth.post("/kakaotoken", kakaoAuth.kakaotoken);
module.exports = auth;
......
const request = require('request');
const querystring = require('querystring');
exports.kakaotoken = async (ctx) => {
const token = ctx.request.body;
'http://kapi.kakao.com/v2/api/talk/memo/default/send'
console.log(ctx);
console.log("token setted", token);
let template_objectObj = {
object_type: "text",
text: "hi", link: {
web_url: "https://developers.kakao.com",
}
};
let template_objectStr = JSON.stringify(template_objectObj);
console.log(template_objectStr);
let options = {
url: "http://kapi.kakao.com/v2/api/talk/memo/default/send",
method: "POST",
headers: {
"Authorization": "Bearer ".concat(token),
"Content-Type": "application/x-www-form-urlencoded"
}, form: {
template_object: template_objectStr
}
};
request.post(options, (err, res, body) => {
if (err != null) {
console.log(err);
}
});
};
\ No newline at end of file
......@@ -118,14 +118,16 @@ POST /api/proflie/recommend
*/
exports.recommend = async (ctx) => {
const { username } = ctx.request.body;
if (!username) {
console.log('no given username');
ctx.status = 401;
return;
}
try {
console.log('finding username:', username);
const profile = await Profile.findByUsername(username);
if (!profile) {
console.log('no profile');
ctx.status = 401;
return;
}
......@@ -137,5 +139,7 @@ exports.recommend = async (ctx) => {
//데이터가 비었을 떄 예외처리 필요
} catch (e) {
ctx.throw(500, e);
} finally {
console.log('successfully sent user recommendation')
}
};
......