From c35df16bdb3e6e6ae99429db0bf54f5a35d9ca47 Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Sun, 27 Dec 2020 16:07:28 +0530 Subject: [PATCH] Add multi sources --- assets/sourceCovers/BoxNovel.png | Bin 0 -> 33059 bytes assets/sourceCovers/WuxiaWorld.jfif | Bin 0 -> 15209 bytes package.json | 80 ++++++------ src/navigation/Router.js | 37 +++++- src/screens/Browse.js | 190 +++++++++------------------- src/screens/ChapterItem.js | 15 ++- src/screens/Latest.js | 2 +- src/screens/NovelItem.js | 6 +- src/screens/Search.js | 4 +- src/screens/Sources/BoxNovel.js | 171 +++++++++++++++++++++++++ src/utils/sources.js | 15 +++ 11 files changed, 331 insertions(+), 189 deletions(-) create mode 100644 assets/sourceCovers/BoxNovel.png create mode 100644 assets/sourceCovers/WuxiaWorld.jfif create mode 100644 src/screens/Sources/BoxNovel.js create mode 100644 src/utils/sources.js diff --git a/assets/sourceCovers/BoxNovel.png b/assets/sourceCovers/BoxNovel.png new file mode 100644 index 0000000000000000000000000000000000000000..2952c36920906bd33ee668d68ebd9e6a9fb0bbc0 GIT binary patch literal 33059 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 KSha{j(Ek9Ny^)Ln literal 0 HcmV?d00001 diff --git a/assets/sourceCovers/WuxiaWorld.jfif b/assets/sourceCovers/WuxiaWorld.jfif new file mode 100644 index 0000000000000000000000000000000000000000..39a5c3b1c9c44d3efd9170ab5a3ee870bde00ca3 GIT binary patch literal 15209 zcmeIYWl&{J5+;0c_X{-c?(XjHE)6u^xI@#pyE`=Q?(R0=9kEG;f24gdiG06;!pfR9yx2mlNe^soNez&|?#Gz0`V zI0P&d6eKh}EId3MEF2sHA}TThA_^iL95Mzn3K|d{9UUGC^9u&>3n~yD_?Hk6u+KT* z5HJuBFhB%21mOSY_R$MKfd&l(4Fm%r27sb~fT4hV^aJodZxR#?s2G|F`jf(mz%J@L->lkin2Y*VsV#uWA4N{QrjrRFwCbTK@B{tA^VK(%>~7ko_Sw z_)kg^Z@6lS-M2}EhEuHm^SW%Zylc#ghtX|Let4Sa8uRaG5=3wIziUJrU%8cuRr(|MlM2@kfz@Cdk>LJXM7eePq{Q)Ed) zuP+X~@g;Bduyr`R#g|~0&ef@rrxy?ydr`Nhhwrs@A|HvZztpR^hBjespXQz)lh~t* z;{GFk*rpmnTarCqpLC8ao=5N)zE5EL$8B`-TG!m5hQ;YXS;n1iovpTF)FOqP!g>02Fy+l}U9NG9|30x)^^iw@(D zl1o*t+OKpQS!;w4-|AwIix*ylR&=>%P3muj%Tvp9T)s&$vk{)UD$+e3egFiy=A0ys zZ{Lu~R5ot{fBz9-VbW#M)Sc#Bgr7(;dc_pxr};Tuuqb-Ce^RoXr@Zno-mIp#Db0ZJ zrE@N%IW?2R0r%>NLtrA{_5+ZO`vG8RDm%QxeL14wpYU^>%t?Un5@?s#oTc7RtPorH zTgecLb&2ddF`{O6e`d8GdI<7#){A6I#_>}e)#s8#ktUBE=}!(^cc%~?wMvjInB6?P z4^4_=@>ocwvB)JlA^7jEbZ^)6uA~q(j?7_ z<}vIQ%vlcJQis(%DhHJBv$fAb8CAx3<@x|jLGQ(M{+c{G+!P}5lklaek)n|ES0(xY zWOgh@9{qijz_3Z`7sAyl)nd!b==?dfAbER*Mw;6grin9F!*mc z{yDtRs8nK|{hxXMOZ|Ue1An0?Ju(0U90U{`9P$%s|FI+pFmOmHPyh%r5S<+b70m#H zkcEvykesoal<5;+p+C7mAV5C=6vyq4Q_DV!>Bx9zFIhaTHkR&d}uk17iAV_7PioKeGqzMtOlAI}$4T{JlbH5EKEX!oRK~`b6iQRgClhu`k z%HP@Mt&EG5Eo=)b_J@_`ok{IF+?g*s#%I-`{MtI*tl8YiohIuNOoWtJz<|>$WZej9fMq-p zx*gdXHrQ1;kXnIk0!X5wM|nQNA?XOekxm@{GA^uj`^0ce+lVkT#)08@Fdk>TsUB+& zCn1_(2lOfVJ#T_dlXmX50>+)d9Y=PII(z8GXmZ5KUO=yt3R6Nv9|Kx~HD^k&NE%*~ z$Pzu2I;iQ@N)YcQ zO!ejv9I!r#Rvw2^S{+9nFXFnzE!@Z)szE^jKwrarb>^s|L)g8mLtzlVO6A!}eu76M zu1!5nD$6KcDSsl$pk7`x=bZVKi&%G~sBjJhvs6Acrp5CKqyljjLWXCr=;VxhEM{;6 zlygRuN7+5cFbV!<{I^PZU1n9au6j2&LA;aGuIAAU25Xe;3x*3E9ZPKzA$iipuPHTM zWZBnLuCiYCF+(}1>X>DPyu=tg9`8dqHBpV^g(45!qWyXa8+udZpaGF}GIxKw96f9X zBbEt1Zu|#OT6zcF-$Ae}`Tb{E!+Gz!ygNAaY2uQmCHeA-Zu~82`I{@+m3T4cY%ZqK z+M9GKZAi99x>#%iLaxmx$ZCVyW9$ zR_`=TkJkR@yc6biVd~4LpT3P7I9hzM5^qC+$(t5$d^+7LJP`P1p|g?N`6G>$m$kD$ z^K(=3Q(sc+)a=sbVb4?}{wO&WIa*9?LM@5I7?8@z^Dy7M)GH)jLYvxU$)?ciR$` zdDp(vNi%gzgWYq4H~YpnYD3(kxKhShnkE6fRVqfY5m(EyWJC_pzY38Y`n{wcC(2NK zv(^Ml6*bB=l&|${*z^e2s8zQnY~;!aY+1=;CauHlGI$4GM+AzJbPOYAM0b9WWT<}t z5JD?Vy-_3P*YCA$>noWpYa>h7V9>sm2eQw5{+=YN&gHJEPa!<~@-WA57Pt>8xx?`+O8k})T9CKW#Sc0ijm z*W~mb*()ZoFU}~ddE9+V5>?D>!KX|Gjt7+2_F)t6J`kOWUAz7OXcgDO!VvS_h%Q}^ z;nnr`v4JL)4md3Z!-Smqj8esBlsk$;8R;teF=V5fF5LYz&UbmXL8ix=qBwrzv9uT~ zP!;je;Xs&m@vWJp(K1J~-Xs3Uz7<&bs;-%~{-QveSy*#s{f$Lq(Ne&Zu6{J(K@oNV zTgVm#2DKlxY^27P8wV@-HMX$mnjsuaM-7d$S#oOWL^L>G z%{NvCoJvm8J$92w`w^??e6?`83(U^$hQeQh19`}|xqAcyOU1xp7)Z$K%3|kpgV|=i z-KbU!fp5oyM?h)=$;i*A9AO6Pjg=mWRo#QvE~maMwM^6_ot!T4R%0<>O-Dx1t*GU0+POo z)FRH|l8V}I9>uGfL&PN9^OtF%x0V$MtJ#iMl9C`>KdzzZTjv|^#Lil;k)L{i)%`}0s9LQ@HK)Ltljfl?UUTnR$iAUWF)EBi0v9&$Zkm!Vh!Ujfu+gGG4B96{+ zy?u--s@E7~@wwGIto}FuL{vzDPekp1BPyPOcOfn&qg^kpzQ(pvdvpJ*(&= zT;I2Nycg*^!4fSW+4sD#^AepE=8J@!!U@||3_&mA)T?{|Fh`hfd-so^I@{qIGXgS? zmHqhUEtY2%PNrt;fvul=@>2PFqr6dv7sytT%NjJQ%H`)ftBbf^msPuoqskV4w7Mzj z#Z%&*7(P>v)AJk^nnbM~7k~tZZoQE=!8f03iR+@joYR2r!H``t(f-@< zRBB(260;0zyitIUbwBb-8i x{Q2E#?6)>t4^VJP%Vu}($QqsoDI=@mkxV3Rz#=> zBPb@Y*;YF)J*?G%>)J1tfSp0Kz?{wtcWyi*5Hn{~9i3y?)9?=o21ikdijDr9^_Y;Hq{l8`zX`LIzS?HpD_mw8 z#T_qcpnlto(qaUM82L>DW5?xu=yej#mlKGThk-Azl)Q6KJKw7MZU{GV-B8(O_81#s z8nYJ)ONhx?0%rS@?qNknq5i;Hle0+d;dL9{?nx^;lF{^bv@e*a_A>rE=SmnxN+qy_ zd<8!$o*R;Rt)6v#f~oB%{(AHVy(RNDI@eitv-cCCFdq@UhQ1w)c5oMt~5jz~vX zQh+n6Krx(b*I|G0lTYUdL&=rY)T!azUH&^?DnZ=g$+D2W9zd;tBciY;?ozw^y)+R- zLYpNeey{8riu5UYtuR$dA+fD7#V&jr3)bxcarT|~+qiV4P=8>fjj|kcOpNmSW2jPx zG;h%%^gF}bWxSPpUS~-OzIm0F0JBadE&B?@iE@+=Wp&Tzf|M4wahHtC;^Jb{Ls1ge z7&w(UnImhIukFm8?;tn2ImK%{9`Nqv0=P+8Umu3yz@uJvSF`ObkTVZ8jR!KNtMGul4+r-y4VL{=fXoZbTSpm zY%W6-BzJox_JtZ;wYqVJ~jej+*mvH1A-tjJJX zIU-_LGp#>{Uh(MQVuW6WW_)-mD0+qB?Zk2Rfa>uqpOmzKMDq^OX2nG{8BCUyiOS5` z?gx4uR<4cM@ZiZQ-_N2CfcC}MDU)T6gCgg+lsFWWP~kzJK6zq2UI}k71*nZ>ECd5H zoTf^3z-DWrsTP2X(X#o^QZ>FHN7^>Q?T@HT-EXxyFx1L>rb-#g_lbIiv9DiWmhsZ* zGtjO+|Gbll z!#I`Xo@lkP==8nFuNZvv%z4om^qtD6Rqu5oC2P`XZiZ?-iH_7@qUh#YtbVq6QpOc8 zjzJ^h-OsJRwC`afp_$tH(GPk)wEbfg;W{$!z=}Qft5PJ9*O5SFH5`G{;qgCzm5;PeXTU zUo)y&xZr(8IfcH+G&@)Bb&+M`N>ZEDKBEt-6jneo%*y)E1bcIai@ zvR|a-_alRs&>iTL^u-}*3q+#d56#a-a#U(Scb2~D_t-FfaZ9}rl7bB2u9E;T#eW|V{j&CcDqW0&OP zi;l7F^R_E668rQVJ(BNUcuKDo_v3#w+wts2cD{GTo2>x6DohgbGfA4Czcc1lpwE*O zpZ<^o8?=!v`v5!-z2}kQh>^(9&@p76U7Tn4MxKUj+g_aGy(Lt$#ZsFRwEWyCE(`Ki zFN*u6t5))o@48>_S@tH8alz5r{bTXz0TeENrz8LA6XQQ@kF0a>^mC3m8f|AZsj`~w3cu7%O z{vt&p>}zP&z`rRbWS72X!4-H{B;h=F=h9FO6ti;t0JN~-(|C&O$b2hS?e+@O0ecb? z5_T&w1bEY{`+I=W@e*Hd7}t9p7N=R%A4w|$Mx%E=02?C~oA2fd2Ec?OVP$$OIy>)~ z=AWSX?ztVtAAqPrtCDs|xrd$WV6vCu7E3wne6(`K+?{!?Vp?#tL8oKwXF2H%o55H| z3!ViR)pQ57(|9IPBI(tjH;VEH)$h#X2GR`$a8rr)I0{jvljDy{T&OO^Lqv`74;Jdi zSZAI@+6~B$27wUH=4t}uD{)niv6lR>2Hi?~n~h3Gou|Wc8A`%aFvwyO5cxTR|T8U9jtq7YCH0(xMZ-i~lXnX*eBIxx#0QCxy z|J!5EI_EN?0P6~SaV^++aT04eY|X$O%pwN?cXiaBwU$(xWYa%l<8c|A~e<|KS|m45Swq_v@_n@S6Xc!0jiCps@1M>MS9L1P%P6H zNfAI(yfb3{Hu?ES7E%1^0G!3ktyFG13ykt*&qg|LpoMQ+5OtOt#s}ZU%u%3W8|4) zc2lX4<#`YTgDTW2eZ?Kb;`9lE8q+^Jte$W~911vnDEG`0D4~VPMJ0B-#se6$5EIXZ z9Z`s>V7=>QE8xj~OE|h5h|?uIk~uGFdt%6K!fH8?vR+Wj!}jJjry3%N>Ozr2TbB+u ztUk%-DJIaiX&b>ACui;7_AH=B8SzR}5W_*mekC3{rp5^lU;K(ABXR72wiV~)$9Irn zvIm82Uu8bccZ-r|`d#25i|DeK>hbIA2H~@ zez;frWm=>II*P5pJuV)yi4rukbOIE@^jFVkzw@ezN}8{$J*lUIK;-tP;=@*OyE7hd zvP&5m9N{ZDE!rB7Xb>OR{=$v1(jsQW&>p{oA$MnW%2rT^?&(|=b;!0FNI#Pifkq$? zWOr$d@^Xxue#y$U;KNe-3*T{mAz+Qzi;W7d)O(?KQ#3Z^fO!C;SiA#`ka+8MAm#pa zmmiIqg4^k<(>)-R-owTog#C%XrNF45H2g#GY_z=sseAWCX<#F@OOveu_Q(TaD7~~T z&w-@gBW%`7bqXs`2RnFJWKfPwoRj`Iwo>4f7K?BlS`?#L8V_;3jiryDC8D53U)C#e z73mIToBi;bY$_9?K{QrF$(_HMdp?+En7?gNA3(FPT!8^k8CeBJufE`7P00M zI3oA359%q(D?V_hc#7_(+aC?&!1p~pPV5Nfx8nG zez`dvdsK@SnXIf>e-mb^>t@1GUoJ^Dj}u))T`(S|`%@4!dnf+qI%GT|ntLIt6inw^ zi?>2ZZ~{A5&9`#3#{*KgoSuv9Jxzl_=+yh(^ebE5P~KZ5fw%71?uj*6~j&5G~ZBVLY*hVAZt#F=jXqpCGLgQMQ+X?zJ>9jBx# zLIoxwY`sZr-Rg89CU9oL3LTWqTefOniwJ)Jb zJ>nUfho^2SiF_}4m;W{{Q&SO;WYk$vx>KN&fJF41*K^2-t1zuTK$5)(>LmdmwGf1_ zamx5udbIxm=yUu`NYEgErrW_lAwj^w0DmPLKGO{-03s$KCFIX6Lu^hBpqLOEToiL;7Ew2)xlyQLK!>h1_pRmE+iB6qIX4$6qfzzS2!VcP~rLza_ zApU&vR!WPrV=eDdw^2G$*t^R+F1(MP9!1H|fPC0u7f32y4$jzq zSp^@opE4wSjh7zMHVV%`MF*v2PdN2_6{ey*rewvfT2s9UB8-yh8eUUyTFKqZ-rtN)#gw7_U0Fg zhVZ43eA%wf^=vcHATZGqHVMYi-*&^?4hQB(+dVkuTN8{%z=WX}wN7*70pD1IJ|yp-F7b92#bnVRVZYJ& zcDM95ZyZcUEP|evsikN6`Q(S9oB#Z>W0j*4rlc)Xhg^+kb$A?egQA=hTw4i7w<1~e z>gAfdt5>1yGV5(fhwmWw$+I=nTHiphEgw7!J3snK4uo7IdMc!erTLZi!>+ek_S3-v zhWG)xEi+G~DDh-n?ZRD=Z5`!*#JiZ>n+MLss75vR&gDYSsczXLJW!LKFPm7P?xVAK zCO+sKI2^Etsppwk!D}6uC{}vQD#7>MsTA6Ap`6Xa*2UFCqs`S zGbj70%GDcyZyM

pk4Kr+-1m+OW%ekalKKa&blU4{j7CIL(CD>mL~fTlxT~vLMc-xBOl#-!i(_Q0TF2aHQO#+rA;p zq0vPpb-!ep7_(cGlzLJ1hRS$iL3N>Y=`9GB%!{Cs1P?<{MIhqw@Hfy~>egJZkvrDK}p!Rc$Ca}jn++5i#AL~a_ zy8LZ^V#jK*Jm4QhANQ@;vw;nFlQWgz;`I!-RG+|X__#>?7P=|E;TF&z(1PAL6;Pmu z?j$|hduz<@*0~`NO+Nnr_!X zi@);Vg4UU!H6@?p8cKaEUDpqkq;87;&yaOb}_ zx9D^3EBaO=6ybCnU(8G%q;32OBqAm2&v~^h8arlT#jCkvBX*`bCXleCNnTt`v)76( zUi}3bX{PhL>IE224w`P`k_`>0#r_lrtPznPXrZtUL86~&=@+_8Ithy+CO*ZGNU zTrW`!U?_rA+p*>IBq~H#lbh@oeWxAz$-!Q74AzPYrj&8ph-bR-f&!G_+kkEW;-wxp1vtrD;uf;+*`OBeBc$j)?SLyyP+Fx(dAp;y0x191+T!1h}_T+O9V_q zYmHFv6qQ3W1bRZ7e^7J6gJnIk0DCzg@J7*PO)b_e%^6^wa!Cx{|Zs@%l2D+PK}UJhD|LgJwH;gyca z9cbF2A{Gim)p>YAGsDEV7$8Z9XSeyD5;u(+rE4V{eaq8$lO02dWpLm%R!0_5l{ZA!|-M^G0&XdQ+E^8Q3R%FEy;oaZ3{o`2Mzj7crX_# zOabCIL-&tdbB99VI5qfY)uWiCK@ZJDtYE@{xsdq80NUtT& zb^vW<6C5U9r;vR5+Lt^3PxEmB67yNa; z^rg6mJ*@>%)^eu?W)32$U)ejfO+Ns|{_B*;-`Ycr27AgXe;LcOC#lq41CKIBjyNp% zik%s;E+#EICUhK49;MFZm!R(pFJ)DMOAfLbzvloMnTWxp!5#WFin;}vlSQ`Vr9K$` zAfnK<(}HfC3Cvr51+i^f1B-&GV=k9yzpp)CP?$zrO-UZOQSf`Cb6<%AjK>H|jBTa> zJ(lB>M_P*O9st6cZfPCLQd)oUK$z}1G$iR7Qsf-$Fc0gpDbP_DP8P=&23M5~#U;oP zeY4gf_HDSfw()!iV4xv#JW1dlKME1TZ>TcIFa!%>NDziy*^mf^J$Et_iqjF5s9 z+A2EejsF9;dwIz?QV*^JKC&G|hyf+EK@;*Q^3vV6yoj}g-xW)>x6;g1`Ix>BUr*FP zM-OK429A^@<@3&R&Cr`K$Sy?;Q;B$+c+}+pr!N~3Yj<}KF*g(qV2d9BmRRR!Y(W5K z`iduSsp%G&`UZo&W^jp5>^mZzvdpd6qqS(WEVw6r2|qE`8_}@;iIXp+C=qu2OqHJX znVWOjL0sv@3sRKA4h|!9=9kyB1O~9aMd#FmiujVsn%~CnL>82TU-t#Hl_Esh$Dnug z(^;9lk&VdgTQ{W>6U2P17|*a+i9Y~$Yu=xp-9Jt>{=)%8zMbU#Z~w0b{-ps<$Nyvx zoQ~q0D*v7#cMN#j#~UB`mqnrdi>+=F{`2QweF7J364yVHcgCNwHi}kAgjPtF6J-K- z_8-)nkuQD0ymi9x_R^fwqm=f-0FiOtTLn%>g}?0+$Q(j=)6W~n+-*4_j!o{ z-m9R$sk}-Hq{lc2m0@e%EyWn=W#$ zsN<+PyI#{K3fB=jw9@p$8q^te5j@CU=$5DcxC!s9ih?E9DP>UW*eg zZ?Z14x(6u$0~>p>7m=dhW?C6&=7Y++K3lzBYlCrY_=<~+nr(IN-lMV$uEq+`N#DzH zspZO(8SX>IAYUZvbQJ5316v=!KYEXtaR$pCxW&Es^EkWT*)3uj*-$}(kT479s{He- zYzBl#6*M|537lC!E`tL|W2D=mUxYSiq&Z$jRqQtPbN5v4WulMC^@9bn20Vk%t;WU! z<4GEEwf7#L#VTkNF%cAv@r3_YJ#kW~@w>OoTvMjZd(w1Gb9s$pTZv@px63)BGPkkSurx=SU_@E zCbA&(G>Hp2xX&J$VgZ#L%hmBOk^sz^&N|_Xg$4mqjiKPdOAb_TDO%d$n;M+=9MjYs zYrk$6?B`dk?Ksol{Cy7*7q!6Hu4c@x*N9YJAZ53|G$ed>+6mSbBtR1z0FLw;h}Pvt zT`pXb4Wic94zS4mY6j#+`$p=iswJq1^u5Vu&E+k??K~)&``Fi-d!v1>V2wbWP(EgL z(bt_n1pp-=)#d(R20BG`XC4jmn5Ak*{IwuGC2|UlAL@>uO_s^R(nIgr;OUJo$;Q9#;_fROAPzacU@a2vZ;c5dZWb%Z4&y=km=bKR!wWN)e;AQS1!-zOBBcT;fMtM{j zIz(}frBUL6B&ZUr43DQKOO=NY*ON>CSMm@X6ERzYPyx_fMNkH6P8aW-LTaFeX%^EX zu$3R7v>RO&M1^MFfd(?D1DB`z5gGsX_S@odFgXPJ4TW*?OFz1WV7${g_EJa~@%Dub zi__fAJ$<19f_`I5H>EKofng@i^ltNeE7^}2iNQX+a!(7q3ZRcDyuhxb9B z3cXXj=d0D{Ph*h}vSX)uCKCN2yT|);tM0)+RDoU6dEIOy0h4W0FnV*ymZ7~_WgOgFyv zN1-(LnF+B)drypaFnE!p)+?w_J#V;ramf`p3vw6A2P2!$is0ejbd#;2#*T~ZA%Vrw z`>V;3C4hG0`eFfj_UH9;yo6At;oL&aujRp6+Z-C1765qTG@&59C};sadwVwHX-;!c zhL6{aQcbQ`NbM-Q{EduNz*HP%m5!t5q|Y2GE2PaZ=*HZm*5xF2yHC}fcoquEq$=lI z^a4RFs1GOD4fY<=i_K8?y_m5~;Zb`>h>u)p|2XAuR{EQnRGPkS{wQ~Es5JzcajL(J z;|j}03y>*x#t_MoE@GZKgXQg3+$IDe8+X6j_>SZlb(BFK^I}A>GFv$N6RJ=Q3^nW? zmVwjS9N=@#n{&rv9V{N1d%=(-MTR3yP`1?!2w3ngCoWaK+kXE5xL_GX0Z5 zufc4_TQf!yqKT?hZ3D-HbP;f~XZXyr<1x9eVEdP~kZf@((`VL#v`nGim@^8aeOJx~ zT&oBv_U8`B80zuF)K>oHyk?yP%5ipvPzR-RM*^KuWEtPJ+{4Sjwz$mv$@e7TtS)MY6-j zOLz|kjQlv)?EJNU(+nmYNp!*!<=uE@SQsjTE|U$qrdF1Z!h-^VS#Hu}TUJ^CR*|#R zSVs6wMa=KAZ_1fs>%~7@A>8*2SG}YyS7X)MO7CnqD>X$;usrLi|c!6DNp9 zEAJ*3y-3;R1MWIg50%6n5)^ATGv$Iiq(}X>o^~{~R*nkfADN%Os)A)m`PlCR-W((X zp1%m3Ee_$K3wJ9?8lMjpC|mBgaA+IXw9$EC}gX> zc+VY3wpSm3JT|#`D_5vfP=0k%1m2vlG@(v~54ljxYkXwg7O*0#9{{CdJJIXP8jfZL z>#Xh(?NjpWw-EhYgVedkD|R34VSo~Tb7ZLFmf{CsIy55HVC1V`6&$o!{95)8ve0R? zE5bks>4ytR<8&26xP&A!Bbv7}?T*{%kVxey#xCH-zks{!S==01Gaj-@ zl~FN$lM*WN&FFDH7rWZ!OYwkZww9rWe&j1Z2c3CdeG~z&(QcJbCU(Nk7j8<@7~Qc_ zx)UaLNjd1V28zD?-V%v7ZP;kAAtSoYZE7_X?69CE|#{|C2PWT3uUCPG?6d=e?eJ7`>2!fZySQx^M)d!6x6b^(l zM2}dft<0G@UZ8cf<^b52j(hU97aEqs%CA>xz=$zaB7$yeK}1rG3Fmg`@+R~Efy+51 z{LnHd6+S{rGsHZMvF5NIsT5?a{v`jHp)BV zuoHX@dQ^&{DwPm>!DQ7!+2m=sSl-qjO2`u`c7YhQ{%|4QkX-k{banbkgWL;l*1mI1 zQplS%H?Xh$gpV1d!M{1EYFPWhO0?%C{HBV;dM)k7DX-g@isGBD0f-$Ydb!pa85MtE wUv_q1G<|eM`>R1v@In_K1Gh}q { const BrowseStack = () => { return ( - + ); @@ -83,6 +89,22 @@ const MoreStack = () => { ); }; +const BoxNovelStack = () => { + return ( + + + + {/* */} + + ); +}; + const Router = () => { return ( { }} /> - { /> ), }} - /> - */} + {/* { /> ), }} - /> + /> */} { headerStyle: { backgroundColor: theme.colorDarkPrimary }, }} /> + ); }; diff --git a/src/screens/Browse.js b/src/screens/Browse.js index d1664e63..03cbe8bc 100644 --- a/src/screens/Browse.js +++ b/src/screens/Browse.js @@ -2,7 +2,9 @@ import React, { useEffect, useState } from "react"; import { StyleSheet, View, + Text, FlatList, + Image, ActivityIndicator, RefreshControl, } from "react-native"; @@ -13,139 +15,61 @@ import { Portal, Button, } from "react-native-paper"; -import NovelCover from "../components/NovelCover"; import { theme } from "../theming/theme"; -import { BottomSheet } from "../components/BottomSheet"; - -const AllNovels = ({ navigation }) => { - const [loading, setLoading] = useState(true); - const [refreshing, setRefreshing] = useState(true); - const [novels, setNovels] = useState(); - const [sort, setSort] = useState("rating"); - const [pageNo, setPageNo] = useState(2); - - const getNovels = () => { - fetch(`http://192.168.1.42:5000/api/novels/1/?o=${sort}`) - .then((response) => response.json()) - .then((json) => setNovels(json)) - .catch((error) => console.error(error)) - .finally(() => { - setPageNo(2); - setRefreshing(false); - setLoading(false); - }); - }; - - const loadMore = () => { - setRefreshing(true); - fetch(`http://192.168.1.42:5000/api/novels/${pageNo}/?o=${sort}`) - .then((response) => response.json()) - .then((json) => setNovels((novels) => novels.concat(json))) - .catch((error) => console.error(error)) - .finally(() => { - setRefreshing(false); - setLoading(false); - setPageNo(pageNo + 1); - }); - }; - - useEffect(() => { - getNovels(); - }, [sort]); - - const onRefresh = () => { - setRefreshing(true); - setPageNo(2); - getNovels(); - }; +import { sources } from "../utils/sources"; +const Browse = ({ navigation }) => { return ( - - - - _panel.show({ velocity: -1.5 })} - /> - onRefresh()} /> - - - {loading ? ( - - - - ) : ( - item.novelUrl} - ListFooterComponent={() => ( - - - - )} - renderItem={({ item }) => ( - - navigation.navigate("NovelItem", item) - } - > - - - )} - refreshControl={ - + + item.sourceId.toString()} + renderItem={({ item }) => ( + + navigation.navigate(item.sourceName + "Stack") } - /> + rippleColor={theme.rippleColorDark} + > + <> + + + + {item.sourceName} + + + {item.sourceLanguage} + + + + )} - - - (_panel = c)} - setSort={setSort} - sort={sort} - setRefreshing={setRefreshing} - /> - - + /> + ); }; -export default AllNovels; +export default Browse; const styles = StyleSheet.create({ container: { @@ -153,13 +77,13 @@ const styles = StyleSheet.create({ // backgroundColor: "#202125", backgroundColor: "#000000", }, - opac: { - height: 190, - flex: 1 / 3, - marginHorizontal: 3.6, - marginVertical: 3.2, - }, - contentContainer: { - flex: 1, + sourceCard: { + // backgroundColor: "pink", + paddingVertical: 10, + marginVertical: 5, + paddingHorizontal: 20, + borderRadius: 6, + flexDirection: "row", + alignItems: "center", }, }); diff --git a/src/screens/ChapterItem.js b/src/screens/ChapterItem.js index 7a20a7e5..29ee6ca7 100644 --- a/src/screens/ChapterItem.js +++ b/src/screens/ChapterItem.js @@ -1,5 +1,11 @@ import React, { useState, useEffect } from "react"; -import { StyleSheet, View, Text, ActivityIndicator } from "react-native"; +import { + StyleSheet, + View, + Text, + ActivityIndicator, + StatusBar, +} from "react-native"; import BottomSheet from "../components/ChapterBottomSheet"; import { Appbar, Provider, Portal } from "react-native-paper"; @@ -14,7 +20,7 @@ const ChapterItem = ({ route, navigation }) => { const [chapter, setChapter] = useState(); - const [size, setSize] = useState(14); + const [size, setSize] = useState(16); const [readerTheme, setReaderTheme] = useState(1); @@ -23,7 +29,7 @@ const ChapterItem = ({ route, navigation }) => { }, []); const getChapter = () => { - fetch(`http://192.168.1.42:5000/api/${chapterUrl}`) + fetch(`http://192.168.1.42:5000/api/1/${chapterUrl}`) .then((response) => response.json()) .then((json) => setChapter(json)) .catch((error) => console.error(error)) @@ -34,6 +40,7 @@ const ChapterItem = ({ route, navigation }) => { return ( + { ? { color: theme.textColorSecondaryDark } : { color: "black" }, size === 16 - ? { lineHeight: 20 } + ? { lineHeight: 25 } : size === 20 ? { lineHeight: 25 } : size === 12 && { lineHeight: 20 }, diff --git a/src/screens/Latest.js b/src/screens/Latest.js index 86b8f690..13a57709 100644 --- a/src/screens/Latest.js +++ b/src/screens/Latest.js @@ -16,7 +16,7 @@ const LatestScreen = ({ navigation }) => { const [novels, setNovels] = useState(); const getNovels = () => { - fetch("http://192.168.1.42:5000/api/latest") + fetch("http://192.168.1.42:5000/api/1/latest") .then((response) => response.json()) .then((json) => setNovels(json)) .catch((error) => console.error(error)) diff --git a/src/screens/NovelItem.js b/src/screens/NovelItem.js index 9ddc8f6e..4d591648 100644 --- a/src/screens/NovelItem.js +++ b/src/screens/NovelItem.js @@ -35,10 +35,10 @@ const NovelItem = ({ route, navigation }) => { const [more, setMore] = useState(false); const [libraryStatus, setlibraryStatus] = useState(); - const [sort, setSort] = useState("DESC"); + // const [sort, setSort] = useState("DESC"); const getNovel = () => { - fetch(`http://192.168.1.42:5000/api/novel/${item.novelUrl}`) + fetch(`http://192.168.1.42:5000/api/1/novel/${item.novelUrl}`) .then((response) => response.json()) .then((json) => { setNovel(json); @@ -212,7 +212,7 @@ const NovelItem = ({ route, navigation }) => { data={chapters} extraData={chapters} showsVerticalScrollIndicator={false} - keyExtractor={(item) => item.chapterId} + keyExtractor={(item) => item.chapterUrl} removeClippedSubviews={true} maxToRenderPerBatch={10} initialNumToRender={10} diff --git a/src/screens/Search.js b/src/screens/Search.js index 1d2ce6ae..10e19b59 100644 --- a/src/screens/Search.js +++ b/src/screens/Search.js @@ -18,7 +18,9 @@ const SearchScreen = ({ navigation }) => { const getNovels = (searchText) => { setLoading(true); - fetch(`http://192.168.1.42:5000/api/search/?s=${searchText}&?o=rating`) + fetch( + `http://192.168.1.42:5000/api/1/search/?s=${searchText}&?o=rating` + ) .then((response) => response.json()) .then((json) => setNovels(json)) .catch((error) => console.error(error)) diff --git a/src/screens/Sources/BoxNovel.js b/src/screens/Sources/BoxNovel.js new file mode 100644 index 00000000..569eefd4 --- /dev/null +++ b/src/screens/Sources/BoxNovel.js @@ -0,0 +1,171 @@ +import React, { useEffect, useState } from "react"; +import { + StyleSheet, + View, + FlatList, + ActivityIndicator, + RefreshControl, +} from "react-native"; +import { + TouchableRipple, + Appbar, + Provider, + Portal, + Button, +} from "react-native-paper"; +import NovelCover from "../../components/NovelCover"; +import { theme } from "../../theming/theme"; +import { BottomSheet } from "../../components/BottomSheet"; + +const AllNovels = ({ navigation }) => { + const [loading, setLoading] = useState(true); + const [refreshing, setRefreshing] = useState(true); + const [novels, setNovels] = useState(); + const [sort, setSort] = useState("rating"); + const [pageNo, setPageNo] = useState(2); + + const getNovels = () => { + fetch(`http://192.168.1.42:5000/api/1/novels/1/?o=${sort}`) + .then((response) => response.json()) + .then((json) => setNovels(json)) + .catch((error) => console.error(error)) + .finally(() => { + setPageNo(2); + setRefreshing(false); + setLoading(false); + }); + }; + + const loadMore = () => { + setRefreshing(true); + fetch(`http://192.168.1.42:5000/api/1/novels/${pageNo}/?o=${sort}`) + .then((response) => response.json()) + .then((json) => setNovels((novels) => novels.concat(json))) + .catch((error) => console.error(error)) + .finally(() => { + setRefreshing(false); + setLoading(false); + setPageNo(pageNo + 1); + }); + }; + + useEffect(() => { + getNovels(); + }, [sort]); + + const onRefresh = () => { + setRefreshing(true); + setPageNo(2); + getNovels(); + }; + + return ( + + + navigation.goBack()} /> + + + navigation.navigate("BoxNovelSearch")} + /> + _panel.show({ velocity: -1.5 })} + /> + onRefresh()} /> + + + {loading ? ( + + + + ) : ( + item.novelUrl} + ListFooterComponent={() => ( + + + + )} + renderItem={({ item }) => ( + + navigation.navigate("NovelItem", item) + } + > + + + )} + refreshControl={ + + } + /> + )} + + + (_panel = c)} + setSort={setSort} + sort={sort} + setRefreshing={setRefreshing} + /> + + + ); +}; + +export default AllNovels; + +const styles = StyleSheet.create({ + container: { + flex: 1, + // backgroundColor: "#202125", + backgroundColor: "#000000", + }, + opac: { + height: 190, + flex: 1 / 3, + marginHorizontal: 3.6, + marginVertical: 3.2, + }, + contentContainer: { + flex: 1, + }, +}); diff --git a/src/utils/sources.js b/src/utils/sources.js new file mode 100644 index 00000000..d6cddd35 --- /dev/null +++ b/src/utils/sources.js @@ -0,0 +1,15 @@ +export const sources = [ + { + sourceId: 1, + sourceName: "BoxNovel", + sourceCover: + "https://boxnovel.com/wp-content/uploads/2018/04/BoxNovel-1.png", + sourceLanguage: "English", + }, + { + sourceId: 2, + sourceName: "WuxiaWorld", + sourceCover: "https://www.wuxiaworld.com/Wu-Black-192.jpg", + sourceLanguage: "English", + }, +];