From aac2c7027e999e8148a6f3e6e4bdb65adec40b42 Mon Sep 17 00:00:00 2001 From: RealFascinated <67254223+RealFascinated@users.noreply.github.com> Date: Sat, 2 Apr 2022 07:01:58 +0100 Subject: [PATCH] Updated Added documentation to methods Fixed avatars not initially loading Just generally cleaned up the codebase --- .gitignore | 2 +- README.md | 5 +++-- .../0bf56fa581064964f936833a15d6351f0382a322.jpg | Bin 0 -> 9430 bytes .../4bbdaa1004a00eeb9c8d9432640e1c7d490b46d9.jpg | Bin 0 -> 7685 bytes .../6423f3a3429d503fa97a1c5282155436d12a9366.jpg | Bin 0 -> 5053 bytes .../a79af292ca03aca894e7acc3bd8c3cacfddf2906.jpg | Bin 0 -> 9145 bytes components/Avatar.js | 2 +- components/PlayerStats.js | 1 - components/ScoreStats.js | 10 ++++++++-- next.config.js | 3 +-- pages/api/beatsaver/map.js | 9 +++++---- styles/globals.css | 3 +-- utils/utils.js | 7 +++++++ 13 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 cache/0bf56fa581064964f936833a15d6351f0382a322.jpg create mode 100644 cache/4bbdaa1004a00eeb9c8d9432640e1c7d490b46d9.jpg create mode 100644 cache/6423f3a3429d503fa97a1c5282155436d12a9366.jpg create mode 100644 cache/a79af292ca03aca894e7acc3bd8c3cacfddf2906.jpg diff --git a/.gitignore b/.gitignore index d03b476..14917fc 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,4 @@ yarn-error.log* .vercel # IntelliJ -.idea +.idea \ No newline at end of file diff --git a/README.md b/README.md index 420b45b..97de9ec 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ -# Simple ScoreSaber Overlay +# ScoreSaber Overlay with real-time data The public url to view/use this is: `https://bs-overlay.fascinated.cc`
-To use your scoresaber: `https://bs-overlay.fascinated.cc/?id=765611` +To use your scoresaber: `https://bs-overlay.fascinated.cc/?id=76561198449412074`
+Support Server: https://discord.gg/4FYVVhZPm7 ## Getting Started with developent diff --git a/cache/0bf56fa581064964f936833a15d6351f0382a322.jpg b/cache/0bf56fa581064964f936833a15d6351f0382a322.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d29131714a105b76125a851a2b18f220b627f8b GIT binary patch literal 9430 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 DS#iHO literal 0 HcmV?d00001 diff --git a/cache/4bbdaa1004a00eeb9c8d9432640e1c7d490b46d9.jpg b/cache/4bbdaa1004a00eeb9c8d9432640e1c7d490b46d9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f4733d8d574468e7cf45c73900d0d4e50984477 GIT binary patch literal 7685 zcmb7{=QkWsw}(fR(M9idh^WySHQMN-cS6)4daqFuE!yZ^h&p;3H9~X}f>DR)1kp!y zZr*#>`v=_T>)!iW>zuXDS-<_b@Q4B^0&uXfaj>y)aIkTJKpb5Br}+4Ic=!~=B!o|? zDQIY@DX6IE7&(~f=s^rrR4lwKpl6(1++4KGd;)yW1vs8_J^zmc0|*4-}i3eN~3SaBmINI|d9W{Q3Ngi2W7D>Aid z`t;vCJ;wjp|LX<-{^P;H00RCM1xNu;p8V5eVqyTX|F;9<2>=s|R1lktm0VtzP3UzW z&ObY>cpW6H&^YzD1R%ux=Oe`=1;_!4O(ARm!W10w<=-57LZjO(#S2MmH+$2Yxa8dG3YjkIZPLqtP_#(A084;HUGYWIfGv0YGDe0HhVUU};wKpHM#6iT$1Gbo_ zj{Dwqdb(|bLker81lamsuK3H2{KZDg7;FtuCGk2yiPhcYRHw0Qznm?dN1~04)(BQd1x~&AFixsEqZSE(P+%I{DF`~Op z?gcW~)kl`KNk`qH7<+Dz=&`T9ItgkI!h*T?YYl(%ZOdY*aoEq9#a5tokhD1K6Whd@ zq8F2UdnHU*4*Icu7hsm%z3O!2&$Ec{BM-Y!-qv6Tw}Y{Qb7@6&nrnlIg68Te^Rq7^ zkoa(H1v_4nkT(|`t)&UpwjG=^8gAnReX)n5HcKYufB!_%$^#MY8Vb}U&wB|PhWepJ zeWhfy+mkPpUX96wRs0>wsyCLhr&N^Z(`3`VXN`uyHGdB0NSYlmH)3#}Qp33#3tG70 z448=Q>7bzBi+gsa6buYZx%9?(tF9s?ht~<*4*E;|5FR9p0s9}p;%RQgCKhpw@=m#V zetBwsPT6wy2H3Up!K}*TQ|`)(ab)jLRX7QV@TrvZ0iTiEO7a}I4A=5^pIf_RE~~Z$ z@-#bFV*8_XpNWrbXRfwyTXjlnq^v)qK17)1g}>9)q1-LQ&W1Cd3Agm8v}TIEdTPR1 ziY;DFAi=t?jo*;eekmHQ)ZiR|jJp3s6cqP41Neb0VV5t-TDJd{DRfeJL1?+q5hqZO z!YsqhEn%Tg_G*4T2V1i0`Jdrz#5Le8HTZUuu2tJ3NkbFaDt4tg*k7h143yuSC;X}l zuY*B;QRwBAEWK2x>?dvSLl0Yu4a+(>aWMW!DCn(-=D z3Nm=JJeQ~Z^c`AndUBq5!IH@?BEsok~uLc-o&2)7>QP`HRAj4t2bQW z-5x9-*iv;!SSB!JqHkoYwTR7^_(zmSUXlpCrw&p>RYdPf=yj1JmUvsHmAS_?_u*H& zx(~yaFIuF9oEjlhg8~dAC+7m3h2}U2+8f)!8**X(>C(JzS zfnpw!BKu?A*oT?TIQkpXK5J%M6JJ)R*AN%0s=)lsGv(#c;v+!vn77!0X95GSXGIY1 zZD62p!c$)d%ii*D(*=pCH(E*eH%drf{SWtaSIq}8eg_1>HM;bqS)Hqv<6e7@8E3KI+PZxa%^a(3 zjCH-2!;$Dk)ST$1_&)+bcf*?($@9#KAu7HILmduE1ar1NO(Bi?SokGSVzNghgF;g$ zka54D4U25xKKS4((A>Vu;=M<7V9_lO7+4oXe5n-C ziD6jCb##mFGSOU-uO^_c<)ao!V_Z`)1y*#3R z{?ubt5uOnj={H~U6KPg*)4RxU`v|~`dmXAY^;(kY*H6u;P^}=CKN6V~mq`pVNF}yN z6=O+A*xD}>(e0O_nT&1{*cn=LpQqd76$bk6uwn&R(>yhR72VJu6gaR|rF}C}BFfP7 zdU4>ORz)%+{cU%QxnO(!`JU51zNxMmh#4v5{pt63 zIWfH8pz5Itg5r;L->UCR$e)&wS#RFPv>!J9lzrYK z_tf));R;1tvJRo=x!ag$0~$Sb)wYy-s21`IM2CC?i`g;?9u2 zdoW21aGYpax;_X0oV~2arBVOD%*B$}?=x|KLL9ev3_~tBRXdVa4ZmM+J5NL~`pJ^v#rT5(|`Agz(eEF?4lr^iavS1VYqZc349tZO+NG#g8w8CqV^ zVA84hnFc2o*6Y ze0BP+;R>)9!b6Q-;G12q(23Ocq+_jj(TG&>vLu@rLHvwBm4_5LEzDOMG1%=_sm_$? ziEr+{o3%P5%;^JnA41Eary(`a!A84$Cki zEOpsAVr@~g?lPEe0QGwr+*JL3#~Wt0;wD1b=EA|iWyPx}2+G0382RJjB|B^?K0xqx z4mIF&0ZlptfQ|i+RE*g7kMdHS-vM)oi><0&jch!LyfxKl@%I!OriCOnBGj;L1 zO_n3)2ousHnCpiAJz$B1l{v~umr4Rc;E=0J^!!gN!uk-|fG5TqW}N{EsY0=NKRCIG z$2<0+4K0;BP5_#{#B9U;=)5qS z;!}G3j(G#T$j#?V9b8~q7oW7c(X7m;G^p^*5C4k>=>ie)20=GOwQy9;SodWbx3-}k zR>)euJ%!sBF9L?c84ErN1i=pxQ8I^kIQ3SxEgPtyNv`E4QFKy;Jv~_wi-$pTbmRL# z02JQWk#af0{NOTaitX5v%;vslWf+{%9mc^VQCS&%;80eNJ7S;6JT)vve~vnz&#P^| z5>*-JqZ@^OzP6vq%f`sZoX-aM$#{4`<3g0%@;(@o{J?#%%g|uLy9CM=&uCK(RK3Zy z?@N_djk#BsXGYWveh=}IB8i&3h_u@%Tf0n>$niN@gr}=JIx9~IkA;Zc2%=<{a=H1? zVx#*G2;8lBr=pDSImubsDL8&3U}oE@THJlA`tT{>kuNic4Y3XGDt{cl<2cPIYCq`y zV)PR%$3aP!EO8-!>r$?A7MGJucfgo?Fk~QqYu8fCKMD(WA>FR|_hMS?=mcv9NVizP zlQ+sNSuiZL+k>}yIYZs=qA6}gmRnL10LuEVDda`I5E--y3S|e443^rxW)fniXYNS| zk?HuCVd5pL=p>z*;6Z@vi&^8;v0z6YUqXxxHv>H9_3JP-PFb3`a7W(lWDCa-^lW+j zyq0U`o7!JQc5qWu8=Zl|wZfPl;ws&^*BzZd7-rMIW5o2QlvEBY07hl}N9Lt6R8HW| zH%oAb7Yx!HG~=XWQtNT6s~Uc)%fc;~0tW@W%@&US_GGl${0qyB=e1Ii?XmjijCU4_ z>)Uy9F^zND`n*j>Mh1=FpgTG`htV=ZqW+OCq(?ie2HNAZO!7T_vG++iLeyG!%IV8h z4m}Rbvw}JcA0}Kr*kz84rV0g;`lG?)p`v+r@^#m!L=Fvc0RbE!qdaFQ)#qkY>n4P? zt{5$zjTm@H@L*nT+1sGx_X%gZBHc3?=`V7YDh$M@l@PNgWbl_=DaPopu{`wKs!3!6 zJPi|Jxz%A!mI2Of4=ncT)x!LnKndWPB=Ui3B#x3L*(aXLQ3fb%jd2vTSCrsNy7G2b zw=)_R0Uo}vwS5pV^9_E}?h^4thQA9wwe_7iw^XXpSWlJSc~;Py{TE%sv;PCcTw9uNI>*_1yVH`PUR$tjZHY9%8gIz8%%I1my0U=YnnMvxJxL zo#D?)U@m)pFzM98l>K0VBauyquZs_+972;=QQn#l_P~3-y_@}y9%bJOVMg18DUxSSGkA?5y+2w*$NYoMEoxg!|`3ljO3cV05Gp$j`Z%l9~w`k6Pi?cw#|K|8#TBvBpdp~7xr9AHibk{F1YctkR^Q@>< zElH8*9vu}ROpGejBhd-6RY+NnyXc#5!)_2#1+tJ>8rGf@UJ$p^1;oVhNJJt`;gs?j z(G`uH>J}& z7|=_a7&bxr3W>gjYcJ3C+u#0-uO!Nc2dEAPCj>>Cgmms2_y{1YAG2>@363)+1HX+- zsX01K>Y&$sb6F>8AH(!$|6I~?bK9mo0=Q}MTQr!Y`+v+RpRpu$LKc(sVHj~L>w8D+`1@k*Cb_njq&5^@|Y-XjnBEbn~kL7s_KRCq@}q?2LG!-hOWk=px=)Gpha;!KHMoQ z(@1e_Z4LdCixyOr6AFRWS7Q79M8f~_nWds~C;RD;RAcNr41K@Em^QJ(V$5P?MZrM& zt%F^D{8|xdHAvusBF|aI!~m>ueoCY^+aPIE{anB4$K6o2Ur@#)fP@_TD#l*y_RyJ) zEbZTJ$O5#uU@nXc5wGv`pggU9w;uCDDP@G_DjXyReF>sraf;e#0T)L5Ncei?+#ElM z)H9l~!-mb0MpMhuvV1}1x4!r2P2%k~=9va}PjQ`Lu6JHP_HTnl(Ox=6I@8P)7#o!~ zkn53AIkZo;f18fcOmhAfE_HfJ9_(`ZzH`sm6ibkPyE#S<#dro!{&7?}m; zL>7gbcIzwiwU(%XDtu*m-2fOSZg_tW(UR-d?ed-_Nj^ML8TLjagkqq}d8Ti7qu59( zdPsy-+91skibzYZEaj|4=}(MJsHo`E0U|s;?Yy<*L2C?vS0ZK0OmCYyDHpbxJr*KH zzq70P)3%=KkdIB~oSPW@rp)W35@zEF?I^(aI1QyJ#m&lxS3|aj*JAzxl6!*qN~9;O z-ipU1)s`Ji^A~mg^F=I!0#<{*K61m9*aKGrMSp`?z-qWmy1d=;S!J%{J3(%|vulM$sdLx81dOuy2wc7+kg&JuI-9vYZKn1R-sF5w zcfWM{1?eQ|HjG5*_sae#2fINQwda}W!~;VCvZ{|z&XS<6%sGTC5cZXTNKAt=oLNvg zqm%q9Z?`{8sKt_R95Z{b+H>qgu$S{*cIoo;8S0$jg{Nw%Q8dk+;Z0&M$^^T_J*!=R z1ft|sec#;ElT{bZlZ>Uw)qCE%iI%kV4NDBK#}R=)0)BC`#^jva2qZ)sPpoPMLLL1W zC$$1%#RU}~0c}cLV>7+e64>YAGH9eS=VaWH#IHh$av%|Xv{fU}N@a0hIyi)wSYF5X zT*lrr!^Yx)v_~qfc5;38-H($MQod9W;2!bstyv2e2(rTdQ=5UW!om7O55i5;; zMQ*BTyP9TuIcu$5a5LBZc6 zQ8!$7)q@->-KiFTPYgYC&W}Ux*;OW=C4PljRY@_5=z45lZ|b#@;EM^ovbhGLG?(RU zqa(}o{7)_CiAK{cZi18Ry48X-qy?sgqPa4l4t==vnEQ~IGiGoOzvV&x{&$*~mf!ev zMO;jcMHQYqTASM@Mz4rV>Nfr0BwX1^Qc&(O4PJdh@p9Kz^#=rV8}l0D)~W+C}B*p5+){bY8bsaxn%w8;?8zxxWkzYvjqpDoN+ z9;TyWd4^M?WwgrulSjf>dN9~=Ug>~uZoYBK!0cD!K15k91EAP&Cm|z0GVB@E_>;UK zV!zA1cql(G>uvEVA8I$wWzP9eCkFCn)5i1qzGamta@$JD4BwPSwR`Ls;oSoX3VpY# z3iX?-?rmH5EgM{^b}?gJ59wxlDVSu$ZVRSm40cY)U;$daF`};)w}nztX?&QB`0-RR zm-7@fa_87S*#m8!tIpO7X^t2#I1@*;q0GxxTv#d!YxLCI;);1&nwV@1{dPF#O%2Zw z^D=d~mAPWDDAmC%!Wgie7qoJ?CAl>5`XMFZCaa%yKDG@{mhJ3fFEJGKjd14VR^L0r zl#NCS zSE{c_Zr9Y0G8u(9T1%2>Ia$%x?rlylvspM^dj;RTD{zoO z`w7Rqw7Dx2T`*qKJWyUsVsm5uOsYk1pz>W6cex#ixKVAI88r6$Tv7RsnAX9-Z$bcX z6`D`vRG63WEV_s34Rwxjfpqd$9TG%WI>nrZr|dU=UdH@vXY*QPQe6wKy~={pHx89K z*F%(sYMj3Tn3fMjMvX1n1Yyq$pd=Qgj{rWQ)%CJ6^1Ci&t&MLs19qGOGRBy7p&}V4 z_dR;|=FkOip@jF~lN0Ff-`jmg>C59rU%Y+p*}pf59rf>tB-5^-*FT{zTKc_IOg4>c z0c!MiNw4(q{*KbW8EkE)jhoDNt3U=hLonw$K%Pvpd3$4??F|D}b&Y)tLu!GF;qsS5 zj{roa$8AipOlVNhp8p01VS4w=b7i4^6(ho8wc~s-*)L%?!u?*XWgk+iAtT~9&IyTr zM{3~o*Uj?gzV+p>C9%YTN}c1ee$VSfE#Gc~T%Ki*gjz?w!0A*w z*i>by2sC}_EzA^8AqXh65l%c!i%P_;QL_p7-p|AaG@_4Y6e2+~kH1n#p$1R_v%t&D zmS%NH<>iTv{59#j-%OCU_+EkG=t(Q@!kf~79j&CbGvN{{jak=BzaZKU%*}k#ly|%H zdh^&sb~vC`A7p9^@Af+)A9+|i2T;+@BBt{oM~Y+M7<*ul_TxayFGbsaX;a6`vxBQ zXG&Bq)=1QWZyX`GDjUUlSnZBQG*(DA5dNn-{1ZKKK^OVuEG4zlAy5aU%XpjZ=Fxg` zShzwHr2hO)ciL3?u&8RUPEO1`zDk2B7IMR-rMLm9CXB5pfGE8uHtJmsLy?7|>&glh5xW&2(P8>C+eG`F?~ktIm!wU zcO{C}GakviDG1KdjG%(p&_qNaAT48Ebg^o2a@2D);CUHH|{}(Cm&;tnJ{aznW8|0zIu_-sWw?p|p-{s1{dp(CqHfK#su++-F6`iiyL?!Ey2Aar>?9)#mIWLW zzP`CcB4>kueffkcFr0iwpHwFfTy{S<`LPagFB*wN1{Pt;=vM_ADpF1?(s6me$(4vy zGW_Eeti2)zL`U5`s6wE(wxWe5_|B1R!I@d9YRb$gXCL zBM44;dAOTx%L!J8&JS&Z7B$+uhht7_`Cj)2$Fu2qYUMQpdG0Q<)C9*zfFSezR~aoW z4>bY0BoSgQPL!$78E(K(PVW%+Y1_QMz9IS%a7nnUdy6%P$pJpb9qJ67>B~ TsU((n>HZym=lx#M)Ip=fE&566oyBWX>00<8sgpUUT;e)_n5CP$1Lc#|R2+4^_h#pgs zQ&UrsQ&Q4Go-)$XLFp+enYfvt&)7IPIcOMp_<7j*pR#kX{|CVVgTaIZgiiW_sTp5;Nk#r zf%te2fOt6g_c1uQKmZ;oJ~N0+;E96Hdp9tPU@$pU=y_5>?a%>*?k`pg*b*g`qI+`P zeL4*e0QkSz03aSN4*tE1gA{;!ulrj65Bpzr99&W$GnoM16BfaHasgCGH+bmqZW=%Y z#JTSmND7bxTzp0otmi(>ykei~Y{)KdQIK&JlTEE#Mgq+qszqp<8Dh4kVH!_KQMPU6 zFv;LtN0<2U`fDB%r*e}!Kuv-s;cV~bXp{9^B4~9_l%aj>gm19H%;n9naGb@*hcgH+ z(TwRRfU2gpJNCF2_?Xyh0dfLPUu_eN^F+|a(~roi?4)<5GQSw5y|gh}L_&r=APN)V z!sEHV(cN_e`*|lg@)|8%8GoSQpS}i^O+^QB+5ToMuG&7w75}((hEICm{J{yrbS<&E zWS@D%82oLTdu}@z^L|Sc%hdlO;))A%o6J9{+JIj{xKvlTa>SHI-f6{;J^x+BY@HOj zzOL;J1VcX7Ym4iJxWKXXhyY3y(gvb@rGQ#?<;;7_Mf-;bO3%p4j?OS*!pYtpZt&y7 zaky;OvnfWCwn{G;l6?1;V}6@%a|eh#D2SI~m^;aNCr%WEyaQlScYs8W9QWvxrVW$r zZ8KWtI{+LkXxUH2Cfi(Uvw<=0VZ`162FF6KGS!`SOkP{@_y&BR;ioHb&l{i^MWSeh z(9<`OUujk+6Hs~Ba`ha|-YwY3+*Z2Fa)CDE=&(XSAxKZAy7JEmmt@=>;L=Fq!ffH+ z1Oe|9o8GB%^)$0B5tVxE=g`l}8*g~j!%ujGGUg}yX^Cs%t*@2r^>l}mH63JL7&N%L zO6g?#k0uOP=8wa5Lrvxt%3dUd-K?Vux=2!;WnbD}pIu7*`&A|MH!IG)CJSTVrzAcsg-Im#p4}-lBewWgJyzZARuwyr^qX%$Q~D zO)8WJ^&%wpWVrHwMIL^Sq1(~+B==I$((vEJg50xS(lJVM6Sy;Jz=q6buep>w9!NU< z9glqqPc2OOQX_cIP}o2()uZ>XY1eDqE4`lDkZFQ&wy*Ethc(lxxnFSf-#W~B@?PGf-&B*iy-wlU|GkN+|^F*me;6Z8f04rvnI|2IJHzzZS+h0}2 zE;rS;%g^6k0@2Q7qJ$(_U}<5acdM_})QoXv99l^wuIlE4cILxaLzBtj+rigJ&gWU>!Fv+|Hm#rajq?)$1@_Gt)jEwCOu_ zOgF5w_s@SSzaUP0!>r7}^mz_i80Y!W=;GYH3XQ5sN{#;h>yAGSteuJRht?1;P5eZ~V;8Rg4x9rI4<^k%MxKM5}r= zOLJRONFDyob->E9|8|T-Yz%7$Q8a)nJKWSmB-6qG&D`H}m_+w_xIcr6@~>5WV8UqG z?TA5;`8r&5WXWtwV$rQnSlK^e;q;I~sm%DH>Ot&Vs^VvAN13aq`Cg)e+nFndLw%qzGCu3i}#^ZE{23RIMnY$XzbYX2S%ntmG zwM;gR$XRb&)i&B1%?2QW*y}CXuTI{+WhOHw1-ZUjtah}k$^LRVT=|n;m)bE;T?r(p z_v!8cVl_Ue4>}#J3y7K8BkB5fs*npd1mZLOk=u*-WXUMX?v8KUrzlq3%uR4nk|QtfAQ58JaIDYb2sY! zVhJf-c{l1Z(b_290?6#l1Vb>FheBbkm z=(1wKNzsL<070Z{^(>7X18s_;BCFhCN&U2$tlf4UqC0N44m)&W@gs`x#zyVhUxeL3 zjsTtDOQYYCtOf90i4FSl6zKj)wZrBlU&4FB-}*Hl#K4X#etCWEil0L8cI%FLv-D7I$@k(e5}b)D~c ztX+R`-rp+=5 zK9->3u^B1$t7rg4J)!f>1f$YbtMWV13#1Ex z6Pi*tt-obp39$G&u8WcMWzXYalONQ7dQ3|v@PwL zwpAG$uG$+1<=SrJ@UU6id20l9i|p3rkkUjavO%vqiuf@4tL5pHOBfrrG%+Bftkw1o zpzG)V=+cmFM2cZZ(2+N7$36QF5Njabbws8D&F_C}#!RabLC3M3V2nxoEtRC+)zG`X zOSV(|D8QLO?y<<8&b!|pU*8~X&b~2~`0mXd)BxcYDMeqeDv2G&8Xm6Yy$DH9jV1|D z-K_mZk?>4R<6F0bZNZ9qr&AWld`g1OS=JLACgS5UVQ5YO(J~f?OSx3V*5b!mF9G2= zt={|5^Wr6hLTRt88eGmpqM*%9`t^@6${No8wM!;7=Jj)|wDIP;zkU0XR_5Lsd{ecr z15O=DKwUOG14wozjb~ij+lGSsJ)wWNEPpPNyebncEm!$4Kc#?bdl6t)UPQ(kX>Arc z`v`G3+}5PM3`V3Wr+B?;9bcI?dNT07TAkGvvf3oj`~28(W3ABvNQK zje=E&W@OME#k#7=`%Ux0*)p{kt%@coi4D4Q01Df3RZPJZv#uju+Mdj1w!Uq|7!Ui? z*Zf;z)grcA9y>#Ih)tu16HmIA>W&SypB1bwGwLFx^8tFx9 zQ6EHbASczDI_i|I3sZfpUNkbj+KA|WcWnPVdIqdmGZsdv_r%>DY+&ou~3+X zvu|N=+&bRPo6<>B@PgJ(Chwgwx=S7TInV{c*F09cRIzKKG*mdk*MO)VqsF!cUM6aJ z$@Tlrb)oG%FX&WZM$t%j3Xl}#n?nN44(9V z-z1<8@^>i0pXJk4ArGVK&dMp6$vhE%PK0F`+_*suJxi{CVDinNTxs$j+V{0r-D83S zI>T230&FrDRW;O-(^E5VO6k$Lhj#$)PwNg(bk7knpWKkjc0{w;<^K)t_vor8@k*y$ z@^mh$;HfH(1B#z~;(-=sEZhKaM@QH7NSlHkEqeHV2`|d!dMev+eD-wQ9UPysG}BVq z)hFe)Nz>HJX|w0v9?8lZMBsh-rqNlH;PlMWvd@Tey0DLg6;Uk^GF~`q(ww^F;XDXA zqdqw0!s5R94Vw1enQ5qw6CpG_^i>#c(_; zR47bUnHMy43j&A3u40p((n9vPwXV9 zCCgC!`>1!A(gSxjR8CAFd92;}QYR<7;u_je!1JJ{iacG8FhPiboPwbU}G>{MGt9DrIMYeqA+{ToL@x& zrFxBAWjd&5C|_)|aN~ixr(lKi zE(d%tv(fQ2%d68>v_(mOlPlY@e@ErUI^A&dMZ<82q&cJ4{{dtEUghNGaO%oZ>Sary z*0GDIVmg6`hiI{k5Zv{FaEYZMS*+>JG<(ZdgOU6mUp>XV+uV3_%ubJ&=Gaf-&q1)WYQNSEV-0epg{@NzwQlne~nzAaNH)VFM`uD?IQ>*h8R5AbkPZ6Q| z(2;u416)uMB_2L*^C3@r>{A7EZa$rIUh!-NmjqPzfE=6QP=O zdVw!;mo@=OnBixynb6+3Art7-bIwN$>x^3t!j&i%3G#fX_&^ke->fmsT)NH(xd_?} zhHdF8{dr;8TH%9;l&e(Y9@!GrMb~=SL7J^G7yIARlh|H`S(xy6J~DYV%n~p9I6N+} zdVT@S$Qv>`{?K%SSL98MM7Q~xHY8%tf2%m75$09xjXAz%V0HVLJ6W0gA}w8+t%|(4 z2$f@~3AEp5Y2H*{k|#1fA=h!AQ?mUR!^RmL{dVT2LB~|wbB1_PiO*j85xF)P^nTHH zH(ZjIJsDBiT{yk7MJ770lAVfYJ=ZDnAkP?8s8Q}jc#FhA5SVsx)FnIoZh&W1( jJs;QzadpU@_4zM#7ZseZA&`A<5D^p1r;L| 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 T5qI5JL7`By@(f1Zw;%oodcg}3 literal 0 HcmV?d00001 diff --git a/components/Avatar.js b/components/Avatar.js index d857a5c..9fdaa52 100644 --- a/components/Avatar.js +++ b/components/Avatar.js @@ -2,7 +2,7 @@ import Image from "next/image"; const Avatar = (props) => { return <> - {'Avatar + {'Avatar } diff --git a/components/PlayerStats.js b/components/PlayerStats.js index da563c3..28dfe05 100644 --- a/components/PlayerStats.js +++ b/components/PlayerStats.js @@ -1,7 +1,6 @@ import ReactCountryFlag from "react-country-flag"; const PlayerStats = (props) => { - return

