From c3982326e4ba47cfb98870ad3721e8223d6470ac Mon Sep 17 00:00:00 2001 From: Aunali321 Date: Mon, 1 Aug 2022 01:16:27 +0530 Subject: [PATCH] feat: almost finished homescreen (hardcoded). --- lib/assets/images/reddit.png | Bin 0 -> 22247 bytes lib/assets/images/revanced.svg | 6 ++ lib/assets/images/revanced_afn.png | Bin 0 -> 24197 bytes lib/backend/api/github_api.dart | 17 ++++ lib/backend/api/manager_api.dart | 1 + lib/main.dart | 4 + lib/models/release.dart | 9 ++ lib/models/release_asset.dart | 4 + lib/ui/screens/home_screen.dart | 88 +++++++++-------- lib/ui/widgets/available_update.dart | 140 +++++++++++++++++++++++++++ lib/ui/widgets/installed_apps.dart | 85 ++++++++++++++++ lib/ui/widgets/latest_commit.dart | 43 ++++++++ pubspec.lock | 16 ++- pubspec.yaml | 2 + 14 files changed, 376 insertions(+), 39 deletions(-) create mode 100644 lib/assets/images/reddit.png create mode 100644 lib/assets/images/revanced.svg create mode 100644 lib/assets/images/revanced_afn.png create mode 100644 lib/backend/api/github_api.dart create mode 100644 lib/backend/api/manager_api.dart create mode 100644 lib/models/release.dart create mode 100644 lib/models/release_asset.dart create mode 100644 lib/ui/widgets/available_update.dart create mode 100644 lib/ui/widgets/installed_apps.dart create mode 100644 lib/ui/widgets/latest_commit.dart diff --git a/lib/assets/images/reddit.png b/lib/assets/images/reddit.png new file mode 100644 index 0000000000000000000000000000000000000000..941a12e6c3a588bee3fe6e097300b1a4018249a4 GIT binary patch literal 22247 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 E031{A9RL6T literal 0 HcmV?d00001 diff --git a/lib/assets/images/revanced.svg b/lib/assets/images/revanced.svg new file mode 100644 index 00000000..7318abbd --- /dev/null +++ b/lib/assets/images/revanced.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/lib/assets/images/revanced_afn.png b/lib/assets/images/revanced_afn.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2767f54fad69a35a0e6a389f373d36191bb937 GIT binary patch literal 24197 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

rJa_;|Se>xwBcvy7tZ zo{C<)`*+@rpHG4r84PCotYWwzch$Zs!`QB^xwM^$!6X)`2ymF~;lJSWOL2PLGHDB2ELbTLy}(JnVfWRj^)M|w(3V73Hz;R*U?CV#~iT(Y!sEhoQlZGqj;^ z+m|Cd3myIaW3B|-W>s8TA+jdtwz<&lZ+%yq#nZ0MmCj!)KIKrz%V^n_4PTwo=;DDzWTpX!c4{b|C|5oS5^D*Wn6ieUME%mYiIUxr)lvl z3 z%hUex#8w>q`8DYFTz@-J1_oinl}uaKZh5x(+urx{ub!NeEcxeZ_r}y8*VV#jY0N$C zyS#W|Bq*s)7F@-Us~-DNQi3};Y+hB=l!L|j`wBH;DphC9+sC@Rzg5ecDeB=wclmDp z`#TPL2{3$^=EbmOqRHG%kDcW;eHTpnB5SX{ukcsXjjt2?k3D+#PGNuX`JXNht7A$I z{``7DFLt^YqZ~s+0BeS{rpL`+)!eTYT_ut=L>K5T@$8Sj_kZ_AzIE%)b;rtE8nZpyubg~^C#|~Dt z`)h4sWw4s;C%WKDQ2nX$Uv=v*q;9#qFn_7x{<@F(%xTTSXBaNb^jXEQbSl%-E$=R` zYxFX@w|!Ic!}hf-vWFk_&kRcZwq)vpE8C4Wq=kN&8^p`7z?dVnAxMfpM67(iz+8pD zR+qgd?3;R0_eHVW%$w%m0`rFRuP}xM&LDNKmN+~uSedW-_tw|7duDrzc0KyAPc*!V zVZmO`(1uH%ty|_wtmyI9c4U5E8~>N(^QTvu2OVE_>WFy$GJeTo%&^6LAy6U*~`NJ2-!ka)j-PZP^ zXH|7I^QokdH|4KyXJW{8SivMRZ|nSHOADUv=Kf`!rMhDK^Cu0PJZrT<*(9tk(UpPW zsd5M-*ZXsqe>c?}`yCdfarO39QHPI9rY?xiivpD?ULGr$L~gmNe?M|*XL0jO&)31$ zVs$q-(=;}G+$XB-$PggsB)Z_jzKU0W7FhDVk1kZ@=*s@X^7*XvHSTbR1rJ)Z91@pu ziUw<)oqkAEea6Bc>;C@fs=D7bRe?c6Zy{GeM0jLq=E^Ie2y>sp;M~}|o@MF2sY{>F zlVxxKm4VA`1(V37oyGoKY3C~L zpSt$1HLPjDfn(s(s>n@-feRD@mx_Y5HY=6hcoE(BNP0(N=$ju85B~~dNSK!TGPLyH zq2rr%rm;FOE>ZvdveS0+>z(HJJAC!`%gnC(TQue1`uIP$8~nb2iZ|8iwP|nO>N7FS zh*S%0IJEIsFi)oHi)r_N#@1>FfKtd>mY30t4Kvk47`dLuq)*{a-IIUROF$(0RrJk| z&F!yiwHXea5m?30x_QU%mIW1;OqXq$R{HsOz55O()~mN~2fvT@RG;y6ErY{r&d>%Y zPxZQ1t)pdcSAI@@{a$yA5DV+Hu%>+*3k|l}RrF6)V8~Eh$Q7W`y?b}_Bk6cfuUc*I zwb_n|y0*`AYPA_II5~+f2&me%tLc-+Lr|#v3S00X=)TvisK}qKqKphC{Q;~RQ;xph z_$%1$ajiD<=lkLD51G2u*RtF#x?BY^zy)N0jiUbc#_#*|%XI#1*e42$aD!TqT$Q%d z)J@h9ABIPP9AKUwp&!H8FsDV!VWG|pWAzMv%@|K@$6sL!ZXn_u)K6%b=2fe0EmpVW z-gYLD%RjsVUPVXld2xn;VVTw#@p6T=G$ zCs78kVXyH{1 z0bY;6fq279KqLYj{x4ZJ7qB*zU7i|OdVcP9rPGV-8PaZkdbI~suOzIxSAOT?#!pv% z7T)czm+2OtE4p{DEu+Z!OU38bt!M7-dDCrs-bR|?0w1W-7u$B{yF*OT&8vnLw~sM& zz5K9m>e23VJPaDvpf<xZ@W`n&v10gp{bx|>U}PTrRpJ!3*Ig% zc)IH<^T(T_*RRPlA1$f4&&4ohVgPHywyke39)A_AeSK||c1$A^C^OcoX8fEQ&cZOI z6C`hbZ+jA`0NInDdYpfI6erUH6HueE<>S-^CObFf-cDu|x%{YqZfHEH9B`1dSji*O zHTl#N(;t_*gMaOrxcB#?#`m^HVw?6nU@;bn*u^)+&tUoci{Sb)0Gy;-w4Rt=4M@E+ zFMVFGZ+Y%I`**Lcop&&?PT8kFeO_^y&i+@QBqVQ!|KG>jpd`48p;akFalM=K)WVnf z2Z9&o=KK5C7O`r~6IlnU`!=rl&;0T6-Sbz}&oM0EC|SjD;UnMs=$miz4=voF_lv)N zO+IUbli(_b1B#k4mhUHvTOZ_ME&n=o`tfV*?+cqG8zR+17#ozA2%pK!O8u~{mr>;M z56)+?{`u?0Z!sOn0rgc>*z)g3@Q1?#`F-BMWm6Rx(pm#p8Tyj;>EJHW)q0_i^DH-hKDnHUVb;+lTns)S&y~J5e-Yid$SN~$Z@wzH zxLgnkvR7sHzog>5;L`Fss2FE|zfp+gz!uI>h6SC+{0)|$oT|P?(g9Yw`ONkcT@X;R zYQpuLl2tOkucAG(!KDnS4iujgU;pPze>p3I$)P1&3|lT#+&}doSNgRhcYqD3w4QzK zbu{CGM77WcC&QIaajvsNEQ5Age0t#gzx>O$FIUvV8yzRvKi~gB742^x>cdlbWW!4qGd_&Y>~(_fOHU+KypO z3^RH_onOya(U$M~_11k~%W%}BuF3N2S{>W(Zx|X5bA~b`i1qfo={_hpk~@EKvi=gv<(wEPu=fsS`@SS?Sv_&@@1)z`|7Yo>R4R(;TWMESS2JnMJKBA2&3fk2 z^8L&Aonm+RZM>3+L3LtS)1@n?c72upvev_AjYnMz_sMTh8>%W4DL3Q&>eY5Kz zhd37YeqWpO_grjP6T__;0jvyO8Gl%cXT?+=n#Cw`?Na@J&suGUTpy60X@{nI>;3K# zJ`+$79$#6RQ~P0FMCI4{EDUd*S1>W;ChW%8;Slygk39 zNfJ~nAN3M&_z6l!XJsHoi}qSj`(n2F8u4`uQ>Fy4GTaK`3JKbM4XSUJz$&N!AtzCW7YdJS zwdcncuAQm?sx7BBnyzMQcqFun!GZnOw-?F3!WOWwSzNy}NyKi|3 zh}@{Sf2vPDZ>tbXfC0#$g7*0d_qM&=$k3Jf@%Xt_>p@KmjXvmbM5NeXMuXGS!k@d| zpJU0`D^>IIXhN0Sw|Cv_`@WxuIPu9zC$1#y%eQYV0X8qKF0_iziT^Km7u3%@@CI6@ z=`Zy9{HF5R%^M}xpZ$8gZ=Z3Cc7Vgn-$gGi(~mC8-Fg=GV!Bqwb$=eme(f}7NbBMH!Q{?cdmxV$wkZWInJ5ZAgL6>$goUjZh~L1HmJ9@V8$_j zgZEWc)q5|9HCz*1#lXNTy{9(WHs)s0`@f7L!Cc|{cK@6m*2ECyv4V-=iP637ldd(b zVQ~cYmBH=%sRgVHPJ%4lvV`fj$yQLL=00c({T0SA3zVQtTp{`5>sp6K*?ZeJRa~6O zc;E|1C_}?C&&gW9!WR4p+Og>|JOArw#u=d8a-jq%IuHL2gN$-!%*^e#Tb9r2rSKJ+ z!h1nZ)y1g0W`ITy43v+BH(h#iYFlnUYk*I;eOXwos>gk<0~<@1hTkoIzV^hX7yJ#8 z+xA%L|9W2Aj&`Z9eREKjt(|Jn7@2&5O2gS8sUadA$+TE|8GCDPBFV z(u|?Pe6kk9fi)i5j+t4ia})ePW!z(J$LRgV(^rZ%aDx05In~c#{`ZsqucI58qJO=& zmyDL*<33UMfFLN4)_|ICQx!CpeOx(pw)q-<20o!x3=FLknLzDyaGUMd&(zlr3{Ij9 z3mQQEl`eJPwM$ADxOSi8Y4B4EVPxRa{S<#=$(4&TTWtg+WSRIzX^jg2``MKzc zsTbuLHs@59#(g!>fC-ivu_&R{r?Y6V(3bIX_>w}|8x}t*9A?V zRSXPEC#!{CySu~jK9|Uu1H7wC)-cGru3%!Aa;*Z?&Cuw(va#sh&UAJMbtv%g25?Rc_j^;(vLI^N-p+w3a*zkHh`!|)cA zc(zOhH$pzO9P*iATFZT|<9$taFvAw(gy- zYNOuUX6W|q9d|<7(r$;Y?8Y+H5Jm>8Ll53cKi=bC7j>WOOjG_H!xizY8Qvf*$&g|y z&F@usH@>!#_W0^rCO^g@xK$8$3%RnKLu{JvI*QQHR3vxkI8GOe3 zgtoj~cb3s4K0n`o&7Vi6j2HMoirqc59bf0&378)xd2_dZ!?UQLKSh^?Hf#e;n#^#i z&3Za{{x&`q-?S*!3~?t>hK9u+ji*$n$I9-WUuo9x%=5AqL#lcRBZEa-^TAW;EZP@b zGNYc}DL&8FU?jYXfx*Y|Rixk=hhpA48?+csfdbgTwMjGsJcd)teU77H6DTp7D6neR z|JphARQ5v8Y4N3%3{$2Cure%g)C~CfrYn1Hbemd4-O>P74gG~&3=VwN-~O1epUV>Utr`$k-zL~r)I@RZMDeULg|M8tMzzpP3HHkgB$qYYr-_|@z1Yw7Pbsvqb{gqMx}l?KF@Yx$Gv;=B0&8e4PlV0 zg>!Fzi(vSv^Xo<=V}Kgie6Q&Z4K=^SA{d!YffDis7iHyY(Q8hA;BYYlMZL+*ZSHFs z9Obxw`K)4i3Mxi3j23b|N&d?YanNMj?|<}<#l>+fFx+cv3pH2l#?H_AOc_2_t9c+6 ziQV{n#-BMOCjb0N#sD#p)nYgHKEKHzb^Z2jX@*qA5JrZKM%(iop$rS|a)vT6L?xu8 z{1_(O!jAmxFqVp5-yXp_YrC@5yVS+#l{N5ZSJcYgxGeH(@aC#TK(oX<34*Zx2D@*I$4 zW)c|n_hs~hIYvIAQNM5Q44%&w;0Fq3wN1a6dpG`Ko&uUESm60fY>phLfx{4-{*_$= zRH8UcUK6|7s$u2kU(8eHf>J!E&q{~KZ27yDA$jEj%d(IKhRVv-$A^4cPg?OdL{SNCNqG|Nss~!`smm`f5WgW@ATg9vx69KH3hIT zC@kOd&3HpvC_}H|Ql>53ARqgIhKQ=FtC(i&5?L`Li18Mv)1lBFofjn!N{0!rf@Vw# zt7iZUFK}cwU$d%wCCI9`e8E}{(V+M-QE1hy3RzItZ}Tf6XXpDyh75I(=QTkE($}r> z3k;R3zaO2Re@B4fEjY8WW;#8UmS$(pn6p)WL9DDe1A|QHtALH4n13!wy5(D*%hyn* z62izZ!zKUx$-?LLJ5BX|UHQpqqUXDOiSQ|gx8Pjdc(nUm&-hqgF zF4qn_R($@y5(7kobmrCcgtM=Ht>V8>GyC1H-TU56RtseSIXyQi;jGqP%?nD`Y8li( z^|zOAKG&9MFGU(oa)vTA1igwb_!TjuX!SjjjEPrf7TsO7by+Y&pA)DqJ@upWNuzWa z>xG(3rPRyY->sYP&Gz60$QPMQ&P};8cab@3)Ztb94#^;)hn5q0)_y&5ZuzUpnqjpJ zQp%8~!m>Mi5^H0=to+QJVYgS4;WAh_eUJIk&XkPakN2i*d6#^ZUBP}K7ej!?>GgY* z*slFiSD&=d71aG*v%9d_fOP>U$auvUzKz!|&1Sk#<0Q(E5VkaQ{%rF*65tGUcDh>7 zwYB>-K?4{J7h=HjFx6Ec-m#^k^R3PKUimhPd9Jp*zCJE`|2t-f*PynNDQ`38PV+SR!fE%mY_;|Y0w0t z4QW#$!Ddu(+ikBV!)AvSOblCE?ulgRf_R`lkV)wMrpw0A{*YZ1Z@7L>q2U!^mQXlWt%)EPi z6~D>-ihQrA?;Bq+2Y^G*OYhH>pM|H}^sOiI=x%y?@AvD~c77_%Q`!Sq87x3)C8{cz z;S{KV_t9AUi)T$_Z2VWoS^8_guZgY?250I8b3koL>n~wi8$Z?Wj?3rT(s56u;Tx#( zxHl=R=G`5O73Qo_DrSVoYpa46xCZ@vQ@Z-vD__PJ3ZRZ+ z@k;a5r{e1il_aB%bfz?%Qw?EkFx&R$l=h=(yzyeo9J*ilGJ+;57&4qQkEXw!6&hB% zz%?lU)PuLuYkx6-``TM3UYWhA?Ch%@zfPTI&e(Tl_9Q=*d{AM>0O~?A?$x{i3c(p2 z0jvyO?+*FTjeqa^GP=Nx;q3Oe7mp|1?UjBNti@0O>a|aq0!=J3-5|wkD8aqt-V{&? z$Y3G0kc(l;i377jtAZD_UaCyltI6O4Y7==Wto?CkXJJ4-*A|bcuRH6$f_BxIfEt9X z)BIHK@BA1B%J`ZtJM*rBWS%I6Fg7q^a_p>1b=e~X=%zLhaJZN>lF%)7Dr{ANamv!Ef0$YtiNQQrAn3~NDVMoy{< z4y*ep1dVKvv*MW$Y5 zk5c)%jOX6Ii>vqIMWmx8z&$T5C9?l|@0$3S}ULX~pB8y_SXRW;_!ocObf{B4w!hWJn z!QoX5v-1DA6lpDDZCE6{is69BOW($8Ua-IhwYM6QJ+$qzj~^0QZFfP+PlY)k%t@4C zhRZA8ot1}w?RXLVoc%)0O7qmazj!yk{oT(BX?gS++?ze=TJ4%&4xf9!FSD4)<8YHR zl;ME^dKp@K^>}9r!!1z#=9JI1W!60rhFhRf*}iFEwR!gnl4EM0K4mnCk9r@u{ok@1 zMfaH*!4sF1Z%$j_fr1xPV@U53x0yCGe}g-uv*B)&{|fJ&jt1xxaw=2 z5>^{DW0Kx))QYB|rbUZE#Lw2};%p|}h32dbv)orOIV3I#o&UQ2V-u+6+48FR@2jm< z!3+yLK@%doN|b)?s;>c+$4CWigPQOv27~M`%N(*_`Z6|L6I#V!pdB>9=*MbtaHVu^ z%E8-auY4IB#6U8OL1k(EPydb8|FaoQ;$Qjx{4_sz#ri)C3~N;AVD!7c{z#D;83>QjPnybcs-S~=m?Zm2Jw*31USJ@fTW`gFap5Loc)>waK_M}5o zOcpYM+~KJ{Y5Se;4h#&N{Z}xFbeT>pf+kUhE>Dnv=hRO(x8>*WH9z`ZcFQqPllc3x zC7PlP3nD<1Q*SDB>jU^emCToA3=SW`vu&68GN&%tzFJ#j*_Ypw4^8p?|ECBX0YUkv zz*SHHXu7(f?0voNv~#wa8uO}VfLc6hAGY;^LfoZA%i-ahKWA4vO>F`-EB-%X1?7Rv ztIvO31=aBmCqtMPBwP}%=u({Pv9IFA^TLxC?u*(5d^G<(C6FsnZ{Hi^!jn(u3$9>r z;G7x4$fYhi|5fPB*wi<^l9H00_vTGzKIM?l#ju5aAyCc!t?Ld z(Mw;K%?Mej6O``t%I{;k7{jUazxV?@`rk-%riDfA_F8TCy6$KHQk_M$?<`jfi$uTj z1&v1cm73qv31Dn6OAKPwSh9s_$~p$!cXo;yYp={Mx@&J2|9{r>oA)N}WptggD`;Kx zRF3`t}B>Cu5GKWZq?GAQWb3W_t(>HmJ|Qn`K-?(;yKIh=9jg*=X$U;n5l&@ za%q=VubERm>(DJRkGZC=|E-*pZ8uqPRe(zLyS?_H(V7`d47q+F<9?_dJ@Dr{>)DA_ z!IwhkZ(9G$C*}OSbmp|^SH6;aY8QvfGrSN0O)>kdHgV@#5yY4~DyI9Fw(s|D`?qc})6|sj#`e4!TSbl8AYWw^9 z_2#LdH4X=l91E|#l;Xeq*3Mu{jkU!ESD*KRhF=*NJX*9IG9#F0#r(PjiqCCU6XzU% zmp*T;{l~X&EiD(!1gF7wWlE9^73{C=9adhkcDnas&D3d&J@;y^Y%%lwSW>mXDDU>R z<4m(u*Z$J^`J?iy@ku68h6f%_q6E9b*>mIPl0G>GP;=iw zbLpd7uj@Y6luWuZds0|!P&wCRX~~S)TTE4iS`zv|pg#^8xn!9f#}j93{mLXg%KO}Vh>-Mb&} zn*M?2E^m3h^7Ulha{Jp`Ua8BsZwv39ckdyWfcw;4L6CxY{T&I06UTq?2UKN>u86yF zOD(+dSatBZ-#^c@Xjv{5U0|}7Nm%l|ujTv6^Tk#$FkDs&VZ7y}wchsq`#Lf3B!6U7 zrdOiZE8jw;$|||aE0a_2>9*!-`V=ZjGGws5ws*K48E31?_H6(9kk<}X!BNSto4>yZ zTj-b1#c+WOw20-ati3whz2Ez)4g{rSURD3PYze36toL^|Iy`;2F`@O`)MbJ2E(wFl z>;Tq`Y|WURpT8J`);BHk0Cl6Mn(h6w$#lM$@!Cr>gJx`c8C`z;yh`+EMuw=RbT~~T@xr(F{SW{6>-F2f1YQP_$)2JM7BBgH`uaSp`eWCd%HG$ntvh)<<Kp%TD#H_x0Y{E!?MdWrfHhn~(bcg{tH3 z%lE&L?Rtvi6Vp|9{E z>+|E~=Jm!J>*39?1p-=(46;d}m8r_f`cuvyyf>wH-;LH%l1&e!n-mG2UA5gQ>{OP09cEYdo_CzjVVgNPx8u}(*a|b0s zk>FRpKi@oG*XynKzb90lVZnu0=FYoeF=5r1MgUDPzQ3k89SK*))0ULiLr?YL=p31R)cVV;eNd||N5&sz%BrmO-YXA3+ zm;aOWixv5&(!*n3e`jRSkOi$y)U}fM zmV7?p{qF%kcrK7(!I>5<27#ujGbe=Ap8Ne|dGd#Ey?!dp47rXgm>AkQ!lIOGZG-c@ zqP~9I%F1x7Gk}$WPdOrU-p6}WRORjcK`DM(ixxvci^z&O-`&N*qpD9fzg)Nb>oNw0 z-1XXfU(K`5cb(>1&%jW+e*eEJn;#dHzaIBKZ)-hc)|J_xmS2yNj(%62@Fx3*8v|tM zT*fsjy7Jvm_$zSg}cmp@H+Ou7&Ns z&u@LfL6z^lS9A8h((>B7$6e(a7F?bY!q}kc(RlD#e*Q}PZG0scrd7Z1|6g#`^keh! z|M9Es7#!S#Lbw@tCHB-N|DAPKShnV@+Sg@Egil^yD`zm5iJ`>gwLQax%b&FM`x`;6 zRmZsspx#KC``#8Y1_qGa?Rn|*YG0=m#NU_9jZT@pEb!fpA8U8iUA&t+XOnPF;or7eP~gok0tV-dUzkuhR9H!Ng!-3hISUyt1Df=<+y7i%J_&h76! zDsR2{U&Y5o#*1gpljioFcjKq|#^*EVAA4teKI$zaLxvJ)me_|Y{1S^dXc2k&G0BYy z2PMDC`@i>pvh#UeVEyc6es161$#MtP1@Z^@EM#EVG7YlyzugP8bK-)*$lCkBFnD$V zfF@=b7*2q)G6Tbek+~IxP;@MmTa^;Y1KNVc5FExInq_Du1WL6y_V`#xth!?4x)r2? z*Fs{|j(?ziT^9sigSRDF%J77``GR)=nLN7itKSd2%ZQC98oW6vrDX{kAiXmd z-C7v%bo+6L%#2l0Wf~zb>w>|%jtpG4>bODnY?-{9TD8LH&*_B=L7Ec0w6@-|RtsIj z0NTssb1>su-{e!!9Zn%vHZ9!lH1*aEYmnT5jj8N>vqMh0{Z|BOwAgm>aa%0J5m!F4 z|NFNg;OH;V?zICUJpV7>|9|-Q!Y+tgSFVu%U1=R6SsEk>Iyd1)mh;Q6w-=uJ$X*88 z#l+wqe!6c)$j$s95br@mRwU2T?fI=*hYvezh6t_!StS$tR{qj!Wk0R!potv@2KV9@ zH_i(#^ja1U){>#d6`HlR`LQ-gt{f`olOEymf5y%G7+>pOxt=Hr@A31?|HGeaZkbwMe zz+e%idvD@QAA^;jo&|v1`GK!J{-5VP(N#MbKpQ_l;LVFlQ?JOa@v3Y;=`5NGPJw~l zHw-WK`%A6TSPcp-k1XN5&mn!k`XOAayBVp!UF>VF1gNT6h=W{yA+YZE?PKbpYTij8 zv#p$SuYdS(q2;TFJAbH}Cq&Hgt;Y3<{ZgxBe3G)7K>l0cEc@eLioE5oC0YahkgOuAiG5Drs3*!n0Q?JvBc}|a}I4#!f~j6 zX|-YRME~=mtB$O=4Biwhz4GX{=G&IR)3rk+>we~M@Bf?Q4AOjoElcozAKTN}At!%M z1__7+HLte!d>3#OVyRfsntv)gokbz$TA$e6JGnkc6;f#ADja|1Z?rZ*RcrBVP)=B| zBunuA>CL|;`)G%F+Gnm6yA2lY$@&=Z#AL7M)L;H_zvDpBIpzF^58n3oWh{N|Lw>Fm zRRD!uP1eMEFV&f4D~xPxOmbK`7#J8d=3dN+Vy{?czjD%*P3yrSSINV>|IhZ@$x^d~ zR>}P8mjIttAhaTN>;H@Q{#v`2re!kN#c#J&U9fE#qp|7DQ_0qHmeTIZM%Gar=7(CO zdHKwvesEt)nJu~LZbsoV9?Rl1U$aoRd#`!C;|gO_gL9v}%YT=l|iQu9}@y^CtmiXL)uqo zh3%D!6+!Q6H|9c2vASGhEOn(Ocj&;$J4;_8F9F4orI5v38S=)Oigl+m$s_z+w*C zJZj>ztrq{;yx;8E%fx6Bf=_tDR}tFA12 zSp^c&iRxQhxiuuKm_PK@=Tkd>DS$#Jp|QxXID6%lXZJ%^p8eSjQdi*=C~lk7CnmHi zV>O819r9G5SieGN*~*~HVW4mpTdeWDEbqu1U7e7N5P?KN-Kn=8&C)W>1r;+1`@}8< zt<*Jv%09~s)SY@OX*NvOPV8FHN?jY6Y~nUb=10GB01S zS2KYN*gvfbK*InDrO!LZp={xmSMNHpyzd3&umsXgA zbkxO8l=soQUg@M0*d=E9cei~_oUMv?HX{Q=!}3#>def_|&67^vGW_@1V;-L!D4#Vf z*S;mN;!2e0sw?G7S8vG#*Qa%kaz5wWy|-wE%#`%gYhMaVOb3Lg)jIw3TpJNmJw+H) zqa4uJNHW;D=Zx?v|E&1nrDoO}=X8Udu;R&-b=y}i4a&ayb^c{nrqBdDqh|?pw>2p9)-DoPTFs)6}zIL)^|4?!0q*r=afDcOU0FA3pgMEP5>G z&GMs-UTd#Dwr@{Mc3AGW91^e%`?9~@IKR-Z=f8{Wv7)3vJ>h+Bu&JxeIMSO>~<8S`(-O`XT0we_B9Xx2AS#&y{JCAI%l;NF`n zi>CYq<(CUudv7i-3ek6-8YQ}>rtH&`nb(z%x`7<#J^Ay4nw`I&-d~jdYkTn1j+Y0Y zbb+;Ou-R;@RUMz>&i}Ot6yx{TuV4Oh!@c!Jpmsn)Vo=}f-__RPiQ6t4VqjpH zv45Z5vf7~a;#cinUVL;bPVYD<*O;Bqti5m@q7AJv~%5W-cPHgJ3!U> zfkM%b37_s&#PlV%u1Q%DBz=GX_P0tP8JXK}F8TlTEi?~1bE-{i>o27V37|qYE-I2$ z>;07SZl$mbUhP_@%cn6iFg$qr#HJ!$)KA_1tXJ&+N-2oo(KVM|K3Oif>d4~Y)BMYx z&y51bWqS11%P0MnLn>3m*6^@^^7x1BR}QK5-_KoLP^I@{=Ee8duU{@H*j<%%4OHt? z=sexAZ~yjU)fs}T{xn_Ox!o*i*1dK2c|mELPayBz`*(ZfZPY?4xekINLgv)%?`8XI ztba&aht6AcFJVq`4ah4SE`9oT__3Z%ri9JaAOH5g-8wmapO>Z{D0J4$Tf`M|Z)N{( zmj4bbKJkEChhZTT*(ZN~YJT+Y198sKd53i(EDOKg){3YEm1_(B%du&dcPmwBEj(2$ zb^reVoVQnQYK3=#GJnHAp%pgj3r}%N)bHP~8UZ>O?l_B|t4W%DYIEgMp!;?!@g%gIfOupB}Yn9ajKrzrD)g>A@>EpG=?9 zlq@~BI$L?^%eTKkr&KoZov_^YD4}ShPPb8orqk3mjxYuWh8JC0JUe#o-~G9+K&N?u z;M05Jw<`@Qcc1zN%5@FXye!vohs;t8$qd+gMV)`yb5>CBZwc%w$*s?S?sb9Vv3;?@ zufM;lX7S~P`@aX(l@8ozn5N#f4sSlj5&A5}Buf5hew%!#|Ay0`5=kc%TGW}G@_cG3 z*?;=ukKfh*HojpFJ;FEIc)*_x=6fDM-O}RP$59CqGbj zYuYKWO6S0j-+$L`6;9v3cGA>xP~<<;%YT0G%idoLybR3CR_R=LaVJ_@)A!$Xrf3ER zhG$EEx&43k<=_*qNU>CdaHpxP#gd>>)Qb;6fX2^+V?>@ zAX3LVblQWDsS4bnCac9hrRN8$_5SG03rOwk)7h}rUk}{8+cUwPJ2Uo2B$st))PZ>* z?QtQe3Tr`Ow85lo)s_P}=T9Y6**(7jN^(C+Q~h2tH=g<=`9HJsV|l9OzWVpeY(WA0 zr>p&UaM^o{x=Tz>Q>V>*8yRW+`MSx8`Yw;fpibVYoLvtSiuT?4zlkI2px@MKo6j>;iy@gSZ(3aV{(YS^I}-y#M5gP!W!+Ej&Hc|8<-X!l(dNPh;8dJ1 z0hX0@KUO=(J5Temy=-7V^U;(afnHG{N7#nPf8UvQXZc@~P^&|w3JeSlQy=W|Z_ij& zGC_440|Ud~$we{q<$TsnOATb3yI|!d$I|T7w^#4q>pA$q#p~m8P&PZAb~@vI?dH$% zj|(mNtejU|3jA8X<>TM#`4LIn3=9`yEgyy1%-EAInQJcj|7GJ%q1!J%WPLrk2he_m_KTvobI&_$#+H_}ujW|Lbo%F3()`rRN$K1A{|$ z=JGE+%e>BKtYu(e*y3M%Q(fLiFKhXi?qy#6y>71;SCm$mF8$%nz`(G9=WFWx(@)LI zw>8}pT(zd5N=3t$efw(v@1SJ6LBR6T)`}00+fyT_IO=nThMjn^)qMSugJ1Lyi83%W z{5)y7O^Ho@N_D)%*O!*opPbPkEM_HA@&a5lxTRB3*?!34o{eJnB|IRy@7#Kc0>iMg?(E*D(& zA;xX-*T6r|rfO?0o8F?$z~C^SGq@toNi^=n;nZ#G_vnMH`{g#{P`A*k4?$oB@f^Vw zkxrt0t{}ITOf_hIEVSxEN8}D8$-JlxZU%-ea}8RTafD{f$#!I5aF9Ohr|f^ZG?B|! zaFv01>5ibiJEsKYurV+kD4Jq<=_@px8F__P8I&)+e(z3?W8MC$jj>z|3=KyGmKl^g ziHbdY7$KQFW&+m^Hiw4M{(z`)?}KE%=MPS>0~uAmn}3%Ta1B``8HoU4*qa-`or z@AhOTan8^eyo{j0ns-sI%5{a4{#id0{?!es65=s}ObiWAXU4wue0h1sv1tme`vg~Q z5CSy|B%5ERJ^7NZE5^VuV|9D7t>FA)2cJyaDEG@}#i3IdlNcEq+^#B~Dtq#$@JK?m zbZe+mNa9o5dq*cF1)pGIU^xH9z@^gUQu0Zi)jlhj{AaZ4upjP~cw&|Dv$$)EAOpjO zU8iJ1D~!(0zve5V$o0o%1=D#0Y4NJ3Q?(*yhBc6J^G_Y%n zT$4BhLt3Nfl&jkdzV7ggtX=!#s*cG@@#AtbQ<{V$`t~ymZ@=mCuv;H=>Met(tDnm{ Hr-UW|BBFW` literal 0 HcmV?d00001 diff --git a/lib/backend/api/github_api.dart b/lib/backend/api/github_api.dart new file mode 100644 index 00000000..5823e191 --- /dev/null +++ b/lib/backend/api/github_api.dart @@ -0,0 +1,17 @@ +import 'package:github/github.dart'; + +class GithubAPI { + var github = GitHub(); + + Future latestRelease(String org, repoName) async { + var latestRelease = await github.repositories + .getLatestRelease(RepositorySlug(org, repoName)); + var dlurl = latestRelease.assets?.first.browserDownloadUrl; + print(dlurl); + return latestRelease; + } +} + +void main(List args) { + GithubAPI().latestRelease('revanced', 'revanced-patches'); +} diff --git a/lib/backend/api/manager_api.dart b/lib/backend/api/manager_api.dart new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lib/backend/api/manager_api.dart @@ -0,0 +1 @@ + diff --git a/lib/main.dart b/lib/main.dart index d92f3e3a..a4379dad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:revanced_manager_flutter/ui/screens/home_screen.dart'; import 'package:revanced_manager_flutter/ui/screens/patcher_screen.dart'; import 'constants.dart'; @@ -17,6 +18,9 @@ class MyApp extends StatelessWidget { title: 'ReVanced Manager', theme: ThemeData.light().copyWith( backgroundColor: Colors.red, + textTheme: GoogleFonts.interTextTheme( + Theme.of(context).textTheme, + ), useMaterial3: true, colorScheme: const ColorScheme.light( primary: purple40, diff --git a/lib/models/release.dart b/lib/models/release.dart new file mode 100644 index 00000000..6b94de84 --- /dev/null +++ b/lib/models/release.dart @@ -0,0 +1,9 @@ +import 'package:revanced_manager_flutter/models/release_asset.dart'; + +class Release { + String? tagName; + String? publishedAt; + bool? isPrerelease; + List? assets; + String? body; +} diff --git a/lib/models/release_asset.dart b/lib/models/release_asset.dart new file mode 100644 index 00000000..3e65b7a8 --- /dev/null +++ b/lib/models/release_asset.dart @@ -0,0 +1,4 @@ +class ReleaseAsset { + String? downloadUrl; + String? name; +} diff --git a/lib/ui/screens/home_screen.dart b/lib/ui/screens/home_screen.dart index 61897628..735c257b 100644 --- a/lib/ui/screens/home_screen.dart +++ b/lib/ui/screens/home_screen.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:revanced_manager_flutter/ui/widgets/available_update.dart'; +import 'package:revanced_manager_flutter/ui/widgets/installed_apps.dart'; +import 'package:revanced_manager_flutter/ui/widgets/latest_commit.dart'; class HomeScreen extends StatelessWidget { const HomeScreen({Key? key}) : super(key: key); @@ -8,52 +11,61 @@ class HomeScreen extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( body: SafeArea( - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 0.0, - horizontal: 24.0, - ), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "ReVanced Manager", - style: GoogleFonts.manrope( - fontSize: 24, - fontWeight: FontWeight.w500, - ), - ), - IconButton( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 0.0, + horizontal: 20.0, + ), + child: Column( + children: [ + Align( + alignment: Alignment.topRight, + child: IconButton( onPressed: () {}, icon: const Icon( Icons.more_vert, ), - ) - ], - ), - const SizedBox(height: 12), - Align( - alignment: Alignment.topLeft, - child: Text( - "Dashboard", - style: GoogleFonts.lato( - fontSize: 32, ), ), - ), - const SizedBox(height: 12), - Align( - alignment: Alignment.topLeft, - child: Text( - "ReVanced Updates", - style: GoogleFonts.lato( - fontSize: 22, + const SizedBox(height: 60), + Align( + alignment: Alignment.topLeft, + child: Text( + "Dashboard", + style: GoogleFonts.inter( + fontSize: 28, + ), ), ), - ), - ], + const SizedBox(height: 23), + Align( + alignment: Alignment.topLeft, + child: Text( + "ReVanced Updates", + style: GoogleFonts.inter( + fontSize: 18, + ), + ), + ), + const SizedBox(height: 10), + const LatestCommitWidget(), + const SizedBox(height: 14), + Align( + alignment: Alignment.topLeft, + child: Text( + "Patched Applications", + style: GoogleFonts.inter( + fontSize: 18, + ), + ), + ), + const SizedBox(height: 14), + const AvailableUpdatesWidget(), + const SizedBox(height: 15), + const InstalledAppsWidget(), + ], + ), ), ), ), diff --git a/lib/ui/widgets/available_update.dart b/lib/ui/widgets/available_update.dart new file mode 100644 index 00000000..4015bfcf --- /dev/null +++ b/lib/ui/widgets/available_update.dart @@ -0,0 +1,140 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; + +class AvailableUpdatesWidget extends StatelessWidget { + const AvailableUpdatesWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: const Color(0xff1B222B), + ), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Updates Available(2)", + style: GoogleFonts.inter( + fontSize: 16, + color: const Color(0xff7792BA), + fontWeight: FontWeight.w500, + ), + ), + TextButton( + onPressed: () {}, + style: TextButton.styleFrom( + primary: Colors.white, + backgroundColor: const Color(0xff7792BA), + padding: const EdgeInsets.symmetric( + vertical: 8, + horizontal: 18, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + ), + ), + child: const Text("Patch all"), + ) + ], + ), + ListTile( + horizontalTitleGap: 12.0, + leading: SvgPicture.asset( + "lib/assets/images/revanced.svg", + height: 26, + width: 26, + ), + title: Text( + "ReVanced", + style: GoogleFonts.roboto( + color: const Color(0xff7792BA), + ), + ), + subtitle: const Text("Released 2 days ago"), + trailing: TextButton( + onPressed: () {}, + style: TextButton.styleFrom( + side: const BorderSide( + color: Color(0xff7792BA), + width: 1, + ), + primary: Colors.white, + padding: const EdgeInsets.symmetric( + vertical: 10, + horizontal: 24, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + ), + ), + child: const Text("Patch"), + ), + ), + ListTile( + horizontalTitleGap: 12.0, + leading: const Image( + image: AssetImage("lib/assets/images/reddit.png"), + height: 39, + width: 39, + ), + title: Text( + "ReReddit", + style: GoogleFonts.roboto( + color: const Color(0xff7792BA), + ), + ), + subtitle: const Text("Released 1 month ago"), + trailing: TextButton( + onPressed: () {}, + style: TextButton.styleFrom( + side: const BorderSide( + color: Color(0xff7792BA), + width: 1, + ), + primary: Colors.white, + padding: const EdgeInsets.symmetric( + vertical: 10, + horizontal: 24, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + ), + ), + child: const Text("Patch"), + ), + ), + const SizedBox(height: 4), + Text( + "Changelog", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + fontWeight: FontWeight.w700, + ), + ), + const SizedBox(height: 4), + Text( + "fix: we made the player even worse (you love)", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + ), + ), + const SizedBox(height: 4), + Text( + "chore: guhhughghu", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + ), + ), + ], + ), + ); + } +} diff --git a/lib/ui/widgets/installed_apps.dart b/lib/ui/widgets/installed_apps.dart new file mode 100644 index 00000000..7ecefd59 --- /dev/null +++ b/lib/ui/widgets/installed_apps.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +class InstalledAppsWidget extends StatelessWidget { + const InstalledAppsWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: const Color(0xff1B222B), + ), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + "Total Installed(3)", + style: GoogleFonts.inter( + fontSize: 16, + color: const Color(0xff7792BA), + fontWeight: FontWeight.w500, + ), + ), + ListTile( + horizontalTitleGap: 12.0, + leading: const Image( + image: AssetImage("lib/assets/images/reddit.png"), + height: 39, + width: 39, + ), + title: Text( + "ReVanced", + style: GoogleFonts.roboto( + color: const Color(0xff7792BA), + ), + ), + subtitle: const Text("Released 2 days ago"), + trailing: TextButton( + onPressed: () {}, + style: TextButton.styleFrom( + side: const BorderSide( + color: Color(0xff7792BA), + width: 1, + ), + primary: Colors.white, + padding: const EdgeInsets.symmetric( + vertical: 10, + horizontal: 24, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + ), + ), + child: const Text("Patch"), + ), + ), + Text( + "Changelog", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + fontWeight: FontWeight.w700, + ), + ), + const SizedBox(height: 4), + Text( + "fix: we made the player even worse (you love)", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + ), + ), + const SizedBox(height: 4), + Text( + "chore: guhhughghu", + style: GoogleFonts.roboto( + color: const Color(0xff8691A0), + ), + ), + ], + ), + ); + } +} diff --git a/lib/ui/widgets/latest_commit.dart b/lib/ui/widgets/latest_commit.dart new file mode 100644 index 00000000..f28a536b --- /dev/null +++ b/lib/ui/widgets/latest_commit.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; + +class LatestCommitWidget extends StatelessWidget { + const LatestCommitWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: const Color(0xff1B222B), + ), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: const [ + Text("Patcher: 20 hours ago"), + Text("Manager: 3 days ago"), + ], + ), + TextButton( + onPressed: () {}, + style: TextButton.styleFrom( + primary: Colors.white, + backgroundColor: const Color(0xff7792BA), + padding: const EdgeInsets.symmetric( + vertical: 10, + horizontal: 24, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + ), + ), + child: const Text("Update Manager"), + ) + ], + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 0cb735e1..133a2d47 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -102,6 +102,13 @@ packages: description: flutter source: sdk version: "0.0.0" + github: + dependency: "direct main" + description: + name: github + url: "https://pub.dartlang.org" + source: hosted + version: "9.4.0" google_fonts: dependency: "direct main" description: @@ -110,7 +117,7 @@ packages: source: hosted version: "3.0.1" http: - dependency: transitive + dependency: "direct main" description: name: http url: "https://pub.dartlang.org" @@ -123,6 +130,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.1" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.6.0" lints: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 8b61cf6f..6dba6bec 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,8 @@ dependencies: cupertino_icons: ^1.0.2 flutter_svg: ^1.1.1+1 google_fonts: ^3.0.1 + http: ^0.13.4 + github: ^9.4.0 dev_dependencies: flutter_test: