From ec0c4a401260eba50eb2684dc69fb0e4107fa24b Mon Sep 17 00:00:00 2001 From: Sendou Date: Tue, 21 Jan 2020 23:26:21 +0200 Subject: [PATCH] build cards including ap view --- frontend-react/src/assets/abilityIcons/AD.png | Bin 0 -> 5463 bytes .../src/assets/abilityIcons/BDU.png | Bin 0 -> 4028 bytes .../src/assets/abilityIcons/BRU.png | Bin 0 -> 3559 bytes frontend-react/src/assets/abilityIcons/CB.png | Bin 0 -> 4001 bytes frontend-react/src/assets/abilityIcons/DR.png | Bin 0 -> 4673 bytes .../src/assets/abilityIcons/EMPTY.png | Bin 0 -> 289 bytes frontend-react/src/assets/abilityIcons/H.png | Bin 0 -> 6346 bytes .../src/assets/abilityIcons/ISM.png | Bin 0 -> 3587 bytes .../src/assets/abilityIcons/ISS.png | Bin 0 -> 3822 bytes .../src/assets/abilityIcons/LDE.png | Bin 0 -> 5879 bytes .../src/assets/abilityIcons/MPU.png | Bin 0 -> 4785 bytes frontend-react/src/assets/abilityIcons/NS.png | Bin 0 -> 5976 bytes frontend-react/src/assets/abilityIcons/OG.png | Bin 0 -> 3820 bytes frontend-react/src/assets/abilityIcons/OS.png | Bin 0 -> 5725 bytes frontend-react/src/assets/abilityIcons/QR.png | Bin 0 -> 5847 bytes .../src/assets/abilityIcons/QSJ.png | Bin 0 -> 5069 bytes .../src/assets/abilityIcons/REC.png | Bin 0 -> 2969 bytes .../src/assets/abilityIcons/RES.png | Bin 0 -> 4670 bytes frontend-react/src/assets/abilityIcons/RP.png | Bin 0 -> 3122 bytes .../src/assets/abilityIcons/RSU.png | Bin 0 -> 5501 bytes .../src/assets/abilityIcons/SCU.png | Bin 0 -> 4699 bytes frontend-react/src/assets/abilityIcons/SJ.png | Bin 0 -> 4540 bytes .../src/assets/abilityIcons/SPU.png | Bin 0 -> 4269 bytes frontend-react/src/assets/abilityIcons/SS.png | Bin 0 -> 5836 bytes .../src/assets/abilityIcons/SSU.png | Bin 0 -> 3494 bytes frontend-react/src/assets/abilityIcons/T.png | Bin 0 -> 5047 bytes frontend-react/src/assets/abilityIcons/TI.png | Bin 0 -> 4984 bytes .../src/assets/abilityIcons/UNKNOWN.png | Bin 0 -> 2215 bytes frontend-react/src/assets/imageImports.ts | 62 +++++++++ frontend-react/src/assets/top500.png | Bin 0 -> 9971 bytes .../src/components/builds/AbilityIcon.tsx | 58 +++++++++ .../src/components/builds/BuildCard.tsx | 103 ++++++++++++++- .../src/components/builds/GearImage.tsx | 26 ++++ .../src/components/builds/ViewAP.tsx | 122 ++++++++++++++++++ .../src/components/builds/ViewGear.tsx | 56 ++++++++ .../src/components/common/Loading.tsx | 8 +- .../src/components/common/WeaponImage.tsx | 6 +- frontend-react/src/components/root/App.tsx | 8 +- .../src/components/root/ColorPicker.tsx | 11 +- frontend-react/src/components/root/Routes.tsx | 3 +- .../src/components/root/SideNav.tsx | 17 +-- .../src/components/ui/DividingBox.tsx | 9 +- .../src/components/user/AvatarWithInfo.tsx | 80 ++++++------ .../src/components/user/BuildTab.tsx | 30 +++++ .../src/components/user/UserPage.tsx | 10 +- .../src/components/user/WeaponPool.tsx | 8 +- .../src/hooks/{useTheme.tsx => useTheme.ts} | 8 ++ frontend-react/src/index.tsx | 1 - frontend-react/src/react-app-env.d.ts | 5 + frontend-react/src/types.ts | 7 + index.js | 3 +- package.json | 1 + 52 files changed, 563 insertions(+), 79 deletions(-) create mode 100644 frontend-react/src/assets/abilityIcons/AD.png create mode 100644 frontend-react/src/assets/abilityIcons/BDU.png create mode 100644 frontend-react/src/assets/abilityIcons/BRU.png create mode 100644 frontend-react/src/assets/abilityIcons/CB.png create mode 100644 frontend-react/src/assets/abilityIcons/DR.png create mode 100644 frontend-react/src/assets/abilityIcons/EMPTY.png create mode 100644 frontend-react/src/assets/abilityIcons/H.png create mode 100644 frontend-react/src/assets/abilityIcons/ISM.png create mode 100644 frontend-react/src/assets/abilityIcons/ISS.png create mode 100644 frontend-react/src/assets/abilityIcons/LDE.png create mode 100644 frontend-react/src/assets/abilityIcons/MPU.png create mode 100644 frontend-react/src/assets/abilityIcons/NS.png create mode 100644 frontend-react/src/assets/abilityIcons/OG.png create mode 100644 frontend-react/src/assets/abilityIcons/OS.png create mode 100644 frontend-react/src/assets/abilityIcons/QR.png create mode 100644 frontend-react/src/assets/abilityIcons/QSJ.png create mode 100644 frontend-react/src/assets/abilityIcons/REC.png create mode 100644 frontend-react/src/assets/abilityIcons/RES.png create mode 100644 frontend-react/src/assets/abilityIcons/RP.png create mode 100644 frontend-react/src/assets/abilityIcons/RSU.png create mode 100644 frontend-react/src/assets/abilityIcons/SCU.png create mode 100644 frontend-react/src/assets/abilityIcons/SJ.png create mode 100644 frontend-react/src/assets/abilityIcons/SPU.png create mode 100644 frontend-react/src/assets/abilityIcons/SS.png create mode 100644 frontend-react/src/assets/abilityIcons/SSU.png create mode 100644 frontend-react/src/assets/abilityIcons/T.png create mode 100644 frontend-react/src/assets/abilityIcons/TI.png create mode 100644 frontend-react/src/assets/abilityIcons/UNKNOWN.png create mode 100644 frontend-react/src/assets/top500.png create mode 100644 frontend-react/src/components/builds/AbilityIcon.tsx create mode 100644 frontend-react/src/components/builds/GearImage.tsx create mode 100644 frontend-react/src/components/builds/ViewAP.tsx create mode 100644 frontend-react/src/components/builds/ViewGear.tsx create mode 100644 frontend-react/src/components/user/BuildTab.tsx rename frontend-react/src/hooks/{useTheme.tsx => useTheme.ts} (82%) diff --git a/frontend-react/src/assets/abilityIcons/AD.png b/frontend-react/src/assets/abilityIcons/AD.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ac352bd995fb83947811c29ef2460bfe315db0 GIT binary patch literal 5463 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/H.png b/frontend-react/src/assets/abilityIcons/H.png new file mode 100644 index 0000000000000000000000000000000000000000..90f757d4e4d5c46c9ee3044715357dac7d49fa6b GIT binary patch literal 6346 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 JPDHLkV1ig_{P+L> literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/ISS.png b/frontend-react/src/assets/abilityIcons/ISS.png new file mode 100644 index 0000000000000000000000000000000000000000..7d575a133cd59c27d84cb753d7841e58cdd8bd51 GIT binary patch literal 3822 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/LDE.png b/frontend-react/src/assets/abilityIcons/LDE.png new file mode 100644 index 0000000000000000000000000000000000000000..4695b56b3add95135edb50f2579cecec4038e686 GIT binary patch literal 5879 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 F{{zgxO0WO` literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/OG.png b/frontend-react/src/assets/abilityIcons/OG.png new file mode 100644 index 0000000000000000000000000000000000000000..6a47d6806068adb5a4e0817d9e2ce11874746dc2 GIT binary patch literal 3820 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 i$j<}EgP8Nf>Hi0S)LhZ`eQ;R-0000% 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 P00000NkvXXu0mjf%*_IS literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/QR.png b/frontend-react/src/assets/abilityIcons/QR.png new file mode 100644 index 0000000000000000000000000000000000000000..1777171f625f13872dd6f76eedb250cac58081d2 GIT binary patch literal 5847 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/QSJ.png b/frontend-react/src/assets/abilityIcons/QSJ.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcbaa32c4c3ea91e21588b3be6ac89f6f62544f GIT binary patch literal 5069 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/REC.png b/frontend-react/src/assets/abilityIcons/REC.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c4399ae39cb05e2c69a86bda01f90e41a375c6 GIT binary patch literal 2969 zcmV;K3ug3*P)l zgg+ocsABv>0wki*5=~1RA`dkwA{2=hTkT`%gDy+={g~OAx%c?TId>j+cjwNukP)-r z%H zK&=I+HRcGYwE(roCyIcXa+3?qSw0a2R5Hl(CBZr$VJ;L>%Jcc2KuuT(i0W%8zyWfA z6hc(hH&m$sGYDf=(G2}w#cJz&#sDI}eweMtUgD)C?eqW_0d*)+W_l+O6>EUkv6M35 zyA|`DhkWN*eVow!qyd+J87umpff~I1{6pM#(?+%f?0tftZn~8RPxi@!Kp!vyq&;#g z)r6`|0N~EsZ~FROTW|UXz*x4?vMkHA?Qqz#Of!?IpEL{uAq47}j6L_F>OIR}fnNQ5+Uuhd5&{YE31b47 zhFIR*ocJt2lc+<82tq^=!p1QZ2w`9tiU3HGOeO{JZ{Q7--R4kQ5Tvpe5dHn5JiPgH z-0Hu%atUp(?&7|yZ{_~pvw$MOL2F$lBn0^Y&(6ar#}h68cv*A<7Xyt&ec7l%=KVtv zEFnZq76Mlu=WN!o&$P0>VNF3q%NnrCt>l0uv!3rM(*A{LdvzmVCRnxA$Ew z@Gy`QAnFq|{PqDJ-_XMr!jy+w_}Mqe@HMyb$f4uB?2(|Iu9kf|3FS<{LM<`VUXjv8 z2n!+n4!=62)9GTf2m@xx;6Yh)g{>_~!`{cZb5$1`Q07pNGBX2aHivQq7(jfc8$yJT zGCR|)s*p~n*BAzEsHHU8+Dc=|-~loL%}2t*R+@YyG@<;>j3ksJKmZ|QDj}_mX?hI- z2nS&ZgyH7bGARv^0z(=Y2<6oTNZ}xb1BR;_WBCs_juUrXnv+rHC8Kojxr1jnEN2Vj z;5C^o-~0q*K7cl8I`|k5u3gGzDdjRLWxbR#Dy5A3NeEg6s*5Wx0I&Rr?LA#wLza>m z7L{s1nnK8>ao|zz?djsW`WUN#dHQmRCX`zRB#>!ZdgIT5o~NGL-m`Dt>y5j2zZOPK zV@5yclpC07nx^Zzu3;EPC=?1GJox9fOD|nF2At9T6b4`1n^4W2QksO&63w=%8JYmI z^zz<&_|DBwGWFuyOaX)XiM;D9M}VURd`qAA=;IN6eOw=1-+LumH2#oucI%#1Fs)}{vk5` zBc%FU#E)&@@wy3}M@*7M%@kb_v5dEkn zH3dux!2l{I7}sx<=ukNVTwoG4bHm}Vl?{h2M-ROJiW{*zSFto^5g+Vh@NX~jdfy3# zfV2AjNqzK8r5RXenx>-%e-ii)@Sc`qO!wW4isZs;I#@%N%gQ+-Z#3~#^B=%Fz$p~@ zQ~G-;eJnBApk&Asb~qfivbJsI?%vPl##MBj)(%kw>1V~EP2ML9! zu#$8*0+`vfbT@r3{TbO#%WKErg=6Yw+=6di3M=#?bLD0>bZ_ADH}>$CV}Iv}fK=;Z zTCTZSUJVmn&Uh|`vhNVeX9x~WTF?^A5T{4hw$l})0iHFt z&VzUeb23K+WkUJ&qFhQ`F#%Gz0xM^Y_-1xmS)E^;@=bp*WLm4eC$ zu$p4QCQuv~bk-B;9U+F&u!`!PmDdDa7)n7l3SU_aFCK+d4%!m1u@lmIrizWu1g>4I z7!j61$PkDerVzr>-<~b53jg=tO2s9 zKdk}Y><6kpR6sy1X4e6uVPvj4+1FxOv@mn;IdydjJ0YN7CtZBWjq%5r(z0o&`WK0Y#_- zqaj3OFq8KM7L?x~C`W(+#GZcY`#%979-qI066olV7e4m zBmwk?cJJP|99Z7j+4;{iXU+`k!4FW-0P}n_0ANv!hQUnU35F|hsp%U^>A&# zZb{LeO@UF7A{WpR!hRbP6oR1(A|Rg2VM+;AZn{Mk%p`Kqcf= zpxq{d@-$v%X)wKNl}Dfta9xa#ivTHQ5;gde zh?hbbfO~kH)cuEfGj7t9l}3}4GXKq>&CZjP?hq<|3{ycI8B`M-Po+|4Q6;89py?y{ zi;Mx}q?9?}gb?B+YI8I{*9S&9dSH}a0V@rImBm^tRXRN@Bz%af3iTB(&5m*ea-pSWeE%184^O|w1D3J z%mtw+B9pp#A+SXKZ)g%FbU!fQ`HTv_Edhi|KfQm6lwAU$vZ}B{1zFWc2(KJpWdv}3 z2=wUH{_pOShEK#lML$l=5m0LZYK=JpYArymF-JhH1*kRV2&lCHwZ?w|tlZ;&nM%ui P00000NkvXXu0mjfwJ~jq literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/RES.png b/frontend-react/src/assets/abilityIcons/RES.png new file mode 100644 index 0000000000000000000000000000000000000000..be3ea47380dfa5a9176a43e7b14adbc4807c7108 GIT binary patch literal 4670 zcmV-E62a|>P);YVC`T~H9J%Ec%UjT5i2XL|Ja}NL|B_$||^10>Dy#|MZx;K1%< zXKNZAby0OJfLAZ*TJveO;C(bcxoiHg^f68N(R8$8+q&EK_H%3B|3@3;rB%FF zVW$JB1s)_21|allf%vQdU;>ghyu4!ds7r=?6@aqc@WsX8?L=%z`vj8Cw3FpZ2kxly}}eQmz-o zm@l1oEV=3AJh6bE?foGeQd3iBnoOpFQLjz$efC7XE`hiK8-NhN?BPtFp39v6X$;Ly zA?a8X_NGp32O23aYvP1fzZpmbRPA>mK%8&AKL4lp4&HX-+ywxkDPP67@$vHyEG3s| zcivZ6xpc_0k36+u?ITZbSgXCMK-!0Z-d9gc;*;0_1CV$_9%EKt$>Z5M%mKhCU*0q_ zT+3C~#EI31SZB*DuHL@=@8y7#h|%(+fe|-2=kC3ys-im#O_+h9d}p`9Gk*i*Od|t$ z_^F%jzW%oTGjF@?w%=A&Rr!IlKvy&f(7l1|bqNR|tQsdh_Z4y1`s+B5ovjJ409u>E z0Ky0uu@(;IvgfYl=`AaZH`dnf+_8TB)6W+d7hElb7%YUy(b8NYL@t2QXiPC0ja}cn zaeOXD3j~5dBI>RGfqMOeC>BtRpoFyk<~#>ElK@wEoW;e(V>kb0?JrCw(^P}OFbWtf zgh&=bn1v8w;p3N}Qc_aFs#U9c1OVXqtNG4%Ci0Xp5mFQkC>j773xiCRXh;)NVDVPS z89;q~W8?DW4?UEVlamfmQBhr8TDoILQc{uyz+^IIBqt~5*KPUUI)+~XW~*$&n1Rx8 z6yv5Jp>)>6m%j_s9|EHVR4*L*Ewt`}*4+RE4Djb&Y+ARAO*>C1TZ9lU4XFSSh+h)D z0iXyWk{6BR%YU51n+Ao1u!-pl0039q2-BaC`CZFlPyvjX3F#v!E#0xhU~u*?EF3qY zfB!VA$K&%`-uXci*%M&u;xGU@8Mplk!;GJUHCqC(<36Z;Hm18kRR8z?7r%RY3!8v{ z03CokemV5C1QftDG=TZ2f%4&GarA{W zlgVUEO|>R*^Ezm+f_Hxg0ar{@>en8V!UMFOfRF#wW7m)0!4LBXa|MtOqyuK+c8GHT z(ASF)!XSi5_~kT~SS{oU17U;L6A2-gsZcbV&;gv;0~Raf6hO`lc;~0!^g=}=c zUAq%Dtpwiy%>Go&*Svz+(~9|Ti!rvI#AryA?Dr80g(UC4pOD2%C<-<~r6Vu`6M+#xD!pldMn)j&r7`9@NE-(G9|d2he3m*C3N-BBUlsx3z|ST3kt&-|fq_6jq@&g+005E} zUcz;K?x`nA8xqMU_LFJLM-gEG##}GUwznhCitdf%-(LoQ%$Kv@M{0K>e)$HzxW|10 zKn0rfk|~Zh_VnS55x+rT0tOcnb_D$*;uE%?g`f(U5m{4FRZ!3FlYW3|fP^fR!B-)V z3L2|Xi3y&fPjU8ephtpJqFf=}G#n+NgF`88c9>Zt%uYuteJ4toSZ0a$$V+{H`p zxOVBHkB9H_1Y>{jiD~lfvE_#SGBqYb+R$_B3pKWE8F+4;9_U~t!9}Zab-1tr$ANvo z5ug$2hR5h}JOBoO;(~F-i*KI0c*>NKSAOMnYEQPGvyS>ksX0;uqN#kNOf$#DKKFIV z)SU9Ex&rVAAx`+cNa1UMHu?a70;C_WuWkzrP_p;N#LkO09DimMePU`)t>U_cv+vDbsG zDnJcENQE`;;yQUoX;Ku$rYOojMNy6+Plv5YBO)O7P}HprSo`9Zy_L3xT7bE8uS`5{ zd(S%I_9ektZ&_Vm`3rnd*WIsTNeEENHo>}UVcUbS@Aop*DRWHh4;(czjn@EYZSS3F z^vqV=z!~5ua1yWq4y5oQIj&es9)BDb0Ks6e=JHt&ys`JaM{gLKKX4epk|noTmn^x3 z#~ypd{jER$&Bx}tjD-{7`^%0s15dm>W5zcR?b~~BUw)yjy9pAcjcg)3v z#WjjY9(*F3f+Xh!ytZGskb>7CExuEK-&=^hrvd38=q=cRw!GA$ zIoD=9Jlk%It?X`AsNHI!WyCgLV{@arykvQY{%-X3-wLjJ<3szh&E=^#PE?X^zf>5< zXZ1aD+Y<#tu=!|=26Q54UxnBZSa)EY13*+I-6gXlgPBf1yD;@{La+4a&$~W!1^PCkU+OOsnV*%sDDfpLs1kp8i>BCq({$;&$w!m5a3q3S1pSH z#--1&%pJ1ATU!5c%sWHF6`~XX+GS%E$IYXHVDzHz2&^z72`|mA3h1N`o%Yo+&*gU-1@z_Q8h<%Wy<|5 zxZ{2-U;l5mZ{NeCyY_MCD?8bE({t1{UxzO+0Bh9ddg*0%F=FiV;qqS&5IkJPv0=$Y z+>ra|cgLm9D$3A8h&KTnY^zpnu&sI*L=|#roC88M07k%&YVL3S>X5r{9cH~`yeHVj z3Hz?S?>E1C7@*DHknRi$ObQq@!PU5x9342Em%C#8rn*(OgJtDSS2gF-9ksg}xn=q^ zrca*+z_G1O9D8hXw{<@%dyIiY-o$Ecrr8B6HsBkUT*S}DA1VsB7p2~_@_w86$R}M`79|Rw!XbO2kEYBzdtycfIA|D-4M0Z zf@%Ef!|QzT8gC!K*Y3GQeIS2NQB%|bGT@7yk<8>PuI}=0bRd_37r7+DjYj(cDVGgc zw8&u0pVjUModG6f&MUk%|Cw(CQ{Jll{_$9WW7$W9(~|O&1|=7ckFM_y#qyDc^^W=T zzr&MHzJ$$IM^lSa^@hNsz4yfN?4pMg;TEbIQD+xzPHab-f1NvhgrZp$zH}fP&<`2s zjR={OjTu8)e9#=lHoN5EDfi4P%DShh-D`7isa_h6YWPA*EE5aD5bM;W3g>>Kemmh- zW4XSo%v)Nzvts%3hbl&my87eN4=Owzs)8$|;1ddNHI{YC%X!!cC#Z02aW)1TgE{~X zAF9KL+U9Yqb&lFVi*LIbY0tW)7$aEOwaYdxR}F+Pn1trdCq)^dIYXbB)8sz*_v0-u zoo#X*cFfCr_L4O7q}bzIoNqZSr8xPoRd=1aJZEXmA7b+X3Ko z`-k~cW#kObJyUEu{F-m|Td%p{HL4m>-5%!|fRu#c=A5)^Qd3OR(vr;s4BlXcsOel2 zP*v5TVeh0HQZz@wguLFKG$eKYorT%Im_5*1oC{jWE{ZxtGw+vA+w1aIc>pG7-ZS#j z%zJbCC5*NJbj1zWpkjK}<081yGS&?cS z91a7yZ+`9mS)sAOGoW#yKm5hj0bZHvwkjbeiaJ|#`K`WU(r(I*w}W~ zd0X<}l&c1}dddQ=o}(>DAHE4_${TQNaZs@&MxU#7B;0{U^}U+ATJ@O+_Gqa)3IMA% zkr-RY8y2sEA{fr!!D;rhLAI4_nr#8 zWBW!+r>`QY34KaS+mJyIo%DcRGyp1c)??xoVE|UHT&dpE<(PfT)JAvN8RYEz z9q33;E=(NOf7t@JGxii)*0IWPqGe4-Fyw9r4l9as95{j0)-EDv7BnHlR}vZtqW1ls zLSlMF9WA#euo5LaM8ctHb@jkQrzX%DAPYjx(9(3e?N>f$pxjPG)k76+zu)Zg+dODz zjP&F}E*t*hf9eBiaqkLLcmCPi;C;2r@AtQAZ65^6kui$1M4eCKK7NQ1_bWx(e^Pu_NT0R5m7c~LGuiEzl;S0m6 z*5}_r3OLqaFpL2jg%C|bh!&(qRU!fGBu@DM>372y{B!xJeOVXS1tcNCaUln9CUP=U zh-gT)5aJ9Hw01>N!X7S>&s_8`g)YcP(-%BMC4|sH2qEo5CvsUx*H5NCVz)0pQouTN zV=O_?zbw-)HA2z-TnPG?d@36Uf*^JaiWWrC-su47q{k(r+X%OPA?aWCt#A|w-Hlkp zrQI3Z{}uX|ek}ce;qNw|`@hV50l>u`z{RG20%M2*iW~qd-~a#s07*qoM6N<$f;MUR AFaQ7m literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/RP.png b/frontend-react/src/assets/abilityIcons/RP.png new file mode 100644 index 0000000000000000000000000000000000000000..533df126641ff5a327592375d56a7eea05a1b090 GIT binary patch literal 3122 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 M07*qoM6N<$f?V>(mjD0& literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/RSU.png b/frontend-react/src/assets/abilityIcons/RSU.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebde89f9a21189a4bd8341bff9868ab4b3b2b43 GIT binary patch literal 5501 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/SCU.png b/frontend-react/src/assets/abilityIcons/SCU.png new file mode 100644 index 0000000000000000000000000000000000000000..56e232c91a0539bd07134b660d30c7f9e9a0dced GIT binary patch literal 4699 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/SJ.png b/frontend-react/src/assets/abilityIcons/SJ.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb4c3f21c88c4aebd908255ceb9fa80152ce191 GIT binary patch literal 4540 zcmV;t5ku~YP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 P00000NkvXXu0mjfy>AwF literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/SS.png b/frontend-react/src/assets/abilityIcons/SS.png new file mode 100644 index 0000000000000000000000000000000000000000..e96c05a91dd2197758c59ac272eb952c6cd609f8 GIT binary patch literal 5836 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 N002ovPDHLkV1jMuyfXj* literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/abilityIcons/TI.png b/frontend-react/src/assets/abilityIcons/TI.png new file mode 100644 index 0000000000000000000000000000000000000000..33d8b15b0da4a8016fad73d889ce2f2abdff9451 GIT binary patch literal 4984 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 literal 0 HcmV?d00001 diff --git a/frontend-react/src/assets/imageImports.ts b/frontend-react/src/assets/imageImports.ts index 252a4995e..233f8faa6 100644 --- a/frontend-react/src/assets/imageImports.ts +++ b/frontend-react/src/assets/imageImports.ts @@ -1,3 +1,32 @@ +import BDU from "./abilityIcons/BDU.png" +import BRU from "./abilityIcons/BRU.png" +import CB from "./abilityIcons/CB.png" +import DR from "./abilityIcons/DR.png" +import H from "./abilityIcons/H.png" +import ISM from "./abilityIcons/ISM.png" +import ISS from "./abilityIcons/ISS.png" +import LDE from "./abilityIcons/LDE.png" +import MPU from "./abilityIcons/MPU.png" +import NS from "./abilityIcons/NS.png" +import OG from "./abilityIcons/OG.png" +import QR from "./abilityIcons/QR.png" +import QSJ from "./abilityIcons/QSJ.png" +import REC from "./abilityIcons/REC.png" +import RES from "./abilityIcons/RES.png" +import RP from "./abilityIcons/RP.png" +import RSU from "./abilityIcons/RSU.png" +import SCU from "./abilityIcons/SCU.png" +import SJ from "./abilityIcons/SJ.png" +import SPU from "./abilityIcons/SPU.png" +import SS from "./abilityIcons/SS.png" +import SSU from "./abilityIcons/SSU.png" +import T from "./abilityIcons/T.png" +import TI from "./abilityIcons/TI.png" +import OS from "./abilityIcons/OS.png" +import AD from "./abilityIcons/AD.png" +import UNKNOWN from "./abilityIcons/UNKNOWN.png" +import * as top500logo from "./top500.png" + //https://stackoverflow.com/questions/42118296/dynamically-import-images-from-a-directory-using-webpack export const wpnSmall: object = importAll(require.context("./wpnSmall", false)) export const wpnMedium: object = importAll( @@ -11,3 +40,36 @@ function importAll(r: __WebpackModuleApi.RequireContext) { }) return images } + +export const abilityIcons = { + BDU: BDU, + BRU: BRU, + CB: CB, + DR: DR, + H: H, + ISM: ISM, + ISS: ISS, + LDE: LDE, + MPU: MPU, + NS: NS, + OG: OG, + QR: QR, + QSJ: QSJ, + REC: REC, + RES: RES, + RP: RP, + RSU: RSU, + SCU: SCU, + SJ: SJ, + SPU: SPU, + SS: SS, + SSU: SSU, + T: T, + TI: TI, + OS: OS, + AD: AD, + UNKNOWN: UNKNOWN, + "": UNKNOWN, +} as const + +export const top500 = top500logo diff --git a/frontend-react/src/assets/top500.png b/frontend-react/src/assets/top500.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4edc051a26386f5357bed893d8724df558c61e GIT binary patch literal 9971 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 PNdsuA>Zl-;tRns&>DofG literal 0 HcmV?d00001 diff --git a/frontend-react/src/components/builds/AbilityIcon.tsx b/frontend-react/src/components/builds/AbilityIcon.tsx new file mode 100644 index 000000000..df6bb20c9 --- /dev/null +++ b/frontend-react/src/components/builds/AbilityIcon.tsx @@ -0,0 +1,58 @@ +import React from "react" +import { + StackableAbility, + HeadOnlyAbility, + ClothingOnlyAbility, + ShoesOnlyAbility, +} from "../../types" +import { abilityIcons } from "../../assets/imageImports" + +const mainAbilityStyle = { + //https://github.com/loadout-ink/splat2-calc + zIndex: 2, + borderRadius: "50%", + width: "50px", + height: "50px", + background: "#000", + border: "2px solid #888", + borderRight: "0px", + borderBottom: "0px", + backgroundSize: "100%", + boxShadow: "0 0 0 1px #000", + userSelect: "none", +} as const +const subAbilityStyle = { + //https://github.com/loadout-ink/splat2-calc + zIndex: 2, + borderRadius: "50%", + width: "40px", + height: "40px", + background: "#000", + border: "2px solid #888", + borderRight: "0px", + borderBottom: "0px", + backgroundSize: "100%", + boxShadow: "0 0 0 1px #000", + userSelect: "none", +} as const + +interface AbilityIconProps { + ability: + | StackableAbility + | HeadOnlyAbility + | ClothingOnlyAbility + | ShoesOnlyAbility + size: "MAIN" | "SUB" +} + +const AbilityIcon: React.FC = ({ ability, size }) => { + return ( + {ability} + ) +} + +export default AbilityIcon diff --git a/frontend-react/src/components/builds/BuildCard.tsx b/frontend-react/src/components/builds/BuildCard.tsx index 4f50f729e..17f890573 100644 --- a/frontend-react/src/components/builds/BuildCard.tsx +++ b/frontend-react/src/components/builds/BuildCard.tsx @@ -1,13 +1,108 @@ -import React from "react" +import React, { useState } from "react" import { Build } from "../../types" -import { Box } from "@chakra-ui/core" +import { + Box, + Flex, + Image, + IconButton, + Popover, + PopoverTrigger, + PopoverContent, + PopoverBody, +} from "@chakra-ui/core" +import useTheme from "../../hooks/useTheme" +import WeaponImage from "../common/WeaponImage" +import { top500 } from "../../assets/imageImports" +import { FaInfo, FaPlus, FaMinus } from "react-icons/fa" +import ViewGear from "./ViewGear" +import ViewAP from "./ViewAP" interface BuildCardProps { build: Build + defaultToAPView: Boolean } -const BuildCard: React.FC = ({ build }) => { - return asd +const BuildCard: React.FC = ({ build, defaultToAPView }) => { + const [apView, setApView] = useState(defaultToAPView) + const { borderStyle, themeColor, darkerBgColor, grayWithShade } = useTheme() + + return ( + + + + + + {build.top && ( + x rank top 500 logo + )} + + + {new Date(parseInt(build.updatedAt)).toLocaleString()} + + {build.title && ( + + {build.title} + + )} + {apView ? : } + + {build.description ? ( + + + + + + + {build.description} + + + + ) : ( + + )} + setApView(!apView)} + /> + + + ) } export default BuildCard diff --git a/frontend-react/src/components/builds/GearImage.tsx b/frontend-react/src/components/builds/GearImage.tsx new file mode 100644 index 000000000..3686bdc31 --- /dev/null +++ b/frontend-react/src/components/builds/GearImage.tsx @@ -0,0 +1,26 @@ +import React from "react" +import { HeadGear, ClothingGear, ShoesGear } from "../../types" +import english_internal from "../../utils/english_internal.json" +import { Box } from "@chakra-ui/core" + +interface GearImageProps { + englishName?: HeadGear | ClothingGear | ShoesGear + renderNullIfNoName: boolean +} + +const GearImage: React.FC = ({ + englishName, + renderNullIfNoName, +}) => { + if (!englishName && renderNullIfNoName) return null + if (!englishName) return + return ( + {englishName} + ) +} + +export default GearImage diff --git a/frontend-react/src/components/builds/ViewAP.tsx b/frontend-react/src/components/builds/ViewAP.tsx new file mode 100644 index 000000000..a8ab25fba --- /dev/null +++ b/frontend-react/src/components/builds/ViewAP.tsx @@ -0,0 +1,122 @@ +// This while is bit of a mess from TS PoV - might be worth while to do it better later + +import React from "react" +import { Build, Ability } from "../../types" +import { Box, Flex } from "@chakra-ui/core" +import DividingBox from "../ui/DividingBox" +import AbilityIcon from "./AbilityIcon" +import useTheme from "../../hooks/useTheme" + +const mainOnlyAbilities = [ + "CB", + "LDE", + "OG", + "T", + "H", + "NS", + "TI", + "RP", + "AD", + "DR", + "SJ", + "OS", +] as const + +interface ViewAPProps { + build: Build +} + +const ViewAP: React.FC = ({ build }) => { + const { grayWithShade } = useTheme() + const abilityArrays: Ability[][] = [ + build.headgear, + build.clothing, + build.shoes, + ] + + const abilityToPoints: Partial> = {} + abilityArrays.forEach(arr => + arr.forEach((ability, index) => { + let abilityPoints = index === 0 ? 10 : 3 + if (mainOnlyAbilities.indexOf(ability as any) !== -1) abilityPoints = 999 + abilityToPoints[ability] = abilityToPoints.hasOwnProperty(ability) + ? (abilityToPoints[ability] as any) + abilityPoints + : abilityPoints + }) + ) + + const pointsToAbilities: Record = {} + ;(Object.keys(abilityToPoints) as Array< + keyof typeof abilityToPoints + >).forEach((ability: Ability) => { + const points = abilityToPoints[ability] + + pointsToAbilities.hasOwnProperty(points as any) + ? pointsToAbilities[points as any].push(ability) + : (pointsToAbilities[points as any] = [ability]) + }) + + const APArrays = (Object.keys(pointsToAbilities) as Array< + keyof typeof pointsToAbilities + >) + .map(points => [points, pointsToAbilities[points as any]]) + .sort((a1, a2) => parseInt(a2[0] as string) - parseInt(a1[0] as string)) + + let indexToPrintAPAt = APArrays[0][0] === "999" ? 1 : 0 + + return ( + + {APArrays.map((arr, index) => { + return ( + + {arr[0] !== "999" ? ( + + + {arr[0] as string} + {indexToPrintAPAt === index ? ( + <> +
+ AP + + ) : null} +
+
+ ) : ( + + )} + {(arr[1] as Array).map((ability, abilityIndex) => ( + 5 + ? `-${(arr[1].length - 5) * 5}px` + : undefined + } + > + + + ))} +
+ ) + })} +
+ ) +} + +export default ViewAP diff --git a/frontend-react/src/components/builds/ViewGear.tsx b/frontend-react/src/components/builds/ViewGear.tsx new file mode 100644 index 000000000..c759a1d66 --- /dev/null +++ b/frontend-react/src/components/builds/ViewGear.tsx @@ -0,0 +1,56 @@ +import React from "react" +import { Grid } from "@chakra-ui/core" +import GearImage from "./GearImage" +import { Build } from "../../types" +import AbilityIcon from "./AbilityIcon" + +interface ViewGearProps { + build: Build +} + +const ViewGear: React.FC = ({ build }) => { + const noItems = + !build.headgearItem && !build.clothingItem && !build.clothingItem + return ( + + + {build.headgear.map((ability, index) => ( + + ))} + + {build.clothing.map((ability, index) => ( + + ))} + + {build.shoes.map((ability, index) => ( + + ))} + + ) +} + +export default ViewGear diff --git a/frontend-react/src/components/common/Loading.tsx b/frontend-react/src/components/common/Loading.tsx index 1f4691a6b..98df4f5ee 100644 --- a/frontend-react/src/components/common/Loading.tsx +++ b/frontend-react/src/components/common/Loading.tsx @@ -1,15 +1,15 @@ import React from "react" -import { Spinner, useColorMode, Box } from "@chakra-ui/core" +import { Spinner, Box } from "@chakra-ui/core" +import useTheme from "../../hooks/useTheme" interface LoadingProps {} const Loading: React.FC = () => { - const { colorMode } = useColorMode() - const color = { light: "orange.500", dark: "pink.200" } + const { themeColorWithShade } = useTheme() return ( = ({ englishName, size }) => { const dictToUse: any = size === "MEDIUM" ? wpnMedium : wpnSmall return ( - {englishName} + {englishName} ) } diff --git a/frontend-react/src/components/root/App.tsx b/frontend-react/src/components/root/App.tsx index 5710a3f7f..4000f99d0 100644 --- a/frontend-react/src/components/root/App.tsx +++ b/frontend-react/src/components/root/App.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from "react" +import React from "react" import { Box } from "@chakra-ui/core" import { MenuBar } from "./MenuBar" @@ -9,15 +9,13 @@ import useTheme from "../../hooks/useTheme" const App: React.FC = () => { const { bgColor, textColor } = useTheme() - useEffect(() => { - document.body.style.backgroundColor = bgColor - }, [bgColor]) - return ( diff --git a/frontend-react/src/components/root/ColorPicker.tsx b/frontend-react/src/components/root/ColorPicker.tsx index 15be9ecae..770f3d0cd 100644 --- a/frontend-react/src/components/root/ColorPicker.tsx +++ b/frontend-react/src/components/root/ColorPicker.tsx @@ -5,7 +5,6 @@ import { Popover, PopoverBody, PopoverContent, - useColorMode, useTheme as useChakraTheme, } from "@chakra-ui/core" import { CirclePicker, ColorResult } from "react-color" @@ -13,12 +12,10 @@ import { writeStorage } from "@rehooks/local-storage" import { themeColors as choices } from "../../utils/lists" import useTheme from "../../hooks/useTheme" -const bgColor = { light: "#eff0f3", dark: "#232946" } as const const size = "20px" as const const ColorPicker: React.FC = () => { - const { colorMode } = useColorMode() - const { themeColorHex } = useTheme() + const { themeColorHex, bgColor } = useTheme() const theme = useChakraTheme() const hexCodes = choices.map(color => @@ -46,11 +43,7 @@ const ColorPicker: React.FC = () => { ml="10px" /> - + import("../user/UserPage")) const Routes: React.FC = () => { return ( - Loading...}> + }> diff --git a/frontend-react/src/components/root/SideNav.tsx b/frontend-react/src/components/root/SideNav.tsx index f6b7bd2e8..5af5121bf 100644 --- a/frontend-react/src/components/root/SideNav.tsx +++ b/frontend-react/src/components/root/SideNav.tsx @@ -1,17 +1,18 @@ -import { Box, useColorMode } from "@chakra-ui/core" +import { Box } from "@chakra-ui/core" import React from "react" import { SideNavContent } from "./SideNavContent" +import useTheme from "../../hooks/useTheme" + +const shadow = { + light: "0px 1px 10px 8px rgba(0,0,0,0.15)", + dark: "0px 1px 10px 8px rgba(255,255,255,0.04)", +} as const const SideNav = () => { - const { colorMode } = useColorMode() - const bgColor = { light: "#D6D7DA", dark: "#0A102D" } - const shadow = { - light: "0px 1px 10px 8px rgba(0,0,0,0.15)", - dark: "0px 1px 10px 8px rgba(255,255,255,0.04)", - } + const { darkerBgColor, colorMode } = useTheme() return ( = ({ children, location, + width = undefined, margin = "0.4em", }) => { const { borderStyle } = useTheme() @@ -22,6 +24,9 @@ const DividingBox: React.FC = ({ mt={location === "top" ? margin : undefined} borderBottom={location === "bottom" ? borderStyle : undefined} mb={location === "bottom" ? margin : undefined} + borderRight={location === "right" ? borderStyle : undefined} + mr={location === "right" ? margin : undefined} + width={width} > {children} diff --git a/frontend-react/src/components/user/AvatarWithInfo.tsx b/frontend-react/src/components/user/AvatarWithInfo.tsx index fa76f10b2..c403e2de6 100644 --- a/frontend-react/src/components/user/AvatarWithInfo.tsx +++ b/frontend-react/src/components/user/AvatarWithInfo.tsx @@ -4,7 +4,6 @@ import { FaUserAlt, FaTwitter, FaTwitch, FaGamepad } from "react-icons/fa" import UserAvatar from "../common/UserAvatar" import { User } from "../../types" -import DividingBox from "../ui/DividingBox" import Flag from "../common/Flag" import { countries } from "../../utils/lists" @@ -22,48 +21,57 @@ interface AvatarWithInfoProps { const AvatarWithInfo: React.FC = ({ user }) => { return ( - + - - + + + + {user.username}#{user.discriminator} + + {user.country && ( - - {user.username}#{user.discriminator} + + {countries.find(obj => obj.code === user.country)?.name} - {user.country && ( - - - {countries.find(obj => obj.code === user.country)?.name} - - )} - {user.twitter_name && ( - - -
- {user.twitter_name} - - - )} - {user.twitch_name && ( - - - - {user.twitch_name} - - - )} - {user.sens?.stick && ( - - - {getSensString(user.sens.motion, user.sens.stick)} - - )} - - + )} + {user.twitter_name && ( + + + + {user.twitter_name} + + + )} + {user.twitch_name && ( + + + + {user.twitch_name} + + + )} + {user.sens?.stick && ( + + + {getSensString(user.sens.motion, user.sens.stick)} + + )} + ) } diff --git a/frontend-react/src/components/user/BuildTab.tsx b/frontend-react/src/components/user/BuildTab.tsx new file mode 100644 index 000000000..bb2015c89 --- /dev/null +++ b/frontend-react/src/components/user/BuildTab.tsx @@ -0,0 +1,30 @@ +import React from "react" +import { Build } from "../../types" +import { Flex, Box } from "@chakra-ui/core" +import BuildCard from "../builds/BuildCard" +import useLocalStorage from "@rehooks/local-storage" + +interface BuildTabProps { + builds: Build[] + canModifyBuilds: boolean +} + +const BuildTab: React.FC = ({ builds, canModifyBuilds }) => { + const [APView] = useLocalStorage("prefersAPView") + return ( + <> + + {builds.map(build => ( + + + + ))} + + + ) +} + +export default BuildTab diff --git a/frontend-react/src/components/user/UserPage.tsx b/frontend-react/src/components/user/UserPage.tsx index 7e62e5cf8..e7a1c18e6 100644 --- a/frontend-react/src/components/user/UserPage.tsx +++ b/frontend-react/src/components/user/UserPage.tsx @@ -21,6 +21,7 @@ import { Box, Tabs, TabList, Tab, TabPanels, TabPanel } from "@chakra-ui/core" import useTheme from "../../hooks/useTheme" import { Helmet } from "react-helmet-async" import { SEARCH_FOR_BUILDS } from "../../graphql/queries/searchForBuilds" +import BuildTab from "./BuildTab" interface Tab { id: number @@ -67,14 +68,17 @@ const UserPage: React.FC = ({ id }) => { const tabs = [] as Tab[] - if (builds.length > 0) { + if (builds.length > 0 || userLean?.discord_id === user.discord_id) { tabs.push({ id: 1, icon: FaTshirt, title: "Builds", content: ( -

hi

+
), }) @@ -100,7 +104,7 @@ const UserPage: React.FC = ({ id }) => { {user.weapons && user.weapons.length > 0 && ( - + )} diff --git a/frontend-react/src/components/user/WeaponPool.tsx b/frontend-react/src/components/user/WeaponPool.tsx index 4bc3a23a8..515fb2270 100644 --- a/frontend-react/src/components/user/WeaponPool.tsx +++ b/frontend-react/src/components/user/WeaponPool.tsx @@ -1,7 +1,8 @@ import React from "react" import { Weapon } from "../../types" -import { Box, Flex, useColorMode } from "@chakra-ui/core" +import { Box, Flex } from "@chakra-ui/core" import WeaponImage from "../common/WeaponImage" +import useTheme from "../../hooks/useTheme" interface WeaponPoolProps { weapons: Weapon[] @@ -13,7 +14,7 @@ const styles = { } as const const WeaponPool: React.FC = ({ weapons }) => { - const { colorMode } = useColorMode() + const { colorMode, grayWithShade } = useTheme() const borderStyle: string = styles[colorMode] return ( @@ -28,12 +29,11 @@ const WeaponPool: React.FC = ({ weapons }) => { > Weapon pool diff --git a/frontend-react/src/hooks/useTheme.tsx b/frontend-react/src/hooks/useTheme.ts similarity index 82% rename from frontend-react/src/hooks/useTheme.tsx rename to frontend-react/src/hooks/useTheme.ts index b2dd7bddc..3b9a1b97b 100644 --- a/frontend-react/src/hooks/useTheme.tsx +++ b/frontend-react/src/hooks/useTheme.ts @@ -3,11 +3,14 @@ import { useLocalStorage } from "@rehooks/local-storage" import { ThemeColor } from "../types" interface Theme { + colorMode: "light" | "dark" bgColor: "#eff0f3" | "#232946" + darkerBgColor: "#D6D7DA" | "#0A102D" textColor: "#0d0d0d" | "#fffffe" borderStyle: | "1px solid rgba(0, 0, 0, .2)" | "1px solid rgba(255, 255, 255, .2)" + grayWithShade: "gray.300" | "gray.600" themeColorWithShade: string themeColorHex: string themeColor: ThemeColor @@ -18,7 +21,9 @@ function useTheme(): Theme { const chakraTheme = useChakraTheme() const light = colorMode === "light" const bgColor = light ? "#eff0f3" : "#232946" + const darkerBgColor = light ? "#D6D7DA" : "#0A102D" const textColor = light ? "#0d0d0d" : "#fffffe" + const grayWithShade = light ? "gray.600" : "gray.300" const borderStyle = light ? "1px solid rgba(0, 0, 0, .2)" : "1px solid rgba(255, 255, 255, .2)" @@ -35,10 +40,13 @@ function useTheme(): Theme { const themeColorHex = chakraTheme.colors[themeColor]["500"] return { + colorMode, bgColor, + darkerBgColor, textColor, borderStyle, themeColorWithShade, + grayWithShade, themeColorHex, themeColor, } diff --git a/frontend-react/src/index.tsx b/frontend-react/src/index.tsx index ef5095661..2076570b8 100644 --- a/frontend-react/src/index.tsx +++ b/frontend-react/src/index.tsx @@ -5,7 +5,6 @@ import { ThemeProvider, ColorModeProvider, CSSReset } from "@chakra-ui/core" import { ApolloProvider } from "@apollo/react-hooks" import { HelmetProvider } from "react-helmet-async" import ApolloClient from "apollo-boost" -import "./index.css" import * as serviceWorker from "./serviceWorker" const client = new ApolloClient({ diff --git a/frontend-react/src/react-app-env.d.ts b/frontend-react/src/react-app-env.d.ts index 6431bc5fc..9dfc9c0ba 100644 --- a/frontend-react/src/react-app-env.d.ts +++ b/frontend-react/src/react-app-env.d.ts @@ -1 +1,6 @@ /// + +declare module "*.png" { + const value: any + export = value +} diff --git a/frontend-react/src/types.ts b/frontend-react/src/types.ts index bff66cda5..e88ce55ca 100644 --- a/frontend-react/src/types.ts +++ b/frontend-react/src/types.ts @@ -21,10 +21,17 @@ type ElementType> = T extends ReadonlyArray< export type Weapon = ElementType export type CountryCode = ElementType export type ThemeColor = ElementType + export type HeadOnlyAbility = ElementType export type ClothingOnlyAbility = ElementType export type ShoesOnlyAbility = ElementType export type StackableAbility = ElementType +export type Ability = + | HeadOnlyAbility + | ClothingOnlyAbility + | ShoesOnlyAbility + | StackableAbility + export type HeadGear = ElementType export type ClothingGear = ElementType export type ShoesGear = ElementType diff --git a/index.js b/index.js index cd42cc3d9..6d612630a 100644 --- a/index.js +++ b/index.js @@ -67,8 +67,9 @@ passport.deserializeUser(function(discord_id, done) { }) console.log("connecting to MongoDB") -const dbName = +let dbName = process.env.NODE_ENV === "development" ? "development" : "production" +if (process.env.USE_PRODUCTION_DB) dbName = "production" mongoose .connect(process.env.MONGODB_URI, { diff --git a/package.json b/package.json index e1ffb0758..5679a6979 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "start": "cross-env LOGGED_IN=TRUE node index.js", + "withprod": "cross-env LOGGED_IN=TRUE USE_PRODUCTION_DB=TRUE node index.js", "loggedout": "node index.js", "watch": "cross-env LOGGED_IN=TRUE nodemon index.js", "build": "cd frontend-react && npm install && npm run build && mv build ../build",