forked from Navy.gif/webserver-framework-frontend
Get updated framework #1
@ -16,23 +16,41 @@ export const setSession = (user) => {
|
||||
sessionStorage.setItem('user', JSON.stringify(user));
|
||||
};
|
||||
|
||||
export const fetchUser = async () => {
|
||||
export const fetchUser = async (force = false) => {
|
||||
const user = getUser();
|
||||
if (!force && user) return user;
|
||||
|
||||
const result = await fetch('/api/user');
|
||||
if (result.status === 200) {
|
||||
const data = await result.json();
|
||||
setSession(data);
|
||||
return data;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
export const post = (url, body) => {
|
||||
return fetch(url, {
|
||||
const parseResponse = async (response) => {
|
||||
const { headers: rawHeaders, status } = response;
|
||||
const headers = [...rawHeaders].reduce((acc, [key, val]) => {
|
||||
acc[key.toLowerCase()] = val;
|
||||
return acc;
|
||||
}, {});
|
||||
const success = status >= 200 && status < 400;
|
||||
const base = { success, status };
|
||||
if (headers['content-type']?.includes('application/json')) {
|
||||
const data = await response.json();
|
||||
return {...base, ...data};
|
||||
}
|
||||
return { ...base, message: await response.text() };
|
||||
};
|
||||
|
||||
export const post = async (url, body) => {
|
||||
const response = await fetch(url, {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
|
||||
|
||||
return parseResponse(response);
|
||||
};
|
Reference in New Issue
Block a user