{props.pp}pp

#{props.globalPos}

diff --git a/components/ScoreStats.js b/components/ScoreStats.js index 1e35654..bd06e4e 100644 --- a/components/ScoreStats.js +++ b/components/ScoreStats.js @@ -6,8 +6,14 @@ export default class ScoreStats extends Component { super(params); } - getAverage(values) { - return values.reduce((p, c) => p + c, 0) / values.length; + /** + * Returns the average of the provided numbers list + * + * @param {List} hitValues + * @returns The average value + */ + getAverage(hitValues) { + return hitValues.reduce((p, c) => p + c, 0) / hitValues.length; } render() { diff --git a/next.config.js b/next.config.js index f06dad5..344d4be 100644 --- a/next.config.js +++ b/next.config.js @@ -4,8 +4,7 @@ module.exports = { domains: [ 'cdn.scoresaber.com', 'bs-overlay.fascinated.cc', - 'localhost:3000', - '' + 'localhost:3000' ], } } diff --git a/pages/api/beatsaver/map.js b/pages/api/beatsaver/map.js index fd9ed57..c207926 100644 --- a/pages/api/beatsaver/map.js +++ b/pages/api/beatsaver/map.js @@ -4,12 +4,13 @@ export default async function handler(req, res) { const mapHash = req.query.hash; const mapData = await Utils.getMapData(mapHash.replace("custom_level_", "")); - if (mapData === undefined) { + if (mapData === undefined) { // Check if a map hash was provided return res.json({ error: true, message: "Unknown map" }) } - const data = { + const data = { // The maps data from the provided map hash bsr: mapData.id, - songArt: "http://" + req.headers.host + "/api/beatsaver/art/" + mapHash + "?ext=" + mapData.versions[0].coverURL.split("/")[3].split(".")[1] + songArt: "http://" + req.headers.host + "/api/beatsaver/art/" + mapHash + "?ext=" + mapData.versions[0].coverURL + .split("/")[3].split(".")[1] }; - res.json({ error: false, data: data }) + res.json({ error: false, data: data }); } diff --git a/styles/globals.css b/styles/globals.css index 0dec4c2..58bf0bc 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -175,5 +175,4 @@ .song-time-text { margin-top: 8px; font-size: large; -} - +} \ No newline at end of file diff --git a/utils/utils.js b/utils/utils.js index 0ecb9ec..ff004d0 100644 --- a/utils/utils.js +++ b/utils/utils.js @@ -3,6 +3,13 @@ import Config from '../config.json'; module.exports = { BEATSAVER_MAP_API: Config.proxy_url + "/https://api.beatsaver.com/maps/hash/%s", // todo: cache map data for 12 hrs + + /** + * Gets a specified maps data from BeatSaver + * + * @param {string} hash + * @returns The map data + */ async getMapData(hash) { const data = await fetch(this.BEATSAVER_MAP_API.replace("%s", hash), { headers: {