From f3e987a0a7a1a9623bfee48d9aa4533ebcc42c1c Mon Sep 17 00:00:00 2001 From: nnajah1 Date: Mon, 28 Apr 2025 16:54:26 +0800 Subject: [PATCH] bug fixes --- .../executionHistory/executionHistory.bin | Bin 17238876 -> 17238876 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/7.5.1/fileHashes/fileHashes.bin | Bin 923035 -> 923735 bytes .../.gradle/7.5.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes android/.gradle/file-system.probe | Bin 8 -> 8 bytes app/components/api/index.js | 177 ++++++++++-------- app/components/storage/index.js | 21 +-- 8 files changed, 106 insertions(+), 92 deletions(-) diff --git a/android/.gradle/7.5.1/executionHistory/executionHistory.bin b/android/.gradle/7.5.1/executionHistory/executionHistory.bin index 1de247020aabd2f5b80a44961d6b6f95c77d0d05..5ce704a23820ebbadecaf17fe2a4385fa2d22a26 100644 GIT binary patch delta 1416 zcmajcdwk7x9LMo$t=g%*;?zOU>jiaGC%vf7>Y}cC zNiXXabs8nZq zrln%7@y2Jk3{O^gZ}dT5yoG+~j{z8nw~>H%kZ5Fu54wHPG<)>|Z?Qc%%Hsk$ruhNMqs4j3v|UgOfy@{?)7bKNpdAuGd&$T`(7Vj`dATTZ)CC9>-iO$O~)E; zFdduSv_O>|_X~KtPjgi@y!hxyo)SM#3W3{6ikJT?4oIRHba~nH{yMwHu?T@YRR$$A^-4|v{SzFw*mZ#k5 zh6mG;jTy*6F5bgT%))HUK_2ok7w=;py!ZeG_z;DdkB_hbA7dek@CiP}XIO;K@dXy+ zODw@sEW=k=jurSC#rOs*u?pYfI~e#LtFZ=au@3980VVKZBYwb-_z9b^8C$RwKjRnt zif!1A9rz79u?xHLJN95N{=h!$$DjBM2T+QGIE2GEf}<$IF_hytPT(X?;WW1s>&*q6U~p(q&~ChUo6HxmpT{iBylfAQcMg zKgh(j>@Ksce^x4~Y1w7wQAUS~RwiPeU25M&7~h%CZ{B(5H_trt)-GDyvKB=$WLKCR zYN2plpq9E&5o)DKIn`PhDM}YBS}}^%C2FHf)mH7)ULDj?ak@;M)LEA+UJ1HFU38_c z($%^~*Q%?!sk;)@L)YngB`H}w)l0qAM>pt3^;JLh*8tt5ff}R~4b~71)y+y(n$k5) zw`jOVXrxBzR*hDMZqx0$LwD+~Rb!S%S5GtzqqE&sX=dd4tUzJR7~G9}a4*KQd+Cd`+Z-P~bqV+U)q z+vkaFdTU+Wm}!!^BEp$qvpGA2RAOns>)dvJ*Bmv+*Q)8=k$)~X$?qG| zoEtgo{I2Dy@TE70*j(p6q9o`Glmw?>Djvoon1<=dMIQ1o0|l6gM==Y9n2jPlhR5*) zWR(QxoZS@f$;!=jCl};Q^|-aJID0Ym^~0?4c1B8jjFtVXUk3h8y`y{s&Qp BMsWZD diff --git a/android/.gradle/7.5.1/executionHistory/executionHistory.lock b/android/.gradle/7.5.1/executionHistory/executionHistory.lock index 8bb74c076b003cde7c9b13cada05e4688ee6e865..2245057a615b030195aca330e5761eafa8033e5c 100644 GIT binary patch literal 17 VcmZR!y)A#cvoXV;0R$L1)c`QV1P1^B literal 17 WcmZR!y)A#cvoXV;0R$LXX8`~)F9df0 diff --git a/android/.gradle/7.5.1/fileHashes/fileHashes.bin b/android/.gradle/7.5.1/fileHashes/fileHashes.bin index 286ad4fc60f698360053325eda88d29babffe971..0395d8962675dd6c1ee8e486a4772f87b6471f35 100644 GIT binary patch delta 2161 zcmX|B4OmlEALrhEu#bDW)Bx9A3G)pF)bXKdAa9Ahp=jnT3_)@Z1VwSlpbeG~q{fCK zpwcM>3s6bWN2b`xAYO(Vz9I=>`9Tc`>J>{#U*2T&ke%H#-Sgb%p8tNo-}(JN?m34V zU%cM*V!wQ@Wdd^= z5ddeL5+sP2-(yGoW*(?@rS%rnLqUp+=qrV* zT|T8Czk?q{Dg&*`+a3ThJt`8#K2TCFZU`b)!m}-6n}TUiTTFq(I#(HwfaY02I6QV; z9Kj=Et;$QDoDN?7RotIIM8n2cB#vj9Lx+CsUX$X9H9n!BV68w2TazV01d(7>e(@C6 zTzp5;z$X&nc9Z1XbBsNpGJ3szv&-iY^!rG1h9nBD$})zdgDG0#1rIk!F7GAg!}NvH zK$1DV^I?hhbiK=`0$ReQXIQw&TN*5brz)joM3F3A3T5e3WH@SI(g^SzrBu$<77$t} zWx*%4RE#sc2zreu*e+?5)0r*-wUlB(`zWU~wSnrZJQh9}r4|c_X>i^c zWtA{hf6TfaM>DvzX*T$cS!ff$sz=mmF*jLn+{2Z=bbtVv?RGpi+r0yuU3{K)*0%d5 zVEk!k(Yt$Klt2Bo2rV@?z}U}17Wk`ZXTh2i;GZgvvq1!G>8KMH3}}-<4F=YI0hAVM zuHZvc-?}d`$2XW0C;bVA)To-(!E~5!&z|UH)%`1xcPfqL4fF1nxw#QYp}{9h_&Lzp z`7-%$l;h?4Z;wj5I_g+TlN*3Z@kTKA7s_e7j@vdq2dv&IG=xh}9}DjP*PR7< zA+(p&)Tf`vwZ}~bGWUyRkCpmYaehOHgo?{jfE5|2Bv~jIZYu+M8F=4q`!Ugo5#29f z$VogNN{21qWnE%lajrY-%Chr@@84*i#5w9iI74B}FnX(;?t$o0Iv>yWn8c`#6yCy^ zw~NPW<4jwyB6R}1T`zc2RjT7jRjHHE5=KXdpcL~$0U<^o(w$`5i$b9v+7SIzO5nGh zp6Minahb}y=C!x!4Xd`+TqxCRstPNyM;D`&UK(!1Rx!TzmO)*21G;s27c@>Cpj?gyz>;j%}wti6rL9;Kx7)X(+3PF&qRaKrJ=NgJZ6=2oqzX-YYOJ3^34T}I3qK@pM)nt`ItZ^ z?~<+5p895iHoPh*;^jHpUdN<@x!}FExG@E)CuyUl^OJ|0H_--f;%PXrgC=;)KDI-0 z&Ag9mhR3x3!RznQjXs3Us#N>ngXcIw&tc^j3Ga=H_kwr4emP#R^Bo{JnL%Qmc6-l z-{v&8#U&Vx^yKoBQ*_M4+3eJKuLU+kOPlUjj4o}&=!nGo*7y0@ldF0jRu#;TGjnK# z?H8cTlCtuVov(kkbZAgeHaYX!rhgy2fYF{dtgSDiH~*Gub2Kh{bnumsZ_yor?uv^3 z^IY%b`lx$LEYbcyb>^2F^COljFnXs5YljA=l3F|W)E^9P3K)p~934mQo;itqi!J6` zDn*LV@hfyy-09*%jOt&&=st2z;Pu%(H9hA3@nGNjy%^0?a=y0_YqP6G*GrR$<$0Hh;Tn5)QGWX25u9aD(#8YoFy-H@-W!SM!V~4BjG>zVt zb_Tb!E1Qm>xwx`SRT_z>)Ts&>#6fBncM{J#uCnH#WLOo;F2=!Fwm6E33P8kcelp(q z2D^S48i8YuvS}Jzj@boz_KZT?Uk!Sz;DK#cp~Y*t$YRSyb$YtW?ffyyTNoFD3*$6B z$tVx6T&YR6z`c7+JZ86O_Jtsu-_|AIqH0ar*Ju&`brBb^g7=)t#@NEDY=eL}LMs+< zM$B*Jd~s+NK3UJ5wLs<&HXb)Lb512n@Y`k&G5xOVY=i{z~y{m zD)$Qp$=eHsjUi_I(tcr$li0zh&v?Q4l&85N^MY;gS%5b~)(x2#yas29i7Rgi*}Tf_ zVw3|s7b>B=g#n4@LhX>E70l2Wka#ZC3ZGw6nsIkPn93p}PI@5tdEC5SeVWB5`h{bh zJcDp5>&<9!Buhw!RnLMObToL=Fi{F_SPX;gB2nowEX337;`bUNq2oh%a7S$hyF-)| zcFc##4hiGz$bqvSBE59L@er!0qwN#0l?tQT?QUmV0mVd*k;(0^LR$){e$E&%amG8% z5piGct~DLkx`L1Q*fSLhL>L{Z3hAg%y+yu`B=U(R*Ct)vl;7%?U+hZZYiDNfTrpX@ zgEFoUg6I#la=Pm}nDgH=AzrStrvZW;A!aCy7Y$msvu8VrMUDe<%Q!vcWQ*ZSXU{jZ z&NhM}(jEt4W)_jAPms;7A}GwF8M=xoFrRw5!=X(A)+C6D(Tb)0=Y5}^PCB=9=ui3X zT|KnCo^5hEbv>Y~D!u9Hfh%LH2V3(`k3Uv!X~-Q;LHENI*&=LXA*CEX?eWaL-OLf&Kz)zo(qbXREC`c6Gp)Q4#@-BP)X2qmDm zNk%s{jgMf#Qh5U-R1|k`0GA65)S;gXT?4OF3YoM_4rSO3TXV@QvX_zNs!i|hTV6hT zdX87sUC>`bnnjk&Wu#40A5oI}|F>LGi4|khQa^gx7}@H0!E4Q+jL_TLf6z#~O0xdi0^ diff --git a/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 053b8b748aa9e87777198811f264c8e126d02c58..5543c6317d76959ce5fbd5d968b1e32cbb34d970 100644 GIT binary patch literal 17 WcmZRMw##@stE^s%0R)&B-T?qEZ3K$| literal 17 WcmZRMw##@stE^s%0R)&B_5lDcJp@|- diff --git a/android/.gradle/file-system.probe b/android/.gradle/file-system.probe index f555164c4dfe56db5ca034f5b213b9cf8915d132..4f6790e4512d6cdb6991b5a2aa7350a27761298d 100644 GIT binary patch literal 8 PcmZQzV4PMJuy`{72h9Sw literal 8 PcmZQzV4UWpbafg42C4#Q diff --git a/app/components/api/index.js b/app/components/api/index.js index 77cd4a72..9d7bd6b9 100644 --- a/app/components/api/index.js +++ b/app/components/api/index.js @@ -38,14 +38,14 @@ // headers: Head, // params: params // }); - + // let json = await response.json(); // if(json.message === "Unauthenticated.") { // let tokens = await DB.get("token"); // if(!tokens.length) return; - + // store.dispatch({ // type: TYPE_OPEN_ALERT, // payload: { @@ -84,7 +84,7 @@ // 'card_number': `${headers.card_number}` || '' // }) // }); - + // let json = await response.json(); // if(json.message === "Unauthenticated.") { @@ -138,9 +138,9 @@ // if(json.message === "Unauthenticated.") { // let tokens = await DB .get("token"); - + // if(!tokens.length) return; - + // store.dispatch({ // type: TYPE_OPEN_ALERT, // payload: { @@ -175,7 +175,7 @@ // let tokens = await DB.get("token"); // if(!tokens.length) return; - + // store.dispatch({ // type: TYPE_OPEN_ALERT, // payload: { @@ -219,7 +219,7 @@ // let tokens = await DB.get("token"); // if(!tokens.length) return; - + // store.dispatch({ // type: TYPE_OPEN_ALERT, // payload: { @@ -259,14 +259,14 @@ // headers: Head, // params: params // }) - + // let json = await response.json(); // if(json.message === "Unauthenticated.") { // let tokens = await DB.get("token"); // if(!tokens.length) return; - + // store.dispatch({ // type: TYPE_OPEN_ALERT, // payload: { @@ -318,9 +318,9 @@ const defaultHeaders = { export default async function API(endpoint, method, headers, params, body, onSuccess, onError, subject, action) { const navigationRef = getNavigationRef(); - + const headerToUse = () => { - switch(method) { + switch (method) { case "post": return { '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 || '' }; case "get": - if(headers.Authorization) { + if (headers.Authorization) { return { 'Accept': 'application/json', 'Authorization': `${headers.Authorization || ''}`, @@ -343,7 +343,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc return {}; case "delete": - if(headers.Authorization) { + if (headers.Authorization) { return { 'Accept': 'application/json', 'Authorization': `${headers.Authorization || ''}`, @@ -367,7 +367,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc } } - switch(method) { + switch (method) { case "post": { axios({ method: method, @@ -379,16 +379,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc callLogs(response.data, "success", "frontend", subject, action) onSuccess(response.data) }).catch(async (err) => { - const errorToResponse = { - status: err?.response?.data?.status || err?.response?.status, - message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again." - } + const hasResponse = err?.response && err?.response?.data; - 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"); - - if(!tokens.length) return; - + + if (!tokens.length) return; + store.dispatch({ type: TYPE_OPEN_ALERT, payload: { @@ -402,18 +404,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc await DB.reset(); navigationRef.reset({ index: 0, - routes: [{name: 'Login'}], + routes: [{ name: 'Login' }], }); } } }) - callLogs(err?.response, "error", "frontend", subject, action) - onError(err?.response) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(err?.response); // Always use errorToResponse return; } - callLogs(err?.response, "error", "frontend", subject, action); - onError(errorToResponse) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(errorToResponse); }) return; } @@ -429,16 +431,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc callLogs(response.data, "success", "frontend", subject, action) onSuccess(response.data) }).catch(async (err) => { - const errorToResponse = { - status: err?.response?.data?.status || err?.response?.status, - message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again." - } + const hasResponse = err?.response && err?.response?.data; - 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"); - - if(!tokens.length) return; - + + if (!tokens.length) return; + store.dispatch({ type: TYPE_OPEN_ALERT, payload: { @@ -452,18 +457,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc await DB.reset(); navigationRef.reset({ index: 0, - routes: [{name: 'Login'}], + routes: [{ name: 'Login' }], }); } } }) - callLogs(err?.response, "error", "frontend", subject, action) - onError(err?.response) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(err?.response); // Always use errorToResponse return; } - callLogs(err?.response, "error", "frontend", subject, action); - onError(errorToResponse) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(errorToResponse); + }) return; } @@ -471,7 +477,7 @@ export default async function API(endpoint, method, headers, params, body, onSuc case "delete": { 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; - + axios({ method: method, url: urlToUse, @@ -482,16 +488,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc onSuccess(response.data) }).catch(async (err) => { console.log(err) - const errorToResponse = { - status: err?.response?.data?.status || err?.response?.status, - message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again." - } + const hasResponse = err?.response && err?.response?.data; - 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"); - - if(!tokens.length) return; - + + if (!tokens.length) return; + store.dispatch({ type: TYPE_OPEN_ALERT, payload: { @@ -505,18 +514,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc await DB.reset(); navigationRef.reset({ index: 0, - routes: [{name: 'Login'}], + routes: [{ name: 'Login' }], }); } } }) - callLogs(err?.response, "error", "frontend", subject, action) - onError(err?.response) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(err?.response); // Always use errorToResponse return; } - callLogs(err?.response, "error", "frontend", subject, action); - onError(errorToResponse) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(errorToResponse); }) return; } @@ -532,16 +541,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc callLogs(response.data, "success", "frontend", subject, action) onSuccess(response.data) }).catch(async (err) => { - const errorToResponse = { - status: err?.response?.data?.status || err?.response?.status, - message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again." - } + const hasResponse = err?.response && err?.response?.data; - 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"); - - if(!tokens.length) return; - + + if (!tokens.length) return; + store.dispatch({ type: TYPE_OPEN_ALERT, payload: { @@ -555,22 +567,22 @@ export default async function API(endpoint, method, headers, params, body, onSuc await DB.reset(); navigationRef.reset({ index: 0, - routes: [{name: 'Login'}], + routes: [{ name: 'Login' }], }); } } }) - callLogs(err?.response, "error", "frontend", subject, action) - onError(err?.response) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(err?.response); // Always use errorToResponse return; } - callLogs(err?.response, "error", "frontend", subject, action); - onError(errorToResponse) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(errorToResponse); }) return; } - + case "patch": 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; @@ -585,16 +597,19 @@ export default async function API(endpoint, method, headers, params, body, onSuc callLogs(response.data, "success", "frontend", subject, action) onSuccess(response.data) }).catch(async (err) => { - const errorToResponse = { - status: err?.response?.data?.status || err?.response?.status, - message: err?.response?.data?.message || err?.response?.message || "Something went wrong, please try again." - } + const hasResponse = err?.response && err?.response?.data; - 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"); - - if(!tokens.length) return; - + + if (!tokens.length) return; + store.dispatch({ type: TYPE_OPEN_ALERT, payload: { @@ -608,18 +623,18 @@ export default async function API(endpoint, method, headers, params, body, onSuc await DB.reset(); navigationRef.reset({ index: 0, - routes: [{name: 'Login'}], + routes: [{ name: 'Login' }], }); } } }) - callLogs(err?.response, "error", "frontend", subject, action) - onError(err?.response) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(err?.response); // Always use errorToResponse return; } - callLogs(err?.response, "error", "frontend", subject, action); - onError(errorToResponse) + callLogs(err?.response || err, "error", "frontend", subject, action); + onError(errorToResponse); }) return; diff --git a/app/components/storage/index.js b/app/components/storage/index.js index 76f99104..54550538 100644 --- a/app/components/storage/index.js +++ b/app/components/storage/index.js @@ -7,24 +7,23 @@ const DBName = "@UnioilLoyaltyApp_"; export const get = async (key) => { try { - const result = await AsyncStorage.getItem(DBName + key); - return result ? JSON.parse(result) : null; + const result = await AsyncStorage.getItem(DBName + key) + return typeof result == 'object' ? JSON.parse(result) : result } catch (error) { - console.error(`AsyncStorage get error for key ${key}:`, error); - return null; + return error } -}; +} export const set = async (key, data, onSuccess, onError) => { try { - const stringData = JSON.stringify(data); - await AsyncStorage.setItem(DBName + key, stringData); - onSuccess?.(); + const stringifiedData = typeof data === 'string' ? data : JSON.stringify(data); + const result = await AsyncStorage.setItem(DBName + key, stringifiedData); + await onSuccess(result); } catch (error) { - console.error(`AsyncStorage set error for key ${key}:`, error); - onError?.(error); + await onError(error); } -}; +} + export const reset = async () => { try{