From 76c74d520fe2426e601e77ca8e94ce1be3a3b6d6 Mon Sep 17 00:00:00 2001 From: Igor Stuev <108066576+isstuev@users.noreply.github.com> Date: Wed, 1 Jan 2025 12:25:04 +0100 Subject: [PATCH] Process 403 error from address/token/contract handle (#2477) * Process 403 error from address/token/contract handle * review fix --- icons/error-pages/403.svg | 3 +++ public/icons/name.d.ts | 1 + ui/address/utils/useAddressQuery.ts | 15 ++++++++++++--- ui/shared/AppError/AppError.pw.tsx | 6 ++++++ ui/shared/AppError/AppError.tsx | 4 ++++ ui/shared/AppError/AppErrorIcon.tsx | 1 + ...ppError.pw.tsx_default_status-code-403-1.png | Bin 0 -> 16626 bytes ui/shared/AppError/isCustomAppError.ts | 2 +- 8 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 icons/error-pages/403.svg create mode 100644 ui/shared/AppError/__screenshots__/AppError.pw.tsx_default_status-code-403-1.png diff --git a/icons/error-pages/403.svg b/icons/error-pages/403.svg new file mode 100644 index 0000000000..d4369a0a61 --- /dev/null +++ b/icons/error-pages/403.svg @@ -0,0 +1,3 @@ + diff --git a/public/icons/name.d.ts b/public/icons/name.d.ts index 495f04210e..d72d5f35d6 100644 --- a/public/icons/name.d.ts +++ b/public/icons/name.d.ts @@ -55,6 +55,7 @@ | "empty_search_result" | "ENS_slim" | "ENS" + | "error-pages/403" | "error-pages/404" | "error-pages/422" | "error-pages/429" diff --git a/ui/address/utils/useAddressQuery.ts b/ui/address/utils/useAddressQuery.ts index 3f1ae73929..391210a78c 100644 --- a/ui/address/utils/useAddressQuery.ts +++ b/ui/address/utils/useAddressQuery.ts @@ -25,6 +25,8 @@ interface Params { isEnabled?: boolean; } +const NO_RPC_FALLBACK_ERROR_CODES = [ 403 ]; + export default function useAddressQuery({ hash, isEnabled = true }: Params): AddressQuery { const [ isRefetchEnabled, setRefetchEnabled ] = React.useState(false); @@ -92,7 +94,7 @@ export default function useAddressQuery({ hash, isEnabled = true }: Params): Add }; }, placeholderData: [ GET_BALANCE ], - enabled: apiQuery.isError || apiQuery.errorUpdateCount > 0, + enabled: (apiQuery.isError || apiQuery.errorUpdateCount > 0) && !(apiQuery.error?.status && NO_RPC_FALLBACK_ERROR_CODES.includes(apiQuery.error?.status)), retry: false, refetchOnMount: false, }); @@ -107,7 +109,7 @@ export default function useAddressQuery({ hash, isEnabled = true }: Params): Add } else if (!apiQuery.isError) { setRefetchEnabled(false); } - }, [ apiQuery.errorUpdateCount, apiQuery.isError, apiQuery.isPlaceholderData ]); + }, [ apiQuery.errorUpdateCount, apiQuery.isError, apiQuery.isPlaceholderData, apiQuery.error?.status ]); React.useEffect(() => { if (!rpcQuery.isPlaceholderData && !rpcQuery.data) { @@ -115,7 +117,14 @@ export default function useAddressQuery({ hash, isEnabled = true }: Params): Add } }, [ rpcQuery.data, rpcQuery.isPlaceholderData ]); - const isRpcQuery = Boolean((apiQuery.isError || apiQuery.isPlaceholderData) && apiQuery.errorUpdateCount > 0 && rpcQuery.data && publicClient); + const isRpcQuery = Boolean( + (apiQuery.isError || apiQuery.isPlaceholderData) && + !(apiQuery.error?.status && NO_RPC_FALLBACK_ERROR_CODES.includes(apiQuery.error?.status)) && + apiQuery.errorUpdateCount > 0 && + rpcQuery.data && + publicClient, + ); + const query = isRpcQuery ? rpcQuery as UseQueryResult
> : apiQuery; return { diff --git a/ui/shared/AppError/AppError.pw.tsx b/ui/shared/AppError/AppError.pw.tsx index c4ec388e37..0cd6acbdca 100644 --- a/ui/shared/AppError/AppError.pw.tsx +++ b/ui/shared/AppError/AppError.pw.tsx @@ -20,6 +20,12 @@ test('status code 422', async({ render }) => { await expect(component).toHaveScreenshot(); }); +test('status code 403', async({ render }) => { + const error = { message: 'Test', cause: { status: 403 } } as Error; + const component = await render(i;*fXJ(&AT}3~Gh(@jCqc{Gl|D0b#yTHO$05mum@s{=7g0n`up| zNXqfQVr1;>=n%1*tC^b0$atAM*fvp-$+?ADa3FoJ*s5#5!`N&}&?gsf_lEC=*`Mq29=cbtFuR zmgXB|!Jen8xmk2jTl?OB21;3k2eYzbE42T$uK`#$;CIXu?_y)uLk{-GM?AkA6n(gt zU?<|TtsyNPFfX2{m}OA!8gF-ea $BrJ|yj#;>jC z>s-9N8m1ZH3ro#3{D3Gdp|COR |F|O89Vgsi&SroFqx+>&?rxz{%o%6fxu!ZKEH@+HCK+9#} z^&0XqK&|(=k#k!qZ}5ORbHqu{@NBHD7rcj(MMsQOwX`@VR-47I*h`4<6y$e_U}TMw z8gkkEva0e2AHc@jPk=hj$hMz;hl$`uVfW*VldJ0a0QsI*cDj|;TVL;*^7JInv4zCA zLi98>0RvPM_Wt&oon0}nXE-><38;)!6I_0G`SN6AY*b6Wa-l#=)Jnfxx5Cm`Hp&Ly zGSm?6ks!X1r9?&E@8#in{hr_8GuQ*DwIs7t@aE!(DRuMJ0+lTg`wy2R^-hHS0}P1u z%in&DlG&Q8b^iSMZ)F!<>Sj9)UhyaJgMZbSgnP!QvsF?JE3GRvcA``yRCU$<20LcH z-}_}z+rxjKZ!8F%baJY$?z(@oRwASBu=`85kXB%qlboG n64u2bheNuaX8LVrd{!cePKG#RJ;4((_*s8m^UHo_qErhmr=q1!+ zswL{p{hqCdB9RF5Fi%fUA_}powKYt&lJ6#W(`3@8E4FZRCjrNMc_C!hCRHPCY`okV zvY2Q`=`d@zD~wrmbIjBvc#AqUAM$eTnLNG+f8A+s4TuyC3a*1h+t^@Ae3Hby*IGDR zMI+?!AulF*6a8sayKtr+oI0H);eB KAbL^i+6tk1WQ~@y>v@x_VTd?KBWO z1I8Z!hCoU}vNH1rkd4KsP=43g-Te}XKQAV%jhU{fthM^@%t=U3D|UsYx~+r=I-MM6 zDB}?krC#;(7I9!u#2aURHsY+z!Ul)suhWcuq9cpX%RdvYoUzE)Crd(o)@11bBdp5G zlG#oIBHoSjAhnT^5h4}`sQSAWShh^cNjK}W;7naQTG1+$@@Y-!`1tth>Z+;jbR-ZN zVlIm>Hj<_R-{Ycbh3O-8C+bbj<~$@*BE$w*UEb&OHp{x?O^jB?O5_Aegn+GaOst-1 z%K!*wAniuV!o^}Ii|r99>Dt =IsL)Nvoz^z^h^p^C)i zJ6?GwvFfH$_xVP05x{<17k$bPbb ?3E-Q_x$9RR{->e@~JOtE9q*Z0-A{7y9M7!wzVxIJGK z^qCWiS6qkv(|(O|6!!n^Z{+vhE#gs))z@H^bLtC$yEIjl;(4sc-!nyH9BA`ILPJI` zR08!8{Q8$&SqX_ZLqBmHP ;Np&nhesD2-L4F?M%3S3O&+7^R 47r^S&9}C(L0>O&F)AhjK;qzk`UBJ|GwaJt03uG8#A!H#{MVo_ z`*W88&>N{Vyo!|>0Gmn(Ta^W%MKP@`T_Ip#JZI+ |1}@EH(L!}Yz!ex5rx=apV2j4@7K>Yh!G%)^s1E~KNIq~5n@7M!bJ0tt+&~i zmCgfx$`Fkm09P$!sOo5RcHEz8SzMG9cAxS*fM0L36@Od+AEu*kx?0D%fm*&hu}Xf! zmV7>k%iq-s0b`>9lC&rpGgS(5@?mOhoVl}}E;>mu*Mb1&1-F#}0348$VO(MJ9b0@@ zzE&Y83rmEx_f>8-jqZ~oSpa&T_4aX9+t1I~?f?PA$mfzYjvQ0|w@v|W>)*eBRV1$! z^IW>a=?&`I`CK#%DO?=y5OO;#`9k5B=6$go16AwmYj!iI{(V6hxAsYL$Isysmrg@d z6A12SXFg>=jfnn!o6J<`moy)Uw!U@f2n13ygw{WB<)el1N~N#&c%4?o1@_;CNd~vK zzspsTaS@ppT=dyF{$~?YJ@U`JES5pJS(Al&VF2u4iiYjXul7V`7*gME=NB9N^SfB0 zI{2{JDzK!((r=BO3&)j=*k`4Inlc9Zz9zXEdEDu;iFT~a%)?t>IEyjr_Z4Tq-`Wur z_nyC$1pZw?PA=B^%DsyaF^L&QvvQ>0YjN+GfZUX BFRPi#SnL4pcqy{zv6Rt07aL$H;1?Qr>CbU>yz4Jq3)p6l$vhO z694OZiFo}EZ#xv&y-oxGoUk6&%bE_X42ruqudtVaq)q?75si lq`Io?)HO^hSKN*dhgZSub9VIn0Z zRohTX5$oydlFh5k)o%z74B$6l=MxUEKHYE~Fw&3#zusMJYRag&*c>t8(5-M=^1Ehu z@giY5o1;PZ<42aR`z!wdSWzFv!Rgi*V7jp)a*R==)NIT`T1z>qM6@C=Cn}IoJpuy! zV(|r*JoVN$C!%SdWfS?5=%Fq;#3COLz#{}4G|&Jpb+QiAyE!aQ+}81NGcskKcttkJ zt8V`L0PUe fi!X*L7$zYrMPV4H z`a3j^_=O-Bc=l{>zo }^`uSNh2P+x4f$5bn{eLv1N{FCuhquS#6`QBBYT*hQ&3rMv9D;HaoH9jGs z>)9rz+X+KE8>tXWK1xWOaR=a`mJbfV=WFz7^lD0Gqq&`a@(MtZwXb98-?x{NlG=MV zq6&~gnF+0+y(Sh+ea@8_z*X*37JSIn7|T+&QzoLPkMt|4Xy0m)!&CLr;t>t_Hl3RM z)&C{aU-=}cQAfusHKnxC2N=Ww0Mq<74w^Xw|5tDEI~1IaZ0B{4lU4L!_Y~Hn(z`+h zvMs2rLf;Rze3SpKna{pjgpEryGhY}&C{Og5mUe%41Y;I_sfeYw{&in|IzlMcGhZ@6 zZ;qgKU$#d3eL$d>7Nbs1uKeZBdb $m6dW9E6BZX2cQ99b0?=Z1 z=4dsa8}5_89YN-aIE2rZGTvfZ6^acbe)0VIr{fH{B5IdCAVGT>D?lT9mPYT7E9%t_ zgZbraL+z`!u9Xs#DDj|E4LW&SDi0nE?A~boe8UX;SapNFalaLsohipZ?>cLzO!*WL z>T6PK(IkWbTlwgrf%Tp!XhALN+Ap_4Mn+~2cvg*_X1{@CMNFQgF;;5Q#r|-fdTT2` zFfg!RfaR&5LA}5^sSzLst7tjp&D5WOd|7}m%O39}t*orzq^bRJA z3YMb*Uci3-CB#y{!OcEU8%Qhn z<}Ulb9W**${Gbx>s&?K`&Yf)W#}zh>E+q 1K8TsGA_?4SDY;EHHqS zxTX>Mhgq|af4{ltW+2kD^agMlKry*2Ik>wwH6E=ek|{sCUGgWS*sPkpI^P|U%5#C* z@3#g7QS*co|E)xjKP4lRuViE*vRQ0|r*~r9(vmIhQ@pmeHafTF(VGcipeH9MG(52~ z>G8Z4p#dbc?ib79=DTmEx}#a5I4X*+xAQG5#Iy|!7n0})Q^ZBxd!P2z>xc>XcsYN= zsBGyoATEHID2#^c*)!&eJi%vK%84m4NOfM>>DrSxi!5a}#7?I2hkH1>p;=0#G&JI0 zHa`$B0qt&-J|KZ!ymf-B_f3MQUOWC>!6l+Ca~S+JlHS(Zy1PRMNcYuq(|Ue-ehzgj zSS5$JEOrm1@NNK^NQAER7*Dct_2&G!`Cx(>A0 s2 zYa@5$ghfjHOopJz`R??|1&Ipak(*9&`~$}9YuCv7z^fRg)DTwYxZIKvg8)9&dw(vj zUjTkOs&BC?^>MLZ2VGJ!*+&XRog_mWPX-s@p0lGH3*OfP_H#9kE9Y86yNKdNDgwjm z!qF@iX69eV<6{7csWtSFh^WbAbNHh1sHLSP@J#^7(PdHt{5l#~A~7*$=t%h1cRE0$ zHkH-S13q6Kn*rR+Gz6p4=FB+~Je6b-ewoj9isbh|Q9XQiSLNRcbv*7I2R;w@d)D4w zWjDk8G%!5;6CGV@-3mZyWM-NHs24z23w17fR#v$j@Q(I&cHN6mMMj$in)frnRK%B? z3+Fns1T8`rTPMje4HfC_KY)RLL@z^yp{Se6E(2m $ms;>asxY^IhA>b0AkrpFXN*z479&@15#eb0LhR(6uTs-T?)7D?o=1TyyxK;lF-8 ziwglry-Lev(Lv?^5?Wi49mvJIE>AMm;_JRVu)=UoHI4w0Dglr)0H&TcNGG8G>hHhk z35g&uX9ysc!XW}gK@6(!EaEr~BtAAaNPQ<9q NQ~FK&vu6aaCT}nCIZ>tow84C|Mc4Hcq`imQIwyTXKk+SRD08c3vi5n*FV1k z(wgb~6S0jAKD+M}Rs+14;kj(}y;c#uDqEd0zRH@Kno9$~*)>J)+=gf9xXc3+z;s ztwE=Sh3j4SthXxxGHiRg++y+KA|s B~cPx9z?)G}oeS>C@rKC1kW@Q0>4KP=MU!;M+ z)zM)wl)@oE8KSLxh(yA-vPw!yfZYj@ro5)UzHO7w?VK(TM(-B2hIf};-lvZMQD*~y zIGCFMJ|O~B5ApHqwz4p_+CXhHz_v&|gzLPK1{3 Sg{D`8V;2gXuPN0E2v;YED r*J?sUm`&CeSk3Xic{qs@34_V3-g1jA%Z8C0*bDyLbB)zVEpHCuRDR19~3C}>z zZan*QJu-h>@!`J^@c8HvJ?6d}^WFbm$s2(*eBIp4Zm?&9TB2xdD}<5WlqW#9P)oLh zNKx_qkE*NM&- wLQV0tK?~LQoDpZu#Ia%F1bq#A?&Ee{CWe z=?OG)CR9}){7jD|DInTPNeOsuU0z aau=kIip*E $&}AWKOqVN;dazYZuGEF#>g}!3kI| ?#cn5-3r$azK|oDc(UAVH$az4y>~L%$M5xWua+Z=!SmKDla_$<^eESB2
3O7G%HTF*{-wIL8dQ zXwK}*|C|M&9&q;?{#9$K`mG4{xK_k!X3k0uDalWjz@w(vd+XFfWhJa_;wx9~+A`|L z#;6wxlTk{M!2{Mlr~Bx|hyd4{&%FcPk3o1krlYIzV`_h>zQtM13 G zXPqXS^8c0}_KB@aGwzPgk4kB9HBEQDZFTSC38g{`yWFoUwJ@>YrlQ&&+UeCeN>5GY zXDn*5`0;?ngpnUr3& 95zfh1y;EC#$R5 zKt;*a3|of}aZw#{FidaT j%zg1>iY@&-_;8g@q1P}hrA|JI(R4K#yB(>4n%J+BNCc2jY9M~=lCh4 z qGC3LU+If>(bOsU=5Ki26)R&&A9$6E?ZiS9Zuv zM$OmwtfXT_t{VEkMY$cB$mmhIpIYvuE(w=gL`11V#np6f-11YMdsk#$Av|3fmCREr zg+Xi05o9Q|FL54hwFZaiO?IVo=s%qJa^oIIN!fpzO~ te?t!nUiMz{FeGF@wIwRnos;PcAC^RPfoy*|6ao!a;5xp57v zBc-a7*QB7FKha1J0WwmZP;lOx{2}F{aKVe)y(vRXTfSywS`?b?uO0 ! zId<20%9&aO#_oXw?&3RqNKXM;W$&xBFH~h&s>Q`kXqaI(c`Hbcr}lQ%4KuS2Pq*GM zs{{DN-p-1+JU9zyOxP)=ce3M6w0tJ9Ht#RP4H)8Hj6BtWT$)xltj2@MBVG05)Z*|% z@3zIaX%$D153DgDYKX#6=QnYJD7oVD6_&%V7})8+;LypIo+VR!-t)8y2UM%51zi|o zPC88aJ>aa4@18FFUY#W0>ZUPY-*_h@Yfe4_(AH6Tc~qvhHwL)qb0s~-qxv4j2zwaC z`{I+7j9y!BrP=It 7aF(*Pm*nos4&SH4|wWqt7`b*v)T5BZIs(_FNOG6>I8fKJ+MCdhG$1kGNpVw@^&G zbG}Jsy*WH3J~zD9VLR+e`sn^YIH~zPq}KJ5k1P8#%E &uE5-9!>EW9lf7h_+jV}u z?ID?-KR9Q0PWQ@xa+>U!v$b^psuf6o`|VM%QVBzH-iirT<4k-h<5=&(r+)oZt2Vs^ z 0~ zwbFTHII=6s( 2trbQlI5;k>dNna*K?bXun61r4lyNt+oVB{@k7; zWe@$o)U$bL5h(@co$sDfSmnlwkb&^_;&S^YGqO37(5>nu2lXpl=eH)}MzolqFNno- zACyKZ%$bXN8Y@?CzHozl!WBwMls%vqKH}ivaC!k_ `%kf$^wS<&_PT+idhy?!ll30>iENN(qC%eZZp+OT5`G zSk19v%nW9fia2wNnC5%Ne-)$MB?S2@7xCK8L+utq8NwKK$;TWmS8kXzzFVoBPUm@a z`7*Os@RO2^x_>_-fS0qFrW>#SoOr~ZCtvm!ysV73$R4u>cGElcDIW%>qP7+PKF8=N z-NE{KL1K( 5l5=j$HgW5#Db{3I_4yXKM(W{9LUJ~kK{v=l8 z$-mk%UAjNz125!?`T11 ^9~#W>F5ycnjNTKAemVa)B1TG5X{6-r@yugIB* z5sk;^Q?qnL1BxmNi{XV l(8mqMM{eY#}}1;Vh>30U{!-@`X;QjNdQQ&m2Ov z(%D86VPYTBG;-5F0~ fBBz*W1S;>U=vN(^!@1HJ~~QZ!;2bSeU0Fpcbc zil51&MnhA$PO1vDw1l&^{qHaeR*kaIH5CZBh1Kj5_@7&}|GQrE-acoaNs=&G2!w9L z&uNG4P*i!>c nN!)12F{jZA5&@uD%uXs}Y+ zH@2HngrfCmMVMKZ;tDToJ9B)TAh9mqc(kw2P 44Jy<`?wQwLGwcNe$l1N0&T9kA4pia07@uU9p3ol!6-SZoN`_L`^&z8}7 zMY(mhL!EnzbgZMv {tzNL#w$~05v4_#_Z49=#h5I*q z%l;_++nsawy6vfGcZP8#)MNH}1-QpH_4ILTUf}W=xLEfUzrA`&AOHE^UQfYuOG>1> z=jWp{wrcPhP9X|evmTotbnIF%>#=Gnml^iLsrk^*95ss37F2(M3w|0&4AMxw*`JkK zxW$=Ykm%p(N9{4)fcJ8vAJD^c#LCu^RZci74jj*iQ*Os4?l;{eIkp#Tt7H} a2T7OH-OPRHPu^b?`lJx?^ZMuzcz6A4GL#L9s>RjtPRJPsxoxEok z=9mhcpgx*mstk0>!FAJ3ndb*)`nHP}7sFFNdtRXj1Jlvk6O|VA%{E&7+>qL>>iKKJ zBo+y0?$5)?aGWp491_vhYj5mqn_T@`PiOZV?xHtm)6J^J8DW^B$M`{kZ60$`bKo~$ z-uIErCSEXnY>Z<=-ZP{vsd&zC@c9dxFz&dBraE_MZN}4a3l7;cMU9N_j1`|Yx75wX zT?LW9xJ0zwa8MmLLeKkJV@Hk{zPW~}8%{O37_|teL)@zG@&3fP<_qjPF;z89x214y zK5oVjc#p@__sX}2Q;zNZ{b9r%6jUc{qD0BAV2$6zpd8U}l~-=gN8pWjKbm3~M^^T& z7+&b&)5Am<6&p~hgJ-;|ZEbx-$vGNl)DmI>ig+W91|Q!k#)HF&LECQF9BY1g4n}m# zG{j^D`1zu)wZTpERBL*ITB1$TxuT5&J1EnkPP7hq-wBwrvn_{%Db!;Z2z{~J<=9to ziz``}kyUkWRbQ)zB=;XZpgT{Y*K+Dm7~@>fnqwkLKjX?}1YUj0jkerIS_wH_hOZhm z7^2qE9`7~O8qA#2HeC@U3?lld%C;&vYUB=E6E86QLtHh%pIY9`vU-mv={uY1^6GRe zcAl=J_YLym(Z9RQO@CGR`LF1W1k)?ss-4@Znilv?A%6^Rd%LW@4m#cJS~*!)n_ArQ z?T_D~d%9arRksk?x5n<3#6FLcUx2(|r;av0Ty5vQ5hcprZ8o8_ta)XZ+IW`am)Cl~ z{+NBV^nI;Kxl=8eCa`!o+{_lhkCe6Sg!4T^q-?zC&^)(CHWrmQ_#?_b$X(_xo)&)g zkhz+)3AEz4{l@`9g(N_D#_Zjk4a|z7 1k>gE~kR$bi1*M)~r5; zrKcO;zQ?RF(tll%xk0vsh*nvk4o}YcCGgE`(WrA|*dZy;&y~qvEa{qW!Xe07f(g)6 z)%&b!O9v7Ogua=l-NL}t zDAj{l)EyAsGRY+P;?So}+RS| c`(22U$usls3C`}yw%Tnov?@DtS(HBpZo>wFQ~ux zbDe6Uxi@Qo${q_x!FA&{_BhDi+KGNM6pL1OFtcdQBdJHjon}* pUu(`w z8ZVf2kmq@My>rpo5528j1Numn5lA&t9ryRozGA?tV}22f)Kj`1iDhr+;9g_T&1vmK z8p*FQo)PzZrOg~W4n)hf$!S>xqKtMuIqjPuvpO{`jG9lz&&)eI(uKQ<&zxVPhc9uo zXHk=w(>M+c$39zNlSw-<+UVC8Dt0^fnYkp5=35G7IbHVYNXS2;PO8M~1NAEGH8T;k z`sXgnenxStKJrG( wTfdSxrg$ rwfHO)E~iBE*z+Vt$%0n6Euo!O`j zk oQQm&_;-m)Bt9q#oR;5O6Y!Url8!`K+R0TF;l%YQ4z;KdwAV%_=!s74CCfX;} zyNJoAiw(N-1Ge)AhumACd$(RE6w4-0d+Ri1lxmH 8S){^V!xnvymr@(7 *RMlNChKtwkINts#lIsKX&`kF( zXl6zif&jh)CWL(g*2Dk tsYXZ_i#sdEcmAkq$u#bkd= z(^OSnbyb`iJ7G@dAAX6$UiJsu_l?C8(0@C(6ReP(O`!p`-Zk4VdPJyh`+ARq`PTR# z7b(mHBQ6!hExelj1o?MNu6aOrd~&k!e6Pi9k&f_DIGmdkHM#j35_ga3YHN5JdSjt2 z7hrW W 97eyE!+_dqaAOV?`S5S38<9N)N e>Bc<#3N(rKjHv;$mQP1YL^Cjfr6VTJAkMS@`Y1q1E_2MVr;;=_d zD@35&Z~}VyA%iavdf*Y(+|Pl3XOEht{!{k<`&HOW@+!|oL7-oFYUx8h7MfPoj&W{Y zn0|crv6P0_#Z_zoll1pAsm9Cv*52B0e<#qQ-trer3kzwozi&-knyy2K_7BU;4Kbam z;jI1q?eKF)?e2Vn9C*$2nf_~CshGMUK{~zC%a5*^ecv&MbbWUc+br<7Y)BCn=OlYD z0AbS1lzMJwTPSNL>6Gq(M)&&5F~e?lY0>d3Nr~mYO@GoPdLoyb^IF3|Shqm9&Q!{{ zvxnf7rePZW9q((1&l#a+dyKi%NSDzDw9&}u1IyjJH+7IEv)*|ckN2i>ZGQ7a9O8!0 zy{;CL!#%!(&aRKV^997CH3fOy?3eqDIG(nkz08KO{hH3vW~dEZ P+wYMkrr-(5|;N?=(7=hdWRn6T`#NDR6jqVg;AKpJ>cMlF|$y-0W0i~ zW@^4^|NT)>a=KOu%i}+qzR(Tdyt@X|oy8E-)XkH%3s+;%k0*QM)n~T3#2~l(7asAf zgJx!XLzB;9#S!TT{PDwI{vKAubP>Qd9c*s?cvu0b^Edt`_2*tL_)8cb-Vu0b2O^vv z^HkB>25Nv#yCXqLx>4r3Zf4a>CQhFEGU5T-*@0(SNx?fj`u2{|$RWww>7}^S;(ZRg zgS}O>Qwlpj&V`3TK@q2r+Qs=R@++ !z#+I&}p*oY0qA|-uP(|~C=6#7!827`sd>$}Qnw#i~@!)wt= z{fKPmgNq7WO+V1ngR4s}HkViRVP jD@`#e9cN0@xB&mC}pF~t&TlAnfNV7Q5 zqN;Onsb2%| l14lO)pZ_m7~cVSAr!km%AdXsQM9+R6V;(9ooq!MaoH_x9dkCL9( zi)gI@ca;{O#nG~gK+487)C>-KUr4>JByKGR<6g#?Jf2Ta-CJ<`@wMQV4MyC`#0_X{ zb}_SI20dZ(Vuo!duuMIM9A7@*LwqeWd;39eU(Ovr7ji=${!GF6g9#E{po`l1i%?G; z0|l4cV^(eU3v2207Y{cA14{VMF>%|Me-Qnx#H>%Rt_v>q0dl_Xe7`=-JPcpKQm52@ z Hmpdki( zP1b+5oqmYv F-yO5qRa@6O&-M#T}w7!?Ya9DF4P{b0S_mfkT*H9*IyC?_T?V9wiNy?2~p zO|Py0oH{*m_>28$AJ{E^SAPieZ5?9kMIEe#q*kAhyt?`tTlRroo->t^j+^zYzWU5U zGb#S$xcbB!{%$QZ2vng~1wGT^rFy*J NK! zbvEJw{qe$eK7cP2IwVd=hiHHYhYpVj@QlUU&3IZH(yy@{v~@?!(uGh*ENtvoquGwyq~UxZ0U0SqP$yAqEYmB!=Vh!U6F zNOggTI}{c8*Ts#V*40`o^r&D4Fgz>li~L>cUQNRvf9W_~v{%RGfr<2S|9 s%-(Z-NK}*EROfm93G(kXg{8VfG^B6KMDk@f6{Zn6Y2|lCpif`_FEda?ivR!s literal 0 HcmV?d00001 diff --git a/ui/shared/AppError/isCustomAppError.ts b/ui/shared/AppError/isCustomAppError.ts index 328368e2ae..462de0cfd1 100644 --- a/ui/shared/AppError/isCustomAppError.ts +++ b/ui/shared/AppError/isCustomAppError.ts @@ -1,7 +1,7 @@ import type { ResourceError } from 'lib/api/resources'; // status codes when custom error screen should be shown -const CUSTOM_STATUS_CODES = [ 404, 422, 429 ]; +const CUSTOM_STATUS_CODES = [ 403, 404, 422, 429 ]; export default function isCustomAppError(error: ResourceError ) { return CUSTOM_STATUS_CODES.includes(error.status);