From efed383a4dd65a1ebd27f36697cebf9b4206b3f0 Mon Sep 17 00:00:00 2001 From: C4 Patino Date: Wed, 11 Jan 2023 18:41:41 -0600 Subject: [PATCH] Updated all API requests --- .../controllers/EditUserFormController.jsx | 10 +- .../src/controllers/LoginFormController.jsx | 11 +- client/src/controllers/MainPageController.jsx | 41 +++++-- .../src/controllers/MemberOrgsDashboard.jsx | 12 +- client/src/controllers/NavbarController.jsx | 9 +- .../OrganizationDashboardController.jsx | 41 +++++-- client/src/controllers/OwnedOrgsDashboard.jsx | 10 +- .../src/controllers/RecordMp3Controller.jsx | 28 +++-- .../src/controllers/RecoverFormController.jsx | 10 +- .../controllers/RegisterFormController.jsx | 10 +- .../src/controllers/ResetFormController.jsx | 11 +- .../UpdateOrganizationFormController.jsx | 10 +- client/src/services/orgServices.js | 44 ++----- client/src/services/userServices.js | 116 +++++------------- client/src/stories/EditUserForm.stories.jsx | 17 +++ package-lock.json | 2 +- 16 files changed, 193 insertions(+), 189 deletions(-) diff --git a/client/src/controllers/EditUserFormController.jsx b/client/src/controllers/EditUserFormController.jsx index d8a35ef..243714a 100644 --- a/client/src/controllers/EditUserFormController.jsx +++ b/client/src/controllers/EditUserFormController.jsx @@ -29,12 +29,14 @@ function EditUserFormController() { async function handleSubmit(e) { e.preventDefault(); - const error = await updateUserDetails(form); - if (error) { - setError(() => error); - } else { + try { + await updateUserDetails(form); navigate('/'); + } catch (error) { + const message = error.response.data; + + setError(() => message.error); } } diff --git a/client/src/controllers/LoginFormController.jsx b/client/src/controllers/LoginFormController.jsx index ba3c926..f96c1bd 100644 --- a/client/src/controllers/LoginFormController.jsx +++ b/client/src/controllers/LoginFormController.jsx @@ -36,12 +36,13 @@ function LoginFormController({ setToken }) { async function handleSubmit(e) { e.preventDefault(); - const { error } = await login(form); - - if (error) { - setError(() => error); - } else { + try { + await login(form); navigate('/'); + } catch (error) { + const message = error.response.data; + + setError(() => message.error); } } diff --git a/client/src/controllers/MainPageController.jsx b/client/src/controllers/MainPageController.jsx index 8426b40..a57cbc2 100644 --- a/client/src/controllers/MainPageController.jsx +++ b/client/src/controllers/MainPageController.jsx @@ -35,31 +35,52 @@ function MainPageController() { } async function retrieveOwnedOrgs() { - const { orgs } = await getOwnedOrgs().catch((e) => console.log(e)); + try { + const { orgs } = await getOwnedOrgs().catch((e) => console.error(e)); + setOwnedOrgs(() => orgs); + } catch (error) { + const message = error.response.data; - setOwnedOrgs(() => orgs); + console.error(message.error); + } } async function retrieveMemberOrgs() { - const { orgs } = await getMemberOrgs().catch((e) => console.log(e)); + try { + const { orgs } = await getMemberOrgs().catch((e) => console.error(e)); + setOrgs(() => orgs); + } catch (error) { + const message = error.response.data; - setOrgs(() => orgs); + console.error(message.error); + } } async function makeOrg(e) { e.preventDefault(); - await createOrg({ orgName: form.name }) - .then(retrieveOwnedOrgs) - .catch((e) => console.log(e)); + try { + await createOrg({ orgName: form.name }) + .then(retrieveOwnedOrgs) + .catch((e) => console.log(e)); + } catch (error) { + const message = error.response.data; + + console.error(message.error); + } } async function joinOrg(e) { e.preventDefault(); - await addMember(form.id) - .then(retrieveMemberOrgs) - .catch((e) => console.log(e)); + try { + await addMember(form.id); + await retrieveMemberOrgs(); + } catch (error) { + const message = error.response.data; + + console.error(message.error); + } } return ( diff --git a/client/src/controllers/MemberOrgsDashboard.jsx b/client/src/controllers/MemberOrgsDashboard.jsx index c07a312..dc5740e 100644 --- a/client/src/controllers/MemberOrgsDashboard.jsx +++ b/client/src/controllers/MemberOrgsDashboard.jsx @@ -9,9 +9,15 @@ function MemberOrgsDashboard() { function getOrgs() { if (Cookies.get('token')) { - getMemberOrgs().then((res) => { - setOrgs(() => res.orgs); - }); + getMemberOrgs() + .then((res) => { + setOrgs(() => res.orgs); + }) + .catch((error) => { + const message = error.response.data; + + console.error(message.error); + }); } } diff --git a/client/src/controllers/NavbarController.jsx b/client/src/controllers/NavbarController.jsx index 06877e8..b06dfde 100644 --- a/client/src/controllers/NavbarController.jsx +++ b/client/src/controllers/NavbarController.jsx @@ -24,7 +24,14 @@ export default function NavbarController() { const md = useMediaQuery((theme) => theme.breakpoints.only('md')); const logoutUser = async () => { - await logout(); + try { + await logout(); + } catch (error) { + const message = error.response.data; + + console.error(message.error); + } + Cookies.remove('token'); setUserData({}); navigate('/login'); diff --git a/client/src/controllers/OrganizationDashboardController.jsx b/client/src/controllers/OrganizationDashboardController.jsx index 4978937..fcae0d5 100644 --- a/client/src/controllers/OrganizationDashboardController.jsx +++ b/client/src/controllers/OrganizationDashboardController.jsx @@ -38,7 +38,7 @@ function OrganizationDashboardController() { setStatus(() => res.owner); }) .catch((e) => { - console.log(e); + console.error(e.response.data.error); navigate('/'); }); } @@ -51,7 +51,12 @@ function OrganizationDashboardController() { } async function handleDelete() { - await deleteOrg(orgID).then(navigate('/')); + await deleteOrg(orgID) + .then(navigate('/')) + .catch((e) => { + console.error(e.response.data.error); + navigate('/'); + }); } function copyID() { @@ -67,22 +72,36 @@ function OrganizationDashboardController() { async function removeSelected() { const doomedUserIDs = selection.map((row) => row.id); - await removeMember(orgID, doomedUserIDs); + try { + await removeMember(orgID, doomedUserIDs); + } catch (error) { + const message = error.response.data; + + console.error(message.error); + } } async function leaveOrg() { - await removeMember(orgID, {}).then(navigate('/')); + await removeMember(orgID, {}) + .then(navigate('/')) + .catch((e) => { + console.error(e.response.data.error); + }); } async function play(id) { - await getAudio(id).then((res) => { - const uploadedFile = new File([res], 'userAudio.mp3', { - type: res.type, - lastModified: Date.now(), + await getAudio(id) + .then((res) => { + const uploadedFile = new File([res], 'userAudio.mp3', { + type: res.type, + lastModified: Date.now(), + }); + const audioFile = new Audio(URL.createObjectURL(uploadedFile)); + audioFile.play(); + }) + .catch((e) => { + console.error(e.response.data.error); }); - const audioFile = new Audio(URL.createObjectURL(uploadedFile)); - audioFile.play(); - }); } return ( diff --git a/client/src/controllers/OwnedOrgsDashboard.jsx b/client/src/controllers/OwnedOrgsDashboard.jsx index dce59c7..4d2f869 100644 --- a/client/src/controllers/OwnedOrgsDashboard.jsx +++ b/client/src/controllers/OwnedOrgsDashboard.jsx @@ -9,9 +9,13 @@ function OwnedOrgsDashboard() { function getOrgs() { if (Cookies.get('token')) { - getOwnedOrgs().then((res) => { - setOrgs(() => res.orgs); - }); + getOwnedOrgs() + .then((res) => { + setOrgs(() => res.orgs); + }) + .catch((e) => { + console.error(e.response.data.error); + }); } } diff --git a/client/src/controllers/RecordMp3Controller.jsx b/client/src/controllers/RecordMp3Controller.jsx index 880c55b..c59b2cb 100644 --- a/client/src/controllers/RecordMp3Controller.jsx +++ b/client/src/controllers/RecordMp3Controller.jsx @@ -20,19 +20,23 @@ function RecordMp3Controller() { useEffect(() => { if (!userData.loading) { - getAudio(userData.id).then((data) => { - if (!data) { - return; - } + getAudio(userData.id) + .then((data) => { + if (!data) { + return; + } - setUploadedFile(() => { - // Retrieve audio file of user if exists - return new File([data], 'userAudio.mp3', { - type: data.type, - lastModified: Date.now(), + setUploadedFile(() => { + // Retrieve audio file of user if exists + return new File([data], 'userAudio.mp3', { + type: data.type, + lastModified: Date.now(), + }); }); + }) + .catch((e) => { + console.error(e.response.data.error); }); - }); } }, [userData]); @@ -92,7 +96,9 @@ function RecordMp3Controller() { formData.append('audioFile', uploadedFile, 'userAudio.mp3'); formData.append('token', Cookies.get('token')); - await setAudio(formData); + setAudio(formData).catch((e) => { + console.error(e.response.data.error); + }); } return ; diff --git a/client/src/controllers/RecoverFormController.jsx b/client/src/controllers/RecoverFormController.jsx index 7d503b8..2450431 100644 --- a/client/src/controllers/RecoverFormController.jsx +++ b/client/src/controllers/RecoverFormController.jsx @@ -20,9 +20,13 @@ function RecoverFormController() { async function handleSubmit(e) { e.preventDefault(); - const response = await requestReset(form); - if (response?.error) { - setError(response.error); + + try { + await requestReset(form); + } catch (error) { + const message = error.response.data; + + setError(message.error); } } diff --git a/client/src/controllers/RegisterFormController.jsx b/client/src/controllers/RegisterFormController.jsx index 9560de9..da70dfb 100644 --- a/client/src/controllers/RegisterFormController.jsx +++ b/client/src/controllers/RegisterFormController.jsx @@ -32,12 +32,14 @@ function RegisterFormController() { e.preventDefault(); const { confirmPassword, ...filteredForm } = form; - const response = await register({ ...filteredForm, orgID: params.get('orgID') }); - if (response?.error) { - setError(() => response.error); - } else { + try { + await register({ ...filteredForm, orgID: params.get('orgID') }); navigate('/login'); + } catch (error) { + const message = error.response.data; + + setError(message.error); } } diff --git a/client/src/controllers/ResetFormController.jsx b/client/src/controllers/ResetFormController.jsx index 8792a0a..6835fd7 100644 --- a/client/src/controllers/ResetFormController.jsx +++ b/client/src/controllers/ResetFormController.jsx @@ -27,12 +27,13 @@ function ResetFormController() { async function handleSubmit(e) { e.preventDefault(); - const error = await resetPassword(id, { password: form.password }); - - if (error) { - setError(() => error); - } else { + try { + await resetPassword(id, { password: form.password }); navigate('/login'); + } catch (error) { + const message = error.response.data; + + setError(message.error); } } diff --git a/client/src/controllers/UpdateOrganizationFormController.jsx b/client/src/controllers/UpdateOrganizationFormController.jsx index 219ad77..e4523e5 100644 --- a/client/src/controllers/UpdateOrganizationFormController.jsx +++ b/client/src/controllers/UpdateOrganizationFormController.jsx @@ -19,9 +19,13 @@ function UpdateOrganizationFormController() { async function handleSubmit(e) { e.preventDefault(); - await updateOrgDetails(orgID, { orgName: name }).then(() => { - navigate(`/org/${orgID}`); - }); + await updateOrgDetails(orgID, { orgName: name }) + .then(() => { + navigate(`/org/${orgID}`); + }) + .catch((e) => { + console.error(e.response.data.error); + }); } return ( diff --git a/client/src/services/orgServices.js b/client/src/services/orgServices.js index a70ae21..257ea8a 100644 --- a/client/src/services/orgServices.js +++ b/client/src/services/orgServices.js @@ -6,73 +6,43 @@ async function addMember(id) { const instance = createRequest(`/org`); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post(`/${id}/add`); - } catch (error) { - console.log(error.response.data); - return error; - } + await instance.post(`/${id}/add`); } async function createOrg(data) { const instance = createRequest('/org'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post('/', data); - } catch (error) { - console.log(error.response.data); - return error; - } + await instance.post('/', data); } async function deleteOrg(id) { const instance = createRequest('/org'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.delete(`/${id}`); - } catch (error) { - console.log(error.response.data); - return error; - } + await instance.delete(`/${id}`); } async function getOrg(id) { const instance = createRequest('/org'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - const response = await instance.get(`/${id}`); - return response.data; - } catch (error) { - console.log(error.response.data); - return error; - } + const response = await instance.get(`/${id}`); + return response.data; } async function removeMember(id, doomedUsers) { const instance = createRequest('/org'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post(`/${id}/remove`, { doomedUsers }); - } catch (error) { - console.log(error.response.data); - return error; - } + await instance.post(`/${id}/remove`, { doomedUsers }); } async function updateOrgDetails(id, data) { const instance = createRequest('/org'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.patch(`/${id}`, { data }); - } catch (error) { - console.log(error.response.data); - return error; - } + await instance.patch(`/${id}`, { data }); } export { addMember, createOrg, deleteOrg, getOrg, removeMember, updateOrgDetails }; diff --git a/client/src/services/userServices.js b/client/src/services/userServices.js index c7ecf52..b781e9c 100644 --- a/client/src/services/userServices.js +++ b/client/src/services/userServices.js @@ -10,43 +10,28 @@ async function login({ email, password, remember }) { const instance = createRequest('/auth'); instance.defaults.headers.common['Authorization'] = `basic ${encoded}`; - try { - const { data } = await instance.post('/login', { remember }); + const { data } = await instance.post('/login', { remember }); - if (remember) { - Cookies.set('token', data.token, { expires: 365 }); - } else { - Cookies.set('token', data.token, { expires: 1 }); - } - - return data; - } catch (error) { - console.error(error.response.data); - return error; + if (remember) { + Cookies.set('token', data.token, { expires: 365 }); + } else { + Cookies.set('token', data.token, { expires: 1 }); } + + return data; } async function register(data) { const instance = createRequest('/auth'); - try { - await instance.post('/register', data); - } catch (error) { - console.error(error.response.data); - return error; - } + await instance.post('/register', data); } async function logout() { const instance = createRequest('/auth'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post('/logout'); - } catch (error) { - console.error(error.response.data); - return error; - } + await instance.post('/logout'); } async function remember() { @@ -54,50 +39,29 @@ async function remember() { instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; if (Cookies.get('token')) { - try { - const { data } = await instance.post('/remember'); - - return data; - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + const { data } = await instance.post('/remember'); + return data; } } async function getUser(userID) { const instance = createRequest('/auth'); - try { - const { data } = await instance.get(`/${userID}`); + const { data } = await instance.get(`/${userID}`); - return data.user; - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + return data.user; } async function requestReset(data) { const instance = createRequest('/auth'); - try { - await instance.post(`/reset`, data); - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + await instance.post(`/reset`, data); } async function resetPassword(id, data) { const instance = createRequest('/auth'); - try { - await instance.patch(`/reset/${id}`, data); - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + await instance.patch(`/reset/${id}`, data); } async function setAudio(data) { @@ -105,67 +69,43 @@ async function setAudio(data) { instance.defaults.headers.common['Content-Type'] = 'multipart/form-data'; instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post('/audio', data); - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + await instance.post('/audio', data); } async function getAudio(userID) { - try { - const response = await axios.get( - `${process.env.REACT_APP_DOMAIN_ROOT}/public/audio/${userID}.mp3`, - { - responseType: 'blob', - } - ); + const response = await axios.get( + `${process.env.REACT_APP_DOMAIN_ROOT}/public/audio/${userID}.mp3`, + { + responseType: 'blob', + } + ); - return response.data; - } catch (error) { - return; - } + return response.data; } async function updateUserDetails(data) { const instance = createRequest('/auth'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - await instance.post(`/update`, data); - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + await instance.post(`/update`, data); } async function getMemberOrgs() { const instance = createRequest('/auth'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - const { data } = await instance.get(`/orgs/member`); + const { data } = await instance.get(`/orgs/member`); - return data; - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + return data; } async function getOwnedOrgs() { const instance = createRequest('/auth'); instance.defaults.headers.common['Authorization'] = `bearer ${Cookies.get('token')}`; - try { - const res = await instance.get(`/orgs`); + const { data } = await instance.get(`/orgs`); - return res.data; - } catch (error) { - console.error(error.response.data); - return error.response.data; - } + return data; } export { diff --git a/client/src/stories/EditUserForm.stories.jsx b/client/src/stories/EditUserForm.stories.jsx index 2c32dbd..b7ad7a9 100644 --- a/client/src/stories/EditUserForm.stories.jsx +++ b/client/src/stories/EditUserForm.stories.jsx @@ -36,3 +36,20 @@ WithIntialData.parameters = { ], }, }; + +export const WithoutInitialData = Template.bind({}); +WithoutInitialData.args = { + firstName: '', + lastName: '', + email: '', + pronouns: '', +}; +WithoutInitialData.parameters = { + msw: { + handlers: [ + rest.post(`${process.env.REACT_APP_API_ROOT}/auth/update`, (req, res, ctx) => { + return res(ctx.status(200)); + }), + ], + }, +}; diff --git a/package-lock.json b/package-lock.json index 8ab63cd..37d5ab2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48624,7 +48624,7 @@ "react-helmet": "^6.1.0", "react-router-dom": "^6.2.2", "react-scripts": "5.0.0", - "storybook-addon-cookie": "*", + "storybook-addon-cookie": "^1.0.6", "web-vitals": "^2.1.4", "webpack": "^5.75.0" }