From d29f3f14b5206bcd035fdfbbf77d3f7729b5c4b8 Mon Sep 17 00:00:00 2001 From: bigpoppa-sys Date: Thu, 14 May 2026 08:19:14 +1000 Subject: [PATCH] Add mock data mode and refresh exchange data --- package.json | 1 + public/exchanges/gate.ico | Bin 0 -> 619 bytes public/exchanges/htx.ico | Bin 0 -> 1536 bytes public/exchanges/kucoin.svg | 4 + public/exchanges/lbank.png | Bin 0 -> 883 bytes src/data/exchanges.js | 34 ++--- src/data/mockApi.js | 253 ++++++++++++++++++++++++++++++++++++ src/lib/api.js | 30 +++++ src/lib/formatters.js | 2 + src/lib/formatters.test.js | 14 +- 10 files changed, 320 insertions(+), 18 deletions(-) create mode 100644 public/exchanges/gate.ico create mode 100644 public/exchanges/htx.ico create mode 100644 public/exchanges/kucoin.svg create mode 100644 public/exchanges/lbank.png create mode 100644 src/data/mockApi.js diff --git a/package.json b/package.json index ad1d7e2..835e558 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "scripts": { "start": "react-scripts start", "dev": "react-scripts start", + "dev:mock": "REACT_APP_USE_MOCK_DATA=true react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "test:ci": "react-scripts test --watchAll=false --maxWorkers=50%", diff --git a/public/exchanges/gate.ico b/public/exchanges/gate.ico new file mode 100644 index 0000000000000000000000000000000000000000..bfa050a48189f2cd868a7a0ef9426746732f8948 GIT binary patch literal 619 zcmV-x0+js#0096203aX$0096P0967202TlM0EtjeM-2)Z3IG5A4M|8uQUCw|AOHXW zAP5Ek0047(dh`GQ00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E000SaNLh0L01m?d z01m?e$8V@)0005%NklC5nX4EY5CJdVW@^-K(_7bZRd+gs%_( znKqw~0C=bY+n>W%X5K6-w)+t9RTa2j>~_PFM5_tF9gtkM7rV2&3pIe;fh9os zyd+j+SZ&urqY2=`boF6yBs7`;RR2N|KwDB0PC+2pW>I=>|3(v_e2?n<1p$Anbq;XH zzY++Y{3fX>wjij0gaD@y*JC2e0dsSXIRI`RJ0^kQBC7u{pyhG^+&tCdu>k@BGITf& zfSV^TIAb@c0NscLRt%AV;$GP;#^}XdL~h7otg=Pe;$VHm_TB3>Gm-ic9z!J_Lm!F$>no8SoL36T}qw14Y(m>76%IH3m&EcAVH5PpiB2 zd8+EQU8AR`PfO~ea4T=-f6uUhxCOwXC{9;Jadv}m;TiyRzyuEEwA=uI&Pfm7#5Dj; ztD<<_!FTZkfNBQ-ykZOqGg=Kuf@4>$lo?=S%13XDsqe;5Er4XxJz zhA#tvg2cD4@U3hHfTIQgpmU3FWs?CG4FLcaFbaTWLjZsU>jO8STsqfb06;M4)c?Z`c+CIz9CQt7rT;z; z0FVthrT_ouH@>Ahd8q^F*rE``TlBwk&b#=gE{Z>h11!*gk5~CM0Dj@S>Iwc95deUu zQHQ}F0zrLpb{`1w z;GX&c0HGDXc|zp_0K)wKO=9KaLdZ|S2Xz4WeXNm@D0P!(CgszC8iM#lmJ2V60acTQ{*4u`v>Du4FG_kvGPk< z)E{{BM@nA<03gt&{J^|_P5-+GAb3uWTH&fA?YkV`KMR002nKf;F!`73-^o*cVAl^> z_+VP?1wef!xLA@^=wU4RejHyPR{r|TJU?C;ZGbay_>-aHw;TK&Iut87wf<5b02uoH z8e6~XctFYpPlR&sG1k91b5MVFzt1rCeXRBSbOqw5pYQ3|cGmC76(k+uO55j85q(?b zZ$NMh>(@Bt^N{zi!q2QS%mUJ^pK;;Sp{gHPK&17TY<~Y@+GSI|T^5jL{U>~TenJ92 zKP({1`uRRCN8q=Q1q|i=J(InCY=NKoxKI-3QfSKm)3Y+FlN&SzG+BhJ4 z@#j`A^_z$TXqkeMQSQ{#zkM#ITDOwrT;*bc`qc-5xkkLWqkhJlzIOKlTHhMWY#{(o9SJPy<0OGCnhctL{9{?c34j&QL4*=w;_(`&U0Kj^^9{`ZG z!AqL;0|1Hl_e!&VrCC5nW$?Fes|V@;$4bghAV&JnUG=lINFqfkm~ps+u3g0`U-ex; zioHLK(Z9stPxozLigqwY|38?_MFK!?KL9miD!TR+N&l)lf=&{of=so4iP69Qp1>4= zAeZ%Tt#m~I$m#|bD%!p%)q?+57Y8r`;H9OGSvr9%JW&(1AjI>5>Ye@)>3?SBk&0+; zfMk@1N^Y|LK!t{3Vq3&*0I3)wXy)i z*tawQ*t7nqEHE*n;*$iTTLwE{T5a!LNREmWHe1V$z3BkIxRe?e`2bumHW}$uZQ4U@x>z(6*m2kOinN z(B2hPis$*P#03l)!SSx3s(n2Iy=ZJOPd+!;G%JAOQ%SvnyiB?}W^iC>1m*Sc^SOY~ zkVEJs22dkHmE!2Am%Kdi)3=_m;<=a6aYWX6;(0k}J*kuM{3kKPMpaSiS m7qa?#BI%ZOi4=(u%l`u#JoF&`U@cMr0000 literal 0 HcmV?d00001 diff --git a/public/exchanges/kucoin.svg b/public/exchanges/kucoin.svg new file mode 100644 index 0000000..e71f0f0 --- /dev/null +++ b/public/exchanges/kucoin.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/exchanges/lbank.png b/public/exchanges/lbank.png new file mode 100644 index 0000000000000000000000000000000000000000..037078d2e22a46adf1691935a4980865e5f3020e GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBiUNE>T!A$4;QwuqS_gB6`v(~I zFJX9pmSI9Qg8(msf;7YYP6h=ThJpl!^P3prgBT1n8P-o{Xvk$q2x7>OXK2V{@ONQ2 zzmXv!nBkl08D5|%{3Stt!3^{7Pf&;#c;9e-zk`AQdaGmpsSFHE3q4&NLn>~qoq4-# zu>p^3tjCF^;_^MY9vOML&;QpK-a0c&s^e%U=Wo+By(x(&1+FfPcs84-GiTfDbkWp_ z>kTI6tjyCW61X%)UsCSL$^hAEJA!sy%j(MQpYE)3;^>9&uwQj&GS#Ky84iS7O-x&H z=Z}6qTS9t?(KFfFqEglAHFJc2*~BxmG=%v-esM8%^}b4`0!ja~C$_H7bBri^w7KBAt<{=;QnN%V!vihjlzSI%nqv#kQ-0 z``!u76F5BK>P&T~+UXk>W=pJ458vq{&gOOJ(u*lmD$iN34(>YST(ab}(87-?tS6h# znswWpv{QDfdcD!{A*ZfA5_`9^$Xceq!W5qH4zLW_HC5cu?EmXN@7e1`Zdsvxt%KhW>l!w3XxUOuxm~EqGd*j}uIg_`~ zQ{Jn%)ACB#8ApLly<7cr;{TjE$$hq!*XoB^F3X3F;nJI;XI!}QqIiSKL>|_t9WioUYq=Bqj*8PV&A&6QMrd17R`QtX!f(!r+!*0|ETyFcjfbo9R<5L)VbTK zPS6Zp<8)5YCzz>0e{R9qLW5~jPdRrm9h1<#SXB~P!!7=4-t#S{yY{S&+qzua!cN%!>cc*8~<2QZKio~=d5})x0hOnLzm_1sVe+P`)42*Ve?Qh u%v-b~W@n_hmfOc!`QaWa)vy2m{V2XOzbq);?XnaoJ9xVKxvX { const superblockDate = 'April 20th 2026, 2:15:21 pm'; @@ -12,3 +17,10 @@ describe('date formatters', () => { expect(formatUtcTime(superblockDate)).toBe('2:15 PM'); }); }); + +describe('country labels', () => { + test('shortens United Arab Emirates to UAE for common feed codes', () => { + expect(getCountryName('ARE')).toBe('UAE'); + expect(getCountryName('UAE')).toBe('UAE'); + }); +});