Updated all API requests

This commit is contained in:
Ceferino Patino 2023-01-11 18:41:41 -06:00
commit efed383a4d
16 changed files with 194 additions and 190 deletions

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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 (

View file

@ -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);
});
}
}

View file

@ -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');

View file

@ -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 (

View file

@ -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);
});
}
}

View file

@ -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 <RecordMp3 {...{ togglePlay, record, uploadRecord, handleSubmit }} />;

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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 (

View file

@ -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 };

View file

@ -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 {

View file

@ -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));
}),
],
},
};

2
package-lock.json generated
View file

@ -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"
}