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

@ -320,7 +320,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc
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,15 +379,17 @@ 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,
@ -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,15 +431,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,
@ -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;
} }
@ -482,15 +488,18 @@ 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,
@ -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,15 +541,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,
@ -555,18 +567,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;
} }
@ -585,15 +597,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,
@ -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{