bug fixes

This commit is contained in:
nnajah1 2025-04-28 16:54:26 +08:00
parent 87e66e730b
commit f3e987a0a7
8 changed files with 106 additions and 92 deletions

Binary file not shown.

View File

@ -38,14 +38,14 @@
// headers: Head, // headers: Head,
// params: params // params: params
// }); // });
// let json = await response.json(); // let json = await response.json();
// if(json.message === "Unauthenticated.") { // if(json.message === "Unauthenticated.") {
// let tokens = await DB.get("token"); // let tokens = await DB.get("token");
// if(!tokens.length) return; // if(!tokens.length) return;
// store.dispatch({ // store.dispatch({
// type: TYPE_OPEN_ALERT, // type: TYPE_OPEN_ALERT,
// payload: { // payload: {
@ -84,7 +84,7 @@
// 'card_number': `${headers.card_number}` || '' // 'card_number': `${headers.card_number}` || ''
// }) // })
// }); // });
// let json = await response.json(); // let json = await response.json();
// if(json.message === "Unauthenticated.") { // if(json.message === "Unauthenticated.") {
@ -138,9 +138,9 @@
// if(json.message === "Unauthenticated.") { // if(json.message === "Unauthenticated.") {
// let tokens = await DB .get("token"); // let tokens = await DB .get("token");
// if(!tokens.length) return; // if(!tokens.length) return;
// store.dispatch({ // store.dispatch({
// type: TYPE_OPEN_ALERT, // type: TYPE_OPEN_ALERT,
// payload: { // payload: {
@ -175,7 +175,7 @@
// let tokens = await DB.get("token"); // let tokens = await DB.get("token");
// if(!tokens.length) return; // if(!tokens.length) return;
// store.dispatch({ // store.dispatch({
// type: TYPE_OPEN_ALERT, // type: TYPE_OPEN_ALERT,
// payload: { // payload: {
@ -219,7 +219,7 @@
// let tokens = await DB.get("token"); // let tokens = await DB.get("token");
// if(!tokens.length) return; // if(!tokens.length) return;
// store.dispatch({ // store.dispatch({
// type: TYPE_OPEN_ALERT, // type: TYPE_OPEN_ALERT,
// payload: { // payload: {
@ -259,14 +259,14 @@
// headers: Head, // headers: Head,
// params: params // params: params
// }) // })
// let json = await response.json(); // let json = await response.json();
// if(json.message === "Unauthenticated.") { // if(json.message === "Unauthenticated.") {
// let tokens = await DB.get("token"); // let tokens = await DB.get("token");
// if(!tokens.length) return; // if(!tokens.length) return;
// store.dispatch({ // store.dispatch({
// type: TYPE_OPEN_ALERT, // type: TYPE_OPEN_ALERT,
// payload: { // payload: {
@ -318,9 +318,9 @@ const defaultHeaders = {
export default async function API(endpoint, method, headers, params, body, onSuccess, onError, subject, action) { export default async function API(endpoint, method, headers, params, body, onSuccess, onError, subject, action) {
const navigationRef = getNavigationRef(); const navigationRef = getNavigationRef();
const headerToUse = () => { const headerToUse = () => {
switch(method) { switch (method) {
case "post": case "post":
return { return {
'Accept': headers.Accept ? headers.Accept : 'application/json', 'Accept': headers.Accept ? headers.Accept : 'application/json',
@ -329,7 +329,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc
'card_number': headers.card_number || '' 'card_number': headers.card_number || ''
}; };
case "get": case "get":
if(headers.Authorization) { if (headers.Authorization) {
return { return {
'Accept': 'application/json', 'Accept': 'application/json',
'Authorization': `${headers.Authorization || ''}`, 'Authorization': `${headers.Authorization || ''}`,
@ -343,7 +343,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc
return {}; return {};
case "delete": case "delete":
if(headers.Authorization) { if (headers.Authorization) {
return { return {
'Accept': 'application/json', 'Accept': 'application/json',
'Authorization': `${headers.Authorization || ''}`, 'Authorization': `${headers.Authorization || ''}`,
@ -367,7 +367,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc
} }
} }
switch(method) { switch (method) {
case "post": { case "post": {
axios({ axios({
method: method, method: method,
@ -379,16 +379,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc
callLogs(response.data, "success", "frontend", subject, action) callLogs(response.data, "success", "frontend", subject, action)
onSuccess(response.data) onSuccess(response.data)
}).catch(async (err) => { }).catch(async (err) => {
const errorToResponse = { const hasResponse = err?.response && err?.response?.data;
status: err?.response?.data?.status || err?.response?.status,
message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again."
}
if(errorToResponse.status === 401) { const errorToResponse = {
status: hasResponse ? err.response.data.status || err.response.status : null,
message: hasResponse ? err.response.data.message || err.response.message : "Something went wrong, please try again."
};
if (errorToResponse.status === 401) {
let tokens = await DB.get("token"); let tokens = await DB.get("token");
if(!tokens.length) return; if (!tokens.length) return;
store.dispatch({ store.dispatch({
type: TYPE_OPEN_ALERT, type: TYPE_OPEN_ALERT,
payload: { payload: {
@ -402,18 +404,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc
await DB.reset(); await DB.reset();
navigationRef.reset({ navigationRef.reset({
index: 0, index: 0,
routes: [{name: 'Login'}], routes: [{ name: 'Login' }],
}); });
} }
} }
}) })
callLogs(err?.response, "error", "frontend", subject, action) callLogs(err?.response || err, "error", "frontend", subject, action);
onError(err?.response) onError(err?.response); // Always use errorToResponse
return; return;
} }
callLogs(err?.response, "error", "frontend", subject, action); callLogs(err?.response || err, "error", "frontend", subject, action);
onError(errorToResponse) onError(errorToResponse);
}) })
return; return;
} }
@ -429,16 +431,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc
callLogs(response.data, "success", "frontend", subject, action) callLogs(response.data, "success", "frontend", subject, action)
onSuccess(response.data) onSuccess(response.data)
}).catch(async (err) => { }).catch(async (err) => {
const errorToResponse = { const hasResponse = err?.response && err?.response?.data;
status: err?.response?.data?.status || err?.response?.status,
message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again."
}
if(errorToResponse.status === 401) { const errorToResponse = {
status: hasResponse ? err.response.data.status || err.response.status : null,
message: hasResponse ? err.response.data.message || err.response.message : "Something went wrong, please try again."
};
if (errorToResponse.status === 401) {
let tokens = await DB.get("token"); let tokens = await DB.get("token");
if(!tokens.length) return; if (!tokens.length) return;
store.dispatch({ store.dispatch({
type: TYPE_OPEN_ALERT, type: TYPE_OPEN_ALERT,
payload: { payload: {
@ -452,18 +457,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc
await DB.reset(); await DB.reset();
navigationRef.reset({ navigationRef.reset({
index: 0, index: 0,
routes: [{name: 'Login'}], routes: [{ name: 'Login' }],
}); });
} }
} }
}) })
callLogs(err?.response, "error", "frontend", subject, action) callLogs(err?.response || err, "error", "frontend", subject, action);
onError(err?.response) onError(err?.response); // Always use errorToResponse
return; return;
} }
callLogs(err?.response, "error", "frontend", subject, action); callLogs(err?.response || err, "error", "frontend", subject, action);
onError(errorToResponse) onError(errorToResponse);
}) })
return; return;
} }
@ -471,7 +477,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc
case "delete": { case "delete": {
let url = !params.noID ? (EP[endpoint] + "?" + params) : EP[endpoint] + "/" + params.value; let url = !params.noID ? (EP[endpoint] + "?" + params) : EP[endpoint] + "/" + params.value;
let urlToUse = endpoint.includes("/") ? EP[endpoint.split('/')[0]] + `/${endpoint.split('/')[1]}` : endpoint.includes(":") ? endpoint : url; let urlToUse = endpoint.includes("/") ? EP[endpoint.split('/')[0]] + `/${endpoint.split('/')[1]}` : endpoint.includes(":") ? endpoint : url;
axios({ axios({
method: method, method: method,
url: urlToUse, url: urlToUse,
@ -482,16 +488,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc
onSuccess(response.data) onSuccess(response.data)
}).catch(async (err) => { }).catch(async (err) => {
console.log(err) console.log(err)
const errorToResponse = { const hasResponse = err?.response && err?.response?.data;
status: err?.response?.data?.status || err?.response?.status,
message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again."
}
if(errorToResponse.status === 401) { const errorToResponse = {
status: hasResponse ? err.response.data.status || err.response.status : null,
message: hasResponse ? err.response.data.message || err.response.message : "Something went wrong, please try again."
};
if (errorToResponse.status === 401) {
let tokens = await DB.get("token"); let tokens = await DB.get("token");
if(!tokens.length) return; if (!tokens.length) return;
store.dispatch({ store.dispatch({
type: TYPE_OPEN_ALERT, type: TYPE_OPEN_ALERT,
payload: { payload: {
@ -505,18 +514,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc
await DB.reset(); await DB.reset();
navigationRef.reset({ navigationRef.reset({
index: 0, index: 0,
routes: [{name: 'Login'}], routes: [{ name: 'Login' }],
}); });
} }
} }
}) })
callLogs(err?.response, "error", "frontend", subject, action) callLogs(err?.response || err, "error", "frontend", subject, action);
onError(err?.response) onError(err?.response); // Always use errorToResponse
return; return;
} }
callLogs(err?.response, "error", "frontend", subject, action); callLogs(err?.response || err, "error", "frontend", subject, action);
onError(errorToResponse) onError(errorToResponse);
}) })
return; return;
} }
@ -532,16 +541,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc
callLogs(response.data, "success", "frontend", subject, action) callLogs(response.data, "success", "frontend", subject, action)
onSuccess(response.data) onSuccess(response.data)
}).catch(async (err) => { }).catch(async (err) => {
const errorToResponse = { const hasResponse = err?.response && err?.response?.data;
status: err?.response?.data?.status || err?.response?.status,
message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again."
}
if(errorToResponse.status === 401) { const errorToResponse = {
status: hasResponse ? err.response.data.status || err.response.status : null,
message: hasResponse ? err.response.data.message || err.response.message : "Something went wrong, please try again."
};
if (errorToResponse.status === 401) {
let tokens = await DB.get("token"); let tokens = await DB.get("token");
if(!tokens.length) return; if (!tokens.length) return;
store.dispatch({ store.dispatch({
type: TYPE_OPEN_ALERT, type: TYPE_OPEN_ALERT,
payload: { payload: {
@ -555,22 +567,22 @@ export default async function API(endpoint, method, headers, params, body, onSuc
await DB.reset(); await DB.reset();
navigationRef.reset({ navigationRef.reset({
index: 0, index: 0,
routes: [{name: 'Login'}], routes: [{ name: 'Login' }],
}); });
} }
} }
}) })
callLogs(err?.response, "error", "frontend", subject, action) callLogs(err?.response || err, "error", "frontend", subject, action);
onError(err?.response) onError(err?.response); // Always use errorToResponse
return; return;
} }
callLogs(err?.response, "error", "frontend", subject, action); callLogs(err?.response || err, "error", "frontend", subject, action);
onError(errorToResponse) onError(errorToResponse);
}) })
return; return;
} }
case "patch": case "patch":
let url = !params.noID ? (EP[endpoint] + "?" + params) : EP[endpoint] + "/" + params.value; let url = !params.noID ? (EP[endpoint] + "?" + params) : EP[endpoint] + "/" + params.value;
const urlToUse = endpoint.includes("/") ? EP[endpoint.split('/')[0]] + `/${endpoint.split('/')[1]}` : endpoint.includes(":") ? endpoint : url; const urlToUse = endpoint.includes("/") ? EP[endpoint.split('/')[0]] + `/${endpoint.split('/')[1]}` : endpoint.includes(":") ? endpoint : url;
@ -585,16 +597,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc
callLogs(response.data, "success", "frontend", subject, action) callLogs(response.data, "success", "frontend", subject, action)
onSuccess(response.data) onSuccess(response.data)
}).catch(async (err) => { }).catch(async (err) => {
const errorToResponse = { const hasResponse = err?.response && err?.response?.data;
status: err?.response?.data?.status || err?.response?.status,
message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again."
}
if(errorToResponse.status === 401) { const errorToResponse = {
status: hasResponse ? err.response.data.status || err.response.status : null,
message: hasResponse ? err.response.data.message || err.response.message : "Something went wrong, please try again."
};
if (errorToResponse.status === 401) {
let tokens = await DB.get("token"); let tokens = await DB.get("token");
if(!tokens.length) return; if (!tokens.length) return;
store.dispatch({ store.dispatch({
type: TYPE_OPEN_ALERT, type: TYPE_OPEN_ALERT,
payload: { payload: {
@ -608,18 +623,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc
await DB.reset(); await DB.reset();
navigationRef.reset({ navigationRef.reset({
index: 0, index: 0,
routes: [{name: 'Login'}], routes: [{ name: 'Login' }],
}); });
} }
} }
}) })
callLogs(err?.response, "error", "frontend", subject, action) callLogs(err?.response || err, "error", "frontend", subject, action);
onError(err?.response) onError(err?.response); // Always use errorToResponse
return; return;
} }
callLogs(err?.response, "error", "frontend", subject, action); callLogs(err?.response || err, "error", "frontend", subject, action);
onError(errorToResponse) onError(errorToResponse);
}) })
return; return;

View File

@ -7,24 +7,23 @@ const DBName = "@UnioilLoyaltyApp_";
export const get = async (key) => { export const get = async (key) => {
try { try {
const result = await AsyncStorage.getItem(DBName + key); const result = await AsyncStorage.getItem(DBName + key)
return result ? JSON.parse(result) : null; return typeof result == 'object' ? JSON.parse(result) : result
} catch (error) { } catch (error) {
console.error(`AsyncStorage get error for key ${key}:`, error); return error
return null;
} }
}; }
export const set = async (key, data, onSuccess, onError) => { export const set = async (key, data, onSuccess, onError) => {
try { try {
const stringData = JSON.stringify(data); const stringifiedData = typeof data === 'string' ? data : JSON.stringify(data);
await AsyncStorage.setItem(DBName + key, stringData); const result = await AsyncStorage.setItem(DBName + key, stringifiedData);
onSuccess?.(); await onSuccess(result);
} catch (error) { } catch (error) {
console.error(`AsyncStorage set error for key ${key}:`, error); await onError(error);
onError?.(error);
} }
}; }
export const reset = async () => { export const reset = async () => {
try{ try{