From 1e6050a4869f0f44b8d9339ae686e94ed6e728ce Mon Sep 17 00:00:00 2001 From: sorrelbri Date: Fri, 26 Jun 2020 17:55:52 -0700 Subject: [PATCH] add FE service to post to auth/guest --- .../src/components/Button/Guest/Guest.js | 34 ++++++++++ .../src/components/Form/Auth/Auth.js | 56 +++++++++-------- .../src/reducers/auth/reducer.auth.js | 21 ++++--- .../play-node-go/src/services/authServices.js | 63 ++++++++++++------- 4 files changed, 115 insertions(+), 59 deletions(-) create mode 100644 packages/play-node-go/src/components/Button/Guest/Guest.js diff --git a/packages/play-node-go/src/components/Button/Guest/Guest.js b/packages/play-node-go/src/components/Button/Guest/Guest.js new file mode 100644 index 0000000..7989092 --- /dev/null +++ b/packages/play-node-go/src/components/Button/Guest/Guest.js @@ -0,0 +1,34 @@ +import React from "react"; +import authServices from "../../../services/authServices"; + +const Guest = ({ dispatch }) => { + const handleClick = async (e) => { + e.preventDefault(); + // dispatch to guest endpoint + const guestResponse = await authServices.guestService(); + + if (guestResponse.errors) { + const authError = guestResponse.errors[0].auth; + return dispatch({ + type: "ERR", + message: "AUTH_ERROR", + body: { authError }, + }); + } + + return dispatch({ + type: "AUTH", + message: "GUEST", + body: guestResponse, + }); + }; + return ( + <> + + + ); +}; + +export default Guest; diff --git a/packages/play-node-go/src/components/Form/Auth/Auth.js b/packages/play-node-go/src/components/Form/Auth/Auth.js index 87d0234..c567db6 100644 --- a/packages/play-node-go/src/components/Form/Auth/Auth.js +++ b/packages/play-node-go/src/components/Form/Auth/Auth.js @@ -1,45 +1,49 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; -import Login from '../Login/Login'; -import Signup from '../Signup/Signup'; +import Login from "../Login/Login"; +import Signup from "../Signup/Signup"; +import Guest from "../../Button/Guest/Guest"; const Auth = (props) => { - const [ showForm, setShowForm ] = useState('login') + const [showForm, setShowForm] = useState("login"); const { state, dispatch } = props; return ( <> -
{setShowForm('login')}} +
{ + setShowForm("login"); + }} > -

Login

+

Login

- { - showForm === 'login' - ? - : <> - } + {showForm === "login" ? ( + + ) : ( + <> + )}
{setShowForm('signup')}} + className="nav__section nav__section--auth" + onClick={() => { + setShowForm("signup"); + }} > -

Signup

+

Signup

- { - showForm === 'signup' - ? - : <> - } + {showForm === "signup" ? ( + + ) : ( + <> + )} +
+
+
); -} +}; export default Auth; diff --git a/packages/play-node-go/src/reducers/auth/reducer.auth.js b/packages/play-node-go/src/reducers/auth/reducer.auth.js index ce220de..9152c95 100644 --- a/packages/play-node-go/src/reducers/auth/reducer.auth.js +++ b/packages/play-node-go/src/reducers/auth/reducer.auth.js @@ -1,20 +1,23 @@ export const authReducer = (state, action) => { switch (action.message) { - case 'LOGIN': - return loginReducer(state, action); - - case 'SIGNUP': + case "LOGIN": return loginReducer(state, action); - case 'LOGOUT': + case "SIGNUP": + return loginReducer(state, action); + + case "GUEST": + return loginReducer(state, action); + + case "LOGOUT": return state; default: return state; - } -} + } +}; function loginReducer(state, action) { const newUser = action.body; - return {...state, user: newUser }; -} \ No newline at end of file + return { ...state, user: newUser }; +} diff --git a/packages/play-node-go/src/services/authServices.js b/packages/play-node-go/src/services/authServices.js index 2ecbb52..261aa77 100644 --- a/packages/play-node-go/src/services/authServices.js +++ b/packages/play-node-go/src/services/authServices.js @@ -1,43 +1,58 @@ -import config from '../config'; +import config from "../config"; const authEndpoint = config.authAddress; -const signupEndpoint = `${authEndpoint}/signup` -const loginEndpoint = `${authEndpoint}/login` +const signupEndpoint = `${authEndpoint}/signup`; +const loginEndpoint = `${authEndpoint}/login`; +const guestEndpoint = `${authEndpoint}/guest`; var headers = new Headers(); -headers.append('Content-Type', 'application/json'); -headers.append('Accept', 'application/json'); -headers.append('Sec-Fetch-Site', 'cross-site') +headers.append("Content-Type", "application/json"); +headers.append("Accept", "application/json"); +headers.append("Sec-Fetch-Site", "cross-site"); -const loginService = async(formData) => { +const loginService = async (formData) => { const response = await fetch(loginEndpoint, { - method: 'POST', - credentials: 'include', + method: "POST", + credentials: "include", body: JSON.stringify(formData), - headers: headers + headers: headers, }) - .then(res => res.text()) - .then(text => JSON.parse(text)) - .catch(err => err); - + .then((res) => res.text()) + .then((text) => JSON.parse(text)) + .catch((err) => err); + return response; -} +}; const signupService = async (formData) => { const response = await fetch(signupEndpoint, { - method: 'POST', - credentials: 'include', + method: "POST", + credentials: "include", body: JSON.stringify(formData), - headers: headers + headers: headers, }) - .then(res => res.text()) - .then(text => JSON.parse(text)) - .catch(err => err); + .then((res) => res.text()) + .then((text) => JSON.parse(text)) + .catch((err) => err); return response; -} +}; + +const guestService = async () => { + const response = await fetch(guestEndpoint, { + method: "POST", + credentials: "include", + headers, + }) + .then((res) => res.text()) + .then((text) => JSON.parse(text)) + .catch((err) => err); + + return response; +}; export default { loginService, - signupService -} \ No newline at end of file + signupService, + guestService, +};