From 37816dc070abab7db043ef32545ebf32de373674 Mon Sep 17 00:00:00 2001 From: InFTord Date: Tue, 4 Jul 2023 00:51:40 +0500 Subject: [PATCH 1/8] fix: update buttons in version update to be m3 compliant --- app/src/main/res/layout/fragment_update.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_update.xml b/app/src/main/res/layout/fragment_update.xml index 7f756a0..dc4718a 100644 --- a/app/src/main/res/layout/fragment_update.xml +++ b/app/src/main/res/layout/fragment_update.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:padding="16dp" tools:context=".ui.fragment.UpdateFragment"> @@ -33,7 +34,8 @@ @@ -45,6 +47,8 @@ From e12cf9eadcfe8c5273c9878d38fa3e35e3bb852d Mon Sep 17 00:00:00 2001 From: Kayra Uylar <52961639+kuylar@users.noreply.github.com> Date: Thu, 24 Aug 2023 09:10:29 +0300 Subject: [PATCH 2/8] fix: app crashes on fragment change (#11) --- .../java/dev/kuylar/lighttube/ui/fragment/LibraryFragment.kt | 2 +- .../java/dev/kuylar/lighttube/ui/fragment/PlaylistFragment.kt | 2 +- .../dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt | 2 +- .../java/dev/kuylar/lighttube/ui/fragment/SearchFragment.kt | 2 +- .../dev/kuylar/lighttube/ui/fragment/SubscriptionsFragment.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/LibraryFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/LibraryFragment.kt index e69fe4d..025bc2f 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/LibraryFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/LibraryFragment.kt @@ -30,7 +30,7 @@ class LibraryFragment : Fragment() { ): View { binding = FragmentLibraryBinding.inflate(inflater) (activity as MainActivity).apply { - this@LibraryFragment.api = api + this@LibraryFragment.api = getApi() this@LibraryFragment.player = player } return binding.root diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlaylistFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlaylistFragment.kt index 77b2356..5f13aea 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlaylistFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlaylistFragment.kt @@ -35,7 +35,7 @@ class PlaylistFragment : Fragment() { id = it.getString("id")!! } (activity as MainActivity).apply { - this@PlaylistFragment.api = api + this@PlaylistFragment.api = getApi() supportActionBar?.title = "" } return binding.root diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt index 82bcc7d..2935004 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt @@ -36,7 +36,7 @@ class RecyclerViewFragment : Fragment() { ): View { binding = FragmentRecyclerviewBinding.inflate(inflater) (activity as MainActivity).apply { - this@RecyclerViewFragment.api = api + this@RecyclerViewFragment.api = getApi() this@RecyclerViewFragment.player = player } type = arguments?.getString("type")!! diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SearchFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SearchFragment.kt index cfe17c1..133b318 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SearchFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SearchFragment.kt @@ -35,7 +35,7 @@ class SearchFragment : Fragment() { ): View { binding = FragmentSearchBinding.inflate(inflater) (activity as MainActivity).apply { - this@SearchFragment.api = api + this@SearchFragment.api = getApi() this@SearchFragment.player = player } query = arguments?.getString("query") ?: "asdf" diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SubscriptionsFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SubscriptionsFragment.kt index e8d44a1..c4b88b0 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SubscriptionsFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/SubscriptionsFragment.kt @@ -34,7 +34,7 @@ class SubscriptionsFragment : Fragment() { ): View { binding = FragmentSubscriptionsBinding.inflate(inflater) (activity as MainActivity).apply { - this@SubscriptionsFragment.api = api + this@SubscriptionsFragment.api = getApi() this@SubscriptionsFragment.player = player } return binding.root From fdcd4b97079c69df295f0bfd628e141c873dccd3 Mon Sep 17 00:00:00 2001 From: Kayra Uylar <52961639+kuylar@users.noreply.github.com> Date: Sun, 27 Aug 2023 02:13:37 +0300 Subject: [PATCH 3/8] feat: app icon (#13) thanks @intergrav --- app/src/main/ic_launcher-playstore.png | Bin 0 -> 12235 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 ---- .../drawable-v26/ic_launcher_foreground.xml | 17 ++ .../res/drawable/ic_launcher_background.xml | 170 ------------------ .../res/drawable/ic_launcher_foreground.xml | 17 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 +- app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 2416 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 2416 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 1520 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 1520 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 3566 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 3566 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 5568 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 5568 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 7998 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 7998 bytes .../res/values/ic_launcher_background.xml | 4 + 18 files changed, 42 insertions(+), 206 deletions(-) create mode 100644 app/src/main/ic_launcher-playstore.png delete mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable-v26/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..1f266ede46e3a700be9ccdd0a1a2f3c1c94bb15f GIT binary patch literal 12235 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 yRQd#=20id - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-v26/ic_launcher_foreground.xml b/app/src/main/res/drawable-v26/ic_launcher_foreground.xml new file mode 100644 index 0000000..6b59593 --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_launcher_foreground.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..6b59593 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755..7353dbd 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755..7353dbd 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78ecd372343283f4157dcfd918ec5165bb3..87c6049d46d26a0127942ac8c8ae2c2e6f2fc45b 100644 GIT binary patch literal 2416 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 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..87c6049d46d26a0127942ac8c8ae2c2e6f2fc45b 100644 GIT binary patch literal 2416 zcmV-$36J(tNk&F!2><|BMM6+kP&iCn2><{uN5Byf^@f7BZJ3%r>|F>EF#*{dpqMg2 zH2J12ZF?HY`A?RanR$oDsDHzp3)uU=mZ+!Ovib)8FfJ-IJXITJCU398u6Up)Os;`Y zmrF-OK}|)LZQG{p%xBxSZTrQxZ9BQv(cXKm9e%wkq>?8jNRn;ZR$SYBwr$(CZR^|i zpMq`M))by?`@M7aZ3m9zw#_XWQj$gYk}t@$ZR^;c3$tz8wr$%sW81cE+qU!Kd7l5f zgRcrJvpiMI-d)}@w(-;{GX?|!0Lw#{D=Z=>NYWvB(`ph{&0>+LT8%NHMBx`$TQn*1nIUsx$rKfaZj{!#35p~17$;Z zM`Q$rZiBM<6yL;{?i|UGue3o;nb`CjjeLD)EE^}JE6SkmPmBbTeuErj$}NUv#B{=< z?l+R?H)uAQlSr9xjw)9fYouWfBf@NfU^-67c&W}!GlL+LEMys>=ej7@OUBfu_svsa zFs0y+bX0SfZJ|HZ5>ZeZEyh>8nsoY&=ez|lqLdNp_G-8>Xeg%O#dk$?L~KSKX#cpcujcogWh@t277ohqx7`P6nU8 zi`M>rrml|clEt&aj)2G-KlP=;l$@CBj{+m`qw#0-jzCaZw+OB!?uW463ma(gS>oxs zRp6uJLpbH-ZKf`X#MJsW)OOT(nZvClU!17r}xUrjM&6GMk z4U<`cDl*5h3WjzysVStkqLg}_tsw!*d!a2txWJ3}&fMXj}DF zI6`aO*c$+|G*D2}CnYlzCJ`6FN=k9|2X(p`rFwwShwAuU3}K@D%+$V1MpTq$JJ~4B ztHcn%Ja*7T>LkQ;m(URyZc6Blf%X3 zRB~x2{ujV4ih^L5&r}Z@@LI72cK38Pk4LbItpABaoL6454@M+ZK**#+ceRXDCXt|- ze9d18umj0M=xdhSV+i>~FE_nw*Obzfj=!*ET#}#-_)e}L(#Nbak6{liwNCN!o#g}P z9ZEX>%$}Kb6SvTVNfM89nS;`%Ft;AhBAi@J8m$Z+y~84QE8kf^aNfP7V~-tTYdJNq z_)Y?NFaI!~h`q37wE9R?UvbMYk?6o#kCKkwwq|BIUSl)1n?vVY>SX-h$-M;w028Fv zk7}#Cl*ozlb1QpKIo}}&8MN<&5z|v~^kk|iWc*I{kY4@5`Ccuj_Ba0ee}+(Ac6$4& zCGkSgC<#?hj6$o(rD;hZxL%Eue?VN?>4N)2npbYJAF7pH1wa(Izl5%Tp_dilYBz`Z zi=hA6-g^U4f^`I!D}hKBiH^vBfRxA6*H{37m$@zW9bouT7kwT)5roM8JT{`0+0pZy zu-P)A_0yxTa-s~t?T8!_f4NvZk5cjbK72cJLHbBZT|ayB#hG_Aq8z|J@jOL~ZkWm2 zQW|2!R{dC4$B1uhO;&;OS{uOMX9cFb9@U|jGW{%QdW5t&5yn_P@UxrxcmqxQ9e zh@Jt+ywppvfmbW2s0h!xIMr6+{l`?%@%s{m4fvq9keA|q= zVU`3wj^5w*y7QbnsZ{ov_RA9k@-2Tq|D-9xgvhp*IXORDXFe#GtAW82EleGj~T@M5Zs zdc|n|i2=UYJW!FC(V+Ysb{)@s{Tb@Y;UOMC?<77)1>^UtAbus9Xsl`d@DpJ4FO~5O zKyu(xUZ@cf-X*p=x_^kK#G{|ZuG3{B&H|@gw7-`RFz)#FoDo&}ew$$$O>f?GXH)_B z&l=e>6Y4w5NF+u+yowuN-aHaD0vUEC(f(b2e*D3)FaVM^@_Fh~;Nb9$v-$2d0aXOR z*xVoiShszBZ)fB?lCn*2J_Bq9CMt^xfMQ9VhZE~V1L@23>-I1GOKN;RhvyuMV&{So zpxeHX;-!~SAp8G_>Wr;yo6T4pq-Zv-NCBq%PF1@Ok!w~tDYEyV0bq7JiXXOCP zL+9GuEKz8vr(|VMp{CS52ak7+ubWbcI1zxku3K?t-(jtrSTdhUvZp@NPIP(iZo`?i zUCJ7fn5`L80j##orMLg+pFY=+;f-_8wSDd1G@td#n5c7GJD~(vEGhD9e)GY1q0mr_ zhPc^hGwOk+7oV0C`U5Q95O<=94gE5J3BdL6jnhti@wu1@&z^H)i-#|t1GxRQz-PoU zSP-r(Hv-si9873>@yg4B87MTgaG6G3JvDps`Rk3niT9uRV}fD=V6W*=0n7m|J9ny@ z-+u3zMga<`H$ID;->~1Q=Xx&h+^(4fn7{Wg#b@G=RTVmbHNbtxO6iHG51hzk;9?vF z3Q41(?R+St!5Nyj^-D^P2OdUFJbkcZrR={mn)gZpz}i?ZU0H4fu%2Aq5_Ra(;ilK` zJAaJ&ISexmqsl!-gR-@BdoxEG)E(o2KiJ>2o5d!*^vGh(%1ipP&J~iLzm!@hYpBhYX2iA5eSGQ=PNe?jkP5~@t i)OR1$ioStS-cv0mYOu?O1rD6z!7ktYe`cl@`;-Dq@Y0(A literal 2898 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..539dea20bde6a3682416f7f2986f46cfa32496eb 100644 GIT binary patch literal 1520 zcmVg%I?+Y3;W3lIJa$^ddBw@+qNqk zoo(AzXY&WxPHo%lKh?3F+y=&>pXI%lG6q{X>{nFMa;EL9*qUC-kU3?uVXK}9i>90w~Ei-e){^sul{%vfNiw3z@lQZ z;;Q1iA}EEl$ItwCFJ*vMk9Y9vT%J3fj9` zdNNJm!KLs3v&VF`Ni^3l_ zwDU9o>xop7dnHkNMxfBl*=!iF%{6tYf$E>>OZblQ`wma}0t?*pR|E^7K~P95;foR^ z$pR0eH#C0;+F!GNmAsohO4&V8UDN$0$$3TS#ezHU<1%O;95j+rYR*0z&tX> zL-%VqZsVaqSO7~D$?oa*0<;cMHXxk_pzK=oxLz8>D0LDX9TR5$M!$FXKF;>_0GwHN zO@z0vd`+xRswK>+}g z_8eC)xgB0K1jb)YSf2EZlXa)89|4JV$PNG&5s40~&H=6{d%pY75*T?f(=ti)PtyH3 z)+dPYm}?NdrTTxu-I=93w`_p1J$;tjY)kM`wZuj4u(t{Y_&h+r;eI9(#dmj3nE*Er zDgBd9HQr5vX7}dW%+m_+A(4JZIZy+_WP;VA}Px>WY6q2a0h_; z>RfvwTK*UdjGkA1-)>o>ap#t8%vY&X+})D^`L$8x&^RE(#L7XGzTG@%kL5Xe<3m3)^Db-C*qaNeC!ew;9&{O_;oQ8$}-{D_HzI8!$Usl>E<^XC<@mR|H*9gPsGs_149(UiNFw=cO!C4#MR3 z=E>--!8wchEkSYgwDqU`Oq|bPf1JV4LFXBZL{DopL3`qUiY+LI2YC#>`DyfOw(NWo zniB-0smHmW3T2VL-NjE6w+jU06Q3ci+e$E*xS5V~D5}1mepUQ_oM5_jC(`fSN-$iC z;vd;x^|SS>{St*gL%Ut=)}6@OP#0HTKM_Ckc5&3~uLkT$nsQL>H%I%|jVBVcKcfbX z?0#&GBPbE9hPIo6Z^7?U6mcEL9w#mph5UYOXselE{qaj4S{JqwG}lyY?_Q~ze%cMg zm!qs8rYMTSNc(&gzD&RD9ysK-E(j$hACf1Ct=!pK~Q@x!*K zf`8$OQ^gYm%L~g36i~>q*=!gBOOU@nFnnW8v;C#*-k10L{J;3&8|{UCCv1b9{mwDN Wy>w!kAVZM*^o8XUF9ij=(<3vXUGM1t literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!Tg%I?+Y3;W3lIJa$^ddBw@+qNqk zoo(AzXY&WxPHo%lKh?3F+y=&>pXI%lG6q{X>{nFMa;EL9*qUC-kU3?uVXK}9i>90w~Ei-e){^sul{%vfNiw3z@lQZ z;;Q1iA}EEl$ItwCFJ*vMk9Y9vT%J3fj9` zdNNJm!KLs3v&VF`Ni^3l_ zwDU9o>xop7dnHkNMxfBl*=!iF%{6tYf$E>>OZblQ`wma}0t?*pR|E^7K~P95;foR^ z$pR0eH#C0;+F!GNmAsohO4&V8UDN$0$$3TS#ezHU<1%O;95j+rYR*0z&tX> zL-%VqZsVaqSO7~D$?oa*0<;cMHXxk_pzK=oxLz8>D0LDX9TR5$M!$FXKF;>_0GwHN zO@z0vd`+xRswK>+}g z_8eC)xgB0K1jb)YSf2EZlXa)89|4JV$PNG&5s40~&H=6{d%pY75*T?f(=ti)PtyH3 z)+dPYm}?NdrTTxu-I=93w`_p1J$;tjY)kM`wZuj4u(t{Y_&h+r;eI9(#dmj3nE*Er zDgBd9HQr5vX7}dW%+m_+A(4JZIZy+_WP;VA}Px>WY6q2a0h_; z>RfvwTK*UdjGkA1-)>o>ap#t8%vY&X+})D^`L$8x&^RE(#L7XGzTG@%kL5Xe<3m3)^Db-C*qaNeC!ew;9&{O_;oQ8$}-{D_HzI8!$Usl>E<^XC<@mR|H*9gPsGs_149(UiNFw=cO!C4#MR3 z=E>--!8wchEkSYgwDqU`Oq|bPf1JV4LFXBZL{DopL3`qUiY+LI2YC#>`DyfOw(NWo zniB-0smHmW3T2VL-NjE6w+jU06Q3ci+e$E*xS5V~D5}1mepUQ_oM5_jC(`fSN-$iC z;vd;x^|SS>{St*gL%Ut=)}6@OP#0HTKM_Ckc5&3~uLkT$nsQL>H%I%|jVBVcKcfbX z?0#&GBPbE9hPIo6Z^7?U6mcEL9w#mph5UYOXselE{qaj4S{JqwG}lyY?_Q~ze%cMg zm!qs8rYMTSNc(&gzD&RD9ysK-E(j$hACf1Ct=!pK~Q@x!*K zf`8$OQ^gYm%L~g36i~>q*=!gBOOU@nFnnW8v;C#*-k10L{J;3&8|{UCCv1b9{mwDN Wy>w!kAVZM*^o8XUF9ij=(<3vXUGM1t literal 1772 zcmVQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a3070fe34c611c42c0d3ad3013a0dce358be0..b61e4936a0d4506d7fbf0dd0d6964b1168be558d 100644 GIT binary patch literal 3566 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 o*z0ZDv}vQaUwWvLo6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..b61e4936a0d4506d7fbf0dd0d6964b1168be558d 100644 GIT binary patch literal 3566 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 o*z0ZDv}vQaUwWvL;C3fBY6Q8_YSjb2%a=fc}4E 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 literal 2884 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 literal 5914 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNKNk&FC9{>PXMM6+kP&iB~9{>O^zrZgLHQ|D`f0ZLQ|C^rW^$yyj9UhHF z%u@F`GiGLHW@ct)W@ct)W@ct)W~OsapYA^AbYD5iDKpLn?+go73d2^7xvemtS}UY5 zYuv%Ea)+mM8JHbI=cE-{UwI}R1%axIZQIr+(gU<%Aob$z?z*^3ml{sdP<{!XHm8!rMx_+n$?V8^W{hU5tQdBXDO$=Bww>lhriY&^Obbv9HjqwB2pkC$q^|Q zMX6nc3=}o^_Y0loBA@YZuaI9N?ur~m!Nyy1B$7h;F zSuFb%)&;jg(JT}lLh&0E=Q%hzPy`urP8_a>yOp~z@NMI#1+O(fth`Wdw-G826jj(?X6{~5uoCKz6hkB|5xmHkS( zK8mlSsDN-vj3}x#rX$#_Lq(KEr%Uf=GZNkeKXa|?|Nom2eXBFo`PD32f}#Xenv3Gc zD6Ya!1&WO}tqxLxE*%wX30)1Z|Js)>A(~fHa`2bznGtCeif`i?hfzTvC0#}>o_M!2 zKQm@tJ*URsaMdWvMA1$cab8FZ={6(Bajvg=Of{>9Q|IKf?3-N}m2PkxXSQh}jilS~ zkCNZMF!nc4y*>r;d8Gf@qS9bgdWF{;b&zIs{qXYhplC?MA3Ii!rm4m%{$gB2de3oY z6xR-fj6jE%-+kP_U|BW!1Szj(s}Zpaik~s4g`=~XIqs&2)EPSFe<3NtP;b~arC$Ux+!Tl~MuI9LeOvpTJ99MRix5N*P!Qfd`=#Ju_9G5TBF8ivq$si>0`+psxwFV*D$>L6n4M0}U(iH$?J z%BWHYk?v-`C_~K&p|03C8CMxbw-xD~EMM#*WF+CCzSuY^tBX!Iq;<&`WsC;Jxp=5E zHYjc6g~#J*T(Ij6iofBrsW-ohAfg*TB7&i`U4P2iu2}~ZJ;g)a`Bgru_9E=tg{GUx z99Bf6<9M(7lOPj_qE7>`VCi_IQ_YG9TEaQZPy?WI$XFr@t3{TE{pE`&>dkQus1Zod zls1US4iWQd2$YRMaVb{^H3UXJx>^$)F{{xfymsK}6=Lp1NJ-i!z}j#|?xU1|5v55)$i8*@WeyH1CR{ z&s+l3IN16|6ut$%cu|#_NdJ{V&sScerp81VB+m=+HC7AAjSF&?0$;<4R8cC$Cq)ECQb^NPTa(? zTRF6jeGap$IaXm~-Z^H~0MdhTn$XO&bPSBq{$I7j_@u|f7T2!0YOc00`?BPi)=PGxqmib)l2xyCyl3@Il; z$`BI24nQbYE3a1;B5O%yoR;DPSzwX__91r?j;v&3XUw&P5~k7~ypIuXsgg{`CD_6~ zbEp8RCLKXU6Ci;VEiCJNa5D043WDaQDq@bv!<&%r{( zxQ(i^LFai61-m?+_DYq|wei?$>@SK)0>(+^QjQ@N$=BeNw-}X|sp0^Atmp%|7c=hE`|syP zO)9gq1*jdOGe11QJ;$xg&EsVR3&NkF{-Og_5XR0HS!5VFZ$+0lk_wZm9EV_uJ|Lx_ z*eGQPj$XGbvpI=ADCUofe;6jy6KwdBI}**sEhNsbeX~hLHhm1F6k~l@O54FA*AG!< zJF?u4zQd_xCE!|#AoBhxqkf!v);+((U2-rK&0m~9;@ zj}_{;@Pf(by^}LwPN*QnAr@(E94$Q*$z(ccH*2_OHgyOtXUVXQEh?0Db`%A7r1W5U z$GiGF=Uaw|hzCX;CoQ!K#;!R8cqSK8NcTA6DJN)MJdM%M}OA9W4A zi~_lv>1|}anxb0JSP~Z3dYy(ifm=YXA(qf^;@8n})r6GFbf8}5SON2ywuecS zHAV3TOwSC<=sH>(0}zrIitQ*d08vz-BS*_fI5Q3th19O}4czFiXHnJ^#U)V3_3)(z z#nZE9)E+Hwe%H?SIW7hAo)p=mYs)!WejT4; zt@aVz=q~0_*3%`@s6ATVG0fk+&HiX|fpq}@D=Bl3o=R%dzw^wv(Z5jA(}?M)Jy^)2 z*m%i6-?`ZHk_tRpI00D8_^X`krwP&kwc5%K_)GiMgO&6&{X*hUe6&zo5EQx(z}7jO zOw(Gxm>t4D;bf8t(g2kkFZx-8PllDeqwIr(Z>IbSvR1|u9C{17>sf9|s`%Cy?uhV# zCQp`@YH%l*eQpu$NQcjp%ZzZl+h(*yau?f>e_W z!%~H9j}lyWA(OX3WcU4wLd6p1>e#JpaSyp?IB83BafnWo^L3(T2JdJY>K}f?;V2?J zRo3o2-L63X?l?r!WinJ1yP07T5#%gRu~rK&s+6z8YT5P%ul;n8dN76M3~emg9wt6P3yMum|FPu@kMbhDAT12%!n0NF%#Bi8?MTS< z3aS3y6cp7kQYUWW59X6a&fgp>T-m13Q^gskTbhemF+jS&6rQbZd)qYC%P1w0@CvE^ z&J;wdW}qteILXV(xf^G74_sb>qgx(Y&-T_>{XKVsbb=`?SJT$qG_^z^(Om#o1$-x? z$iO&Nyx+Qv%%KX=ThV=nl0P<^{-E7#bBiVVm|vQ%0+3!Xg=Z?;8k@w{lBqV<_cH-O zI;N@O%NLkL&f4s1Y~-Bd5Re<%#|TUDFmn#b0ETCVWelwi4Pw34rR3`T5{-(*%u>a~ z%XBb+Xe@5kPaL9y7ggYBgI7Q%fGI3hI`(NMx!R40W7|I|5iy5jkSeC%z%_HBA=)bX z!T1x%P-togtGvjia4cz%R&rrzvcT&oIkwfHgk0^fLlFKagH*BOB^DM%&ebefHhh6n z7y1eR7h~|D^sL+ly*0UfNbFzBwJ34{gDAG;s*g-~&lpu4ppO;5GY-+yfE9jlPnEtk zx6L~Xq?6pfA;GUrC&OaFv6xKfjRoK$V;?g`6K?VZ`MZ?46}i{jm{emGFF-m$B$JFI z$o~d_M=Y2Zk}4H|v$S!QCdDZ_7q=X`s4#Md9=x6#j;Kb(mZ{>MAdMght&}CecRwrj zyd)CcVBUIAbZtLPKlecer{a(utm+xLyOdtJ{>F2{b>Bc|8dG!wKgZcYPv92G z)J$&!z$t=WM$>ZxxaSGTPQ{6v*y;}ROCx9I!CT+v7;TtTW+NBSTgf}3%5?tP(XA(` z^i8&H0XT-H#?kfbUL-$CjM(cK^1rz=&KmDHq6*bprZwC{^IW{ShqrBhQsZ?yJ*k?{ zTLW+i@^?isC_)G6AZ|K*!R}ISU?CbAu&@|=m|{ZJTeio#*#1AlHn$ ztpM12Kc*q5j7x{KkoI1iJ!Geg+$(fBrp~61xxDJF!Q0;8Wod3hn4TGuDEB&V zS=GGDnp6VVkpQr3wi_Z7e$X@!LfBPcK%D$}m=(iH-Z-?L7ge!u!o7{M?M;^GqcRTC zPHufr_}^G_su-{?6-0Tl0+pB5$lvXfNU zg=bLbuNKdrnGWfs*E&s@RAL36Kt_?yg{ErST=X2&L}%+3$<;rp#eo9hzjMPOjTC*M zYGK;cF>#PV@Y=pXp}#E_5|er=kRA+3s_LQ}muM~QwW(u{FGEGy4%*EF7ZCw62HqIm zz|VOffKL_Zlj_MO01%C-ah;c_34`vw1Qf+ZOBl#S0>tSiv%* zA%_NEM;8>;($`V6`2(m3)3nU#OwSBU8(SNOHjFvwXc1U)IsX-aOY={KApeGQ;=0^k)zpP=j3y=a41P|tOD3CGm z+F^dwwV`*uhFer1y=#nKX8`WOf$^D{v~umd%?ymC8|Jn0SRBR6-_^TOSfBp7C~zvKgrzECMD4 z9iY=X3xID_`3fDA#%=rzRa>SfC>=iyG78@KfB@q}$?Y2)Dw^?nvxG5JPVst$Vg(D(*(L(; z3oo336b~No?<8@sEEmcmdQ537OmY(ElHd|4XO>=zQLjLnQXT+ zk4Cztx<#d=j|Uoi(C!W(Ff@I#9u;eOijLr-Bjn@Yom>j454 zf)jxCXzj9MZ%cPs-ALK$PvqBM`-5pvebDkD5mW24A;qJ%y8*Cv3Q7fj=>#fA0GSPDncdjRn7^g2k&K-H?~4+vi> zJa92VpgN)DL*umicYOCzbe@G4K}q4oKhc(t<9$H$DK^#Tyk!8RniZl>(+eZY7B{Icy_6si?EJ|t#tWtdnq ziq<&HWl1aFL_@qK@IT5i%b1cvA4g_qM^|V+FaIX{C+G)A{AnZU21ITBo3j zL^rmoX}Q@byp&fz9BLkTZ9#yyu<25p8f@(rSyd!hY6p$1_6HE+=Uf?GWgvpgP~)H* zI79o}EtMmw0|wPv1eJt$#{j)Yjf7B!CSDZ$qsB?`wx}|GpYJ8|s2ZU2j8Uy0m*9*A z;Pl0ntxdfmN;UPGW(co6UvQwt>ttx<7k7(w3Mz_l?ExSI>VVz>&RtPehHIFWP8*iO z`{_t;pb9J_Tys=KZ~~Af0j)QHAc?8gtE?jt!Kd~ASQ|-$ zAd?Pi40PHvb-3Mr+R3d|b~hD49P-X*2cQTF+!=-nMval;jp2EG-k$(ao*ig>@iCML zAClZKQfuICo6cs3B>r4-1k?=h#$kT;|Bc6+-1ci4lJPOrAh_*S2_q>(PTS5nC@gD` zacG7bURx08uWWrf_Oyc&s_broq9CRmjaowiM0S2zT-sL?Tzzv^e6G^^Vk0I$`B zrRekOu_4nQwDe|+Zk477#t~9`hz7b+16s92nU2bqwVp~K+o?|L@?(< zb%59E!n62){T=&oRK`SqS!~T_K(K_#s>+6f)({D)lz_6yU_-yJyI2+Tlf2GY5E7-6 z?Lp(=Cij+*s_P9ct4akRU_h{hC8mMva~%K*38=lT8-j!S$q>=R^dy4NqS!QUpjY4C zxJ3dQ0E+AM;TmEHdu0HG3up`g7js@Cx!hy$+V10Te>X#&jmb$~XOppnCh&Xv(DI-D z2G77eb5@L)4sLHH8BFiX5Jph3{c~D(SC6;V9(W2ASiJ+h^JkR;GjB4<_R*Q&4 z6bSU`yzfpo9dBj0x4SZ>ZV&)lJHAV%flpDJUB=}BB0@r{GbEt#+Unc+{bq2urpNi1 zQ^50DW65Mep_)#%+buT-crq;g^SH9?TEZO61FuSr!IEchBv$}ZmEjrT`|&6wSR0XN za-$Y9;L#x7s_zjJsP%b$Jof$=Pli47>{vD?l~Be=M8WB*&2BK)03u96C?$l-Ac3e6 zonP++hAM9%Wk8WxOLGFB8^z{n&Kel3^s(K2)*mt4yYwP80K6KqYh6yJwpf;!Ozvg{ z;FAZ4a0#ipx54AJ*{{>nnfD1zGOS*!)zQ`9d7V}ZA236Jr^x&9Y|G959>cvQr20{L zL#^GC8Jr~`;-BELRapQ$iu?4(8%<|hceHNyqdtX%P2qW@3@E~=)$u$X86%3BrblSl z=u3U>XxiFzsx{Vf_U}^+z$2?F7XP#sSwQRvC&{Ek&nAgEg9!Ybidw4%zY;`zsJdeRr+P_aqT_QdT&oUlSa03tmkQ8P& z0PrmC)4NpCuE{WX8jm(>do|C;cKse_ipVoTJ*UNYqiQKnc)hh8UohF3?&0%%z0K8v zu|`{X3>lwX+PhD&BQd+sZXtZ!sR5!~Be4#EPhKS;6%tZ?b%V##Y@|h-%UPYC&imWH z28Z-vDaO5I3En09X-db3^5kcbXyeZ5xx~IGnp=c~_5O~p6|FDkG#zdEBOb%mE%B9k zL+j*QBC8&dGyu3*0eE*m`=bD`Mg}aLXf{aG{ISWN*VfQV*jrQ z4y{(J&6NZ9;Bc5ZuB2dCM4lOfLgiPu=DB9FHF$JIh6l^s%+>$w-2r%8vq)NM1hG*I zz^)qr8351XyvqJANxNoLLY-mo{K&|f^ycfm+Mdnncz3|pcH7VXInZAi5;V*Zo~1|6 z=sI=NJgAk&)P`EHSRQNGL!Q3GKzi9)UU;XTFAL{dZwbR|vDcYXT zd!dJqtW5n7kH=uhcmqp(Z!BZR>XTDlPC`o!5k)~yC{IeXI*M!h+!hd#@mIf@?q+zY z$MYi}@*gA1Q^xFS*toBGld-lB0 znHyT1(!C}xFRu>L6@5QymYdcB+l%nUR8033fS Al>h($ literal 3844 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 Al>h($ literal 7778 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..519d8b5 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #C63A3A + \ No newline at end of file From 400882b69d64466f1d07bf39dede73f396f5d8ce Mon Sep 17 00:00:00 2001 From: Kayra Uylar <52961639+kuylar@users.noreply.github.com> Date: Wed, 30 Aug 2023 12:47:59 +0300 Subject: [PATCH 4/8] fix: remove loading icon on recyclerview after new page loads (#17) --- .../kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt index 2935004..e736a1d 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/RecyclerViewFragment.kt @@ -71,15 +71,19 @@ class RecyclerViewFragment : Fragment() { thread { try { val (newItems, continuation) = getData(initial) - val start = items.size - items.addAll(newItems) contKey = continuation runOnUiThread { setLoading(false) + items.removeIf { it.getAsJsonPrimitive("type").asString == "continuationItemRenderer" } + binding.recycler.adapter!!.notifyItemRemoved(items.size) + + val start = items.size + items.addAll(newItems) binding.recycler.adapter!!.notifyItemRangeInserted( start, newItems.size ) + loading = false } } catch (e: IOException) { From 60a9d84a38edcad5ca0851442639e6c1e0d7cb11 Mon Sep 17 00:00:00 2001 From: Kayra Uylar Date: Wed, 30 Aug 2023 12:09:02 +0300 Subject: [PATCH 5/8] fix: hide comments button if comments aren't available for a video --- .../dev/kuylar/lighttube/api/LightTubeApi.kt | 14 ++++++++- .../dev/kuylar/lighttube/api/models/Enums.kt | 6 ++++ .../lighttube/api/models/LightTubeVideo.kt | 1 + .../kuylar/lighttube/ui/VideoPlayerManager.kt | 6 ++++ .../ui/fragment/VideoCommentsFragment.kt | 31 ++++++++----------- .../ui/fragment/VideoInfoFragment.kt | 12 +++++-- .../ui/viewholder/SlimVideoInfoRenderer.kt | 4 +++ .../res/layout/renderer_slim_video_info.xml | 1 + 8 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/dev/kuylar/lighttube/api/models/Enums.kt diff --git a/app/src/main/java/dev/kuylar/lighttube/api/LightTubeApi.kt b/app/src/main/java/dev/kuylar/lighttube/api/LightTubeApi.kt index 81c69c1..2ea1637 100644 --- a/app/src/main/java/dev/kuylar/lighttube/api/LightTubeApi.kt +++ b/app/src/main/java/dev/kuylar/lighttube/api/LightTubeApi.kt @@ -16,6 +16,7 @@ import dev.kuylar.lighttube.api.models.LightTubeUserInfo import dev.kuylar.lighttube.api.models.LightTubeVideo import dev.kuylar.lighttube.api.models.SearchResults import dev.kuylar.lighttube.api.models.SearchSuggestions +import dev.kuylar.lighttube.api.models.SortOrder import dev.kuylar.lighttube.api.models.SubscriptionFeedItem import okhttp3.OkHttpClient import okhttp3.Request @@ -146,7 +147,18 @@ class LightTubeApi(context: Context) { ) } - fun getComments(continuation: String): ApiResponse> { + fun getComments( + videoId: String, + sortBy: SortOrder + ): ApiResponse> { + return get( + object : TypeToken>>() {}, + "comments", + hashMapOf(Pair("id", videoId), Pair("sortBy", sortBy.toString())) + ) + } + + fun continueComments(continuation: String): ApiResponse> { return get( object : TypeToken>>() {}, "comments", diff --git a/app/src/main/java/dev/kuylar/lighttube/api/models/Enums.kt b/app/src/main/java/dev/kuylar/lighttube/api/models/Enums.kt new file mode 100644 index 0000000..7f2ef72 --- /dev/null +++ b/app/src/main/java/dev/kuylar/lighttube/api/models/Enums.kt @@ -0,0 +1,6 @@ +package dev.kuylar.lighttube.api.models + +enum class SortOrder { + TopComments, + NewestFirst +} \ No newline at end of file diff --git a/app/src/main/java/dev/kuylar/lighttube/api/models/LightTubeVideo.kt b/app/src/main/java/dev/kuylar/lighttube/api/models/LightTubeVideo.kt index cc52608..f0d6d26 100644 --- a/app/src/main/java/dev/kuylar/lighttube/api/models/LightTubeVideo.kt +++ b/app/src/main/java/dev/kuylar/lighttube/api/models/LightTubeVideo.kt @@ -18,6 +18,7 @@ class LightTubeVideo( val playlist: Any? = null, val chapters: ArrayList ) { + var showCommentsButton: Boolean = false fun getAsRenderer() : JsonObject { val gson = Gson() val asJson = gson.fromJson(gson.toJson(this), JsonObject::class.java) diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/VideoPlayerManager.kt b/app/src/main/java/dev/kuylar/lighttube/ui/VideoPlayerManager.kt index 6b7cc3d..e62dd75 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/VideoPlayerManager.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/VideoPlayerManager.kt @@ -442,6 +442,12 @@ class VideoPlayerManager(private val activity: MainActivity) : Player.Listener, } } + fun showCommentsButton() { + try { + (fragmentManager.findFragmentById(R.id.player_video_info) as VideoInfoFragment).showCommentsButton() + } catch (e: Exception) { } + } + fun setSheets(details: Boolean, comments: Boolean) { (fragmentManager.findFragmentById(R.id.player_video_info) as VideoInfoFragment).setSheets( details, diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoCommentsFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoCommentsFragment.kt index 43e0e08..eb88b9c 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoCommentsFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoCommentsFragment.kt @@ -12,7 +12,9 @@ import com.google.gson.JsonObject import dev.kuylar.lighttube.R import dev.kuylar.lighttube.api.LightTubeApi import dev.kuylar.lighttube.api.models.LightTubeException +import dev.kuylar.lighttube.api.models.SortOrder import dev.kuylar.lighttube.databinding.FragmentVideoCommentsBinding +import dev.kuylar.lighttube.ui.VideoPlayerManager import dev.kuylar.lighttube.ui.activity.MainActivity import dev.kuylar.lighttube.ui.adapter.RendererRecyclerAdapter import java.io.IOException @@ -23,12 +25,14 @@ class VideoCommentsFragment : Fragment() { private var loading: Boolean = false private val items: MutableList = mutableListOf() private lateinit var api: LightTubeApi + private lateinit var player: VideoPlayerManager private lateinit var binding: FragmentVideoCommentsBinding + private lateinit var id: String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { - commentsContinuation = it.getString("commentsContinuation") + id = it.getString("id")!! } } @@ -37,6 +41,7 @@ class VideoCommentsFragment : Fragment() { savedInstanceState: Bundle? ): View { api = (activity as MainActivity).getApi() + player = (activity as MainActivity).player binding = FragmentVideoCommentsBinding.inflate(inflater) return binding.root } @@ -51,21 +56,22 @@ class VideoCommentsFragment : Fragment() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) if (!recyclerView.canScrollVertically(1)) { - loadMore() + loadMore(false) } } }) - loadMore() + loadMore(true) } - private fun loadMore() { + private fun loadMore(initial: Boolean) { if (loading) return - if (commentsContinuation == null) return + if (!initial && commentsContinuation == null) return loading = true (activity as MainActivity).setLoading(true) thread { try { - val comments = api.getComments(commentsContinuation!!) + val comments = if (initial) api.getComments(id, SortOrder.TopComments) else api.continueComments(commentsContinuation!!) + if (initial) player.showCommentsButton() val start = items.size items.addAll(comments.data!!.contents) commentsContinuation = comments.data.continuation @@ -89,7 +95,7 @@ class VideoCommentsFragment : Fragment() { Snackbar.LENGTH_INDEFINITE ) sb.setAction(R.string.action_retry) { - loadMore() + loadMore(initial) sb.dismiss() } sb.show() @@ -99,17 +105,6 @@ class VideoCommentsFragment : Fragment() { activity?.runOnUiThread { loading = false (activity as MainActivity).setLoading(false) - val sb = Snackbar.make( - binding.root, - getString(R.string.error_lighttube, e.message), - Snackbar.LENGTH_INDEFINITE - ) - sb.setTextMaxLines(2) - sb.setAction(R.string.action_retry) { - loadMore() - sb.dismiss() - } - sb.show() } } } diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoInfoFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoInfoFragment.kt index 1b6e014..dd29d22 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoInfoFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/VideoInfoFragment.kt @@ -29,6 +29,7 @@ class VideoInfoFragment : Fragment() { private var playlistId: String? = null private lateinit var detailsSheet: BottomSheetBehavior private lateinit var commentsSheet: BottomSheetBehavior + private lateinit var adapter: RendererRecyclerAdapter private lateinit var binding: FragmentVideoInfoBinding private lateinit var api: LightTubeApi private lateinit var player: VideoPlayerManager @@ -90,14 +91,14 @@ class VideoInfoFragment : Fragment() { player.setChapters(video.id, video.chapters) items.add(video.getAsRenderer()) items.addAll(video.recommended) - val adapter = RendererRecyclerAdapter(items) + adapter = RendererRecyclerAdapter(items) binding.recyclerRecommended.layoutManager = LinearLayoutManager(context) binding.recyclerRecommended.adapter = adapter binding.recyclerRecommended.itemAnimator = null requireActivity().supportFragmentManager.beginTransaction().apply { replace(R.id.video_info_fragment, VideoDetailsFragment::class.java, bundleOf(Pair("video", Gson().toJson(video)))) - replace(R.id.comments_fragment, VideoCommentsFragment::class.java, bundleOf(Pair("commentsContinuation", video.commentsContinuation))) + replace(R.id.comments_fragment, VideoCommentsFragment::class.java, bundleOf(Pair("id", video.id))) }.commit() binding.sheetVideoDetailsClose.setOnClickListener { @@ -126,4 +127,11 @@ class VideoInfoFragment : Fragment() { detailsSheet.state = if (details) BottomSheetBehavior.STATE_EXPANDED else BottomSheetBehavior.STATE_HIDDEN commentsSheet.state = if (comments) BottomSheetBehavior.STATE_EXPANDED else BottomSheetBehavior.STATE_HIDDEN } + + fun showCommentsButton() { + val video = Gson().fromJson(items[0], LightTubeVideo::class.java) + video.showCommentsButton = true + items[0] = video.getAsRenderer() + adapter.notifyItemChanged(0) + } } \ No newline at end of file diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/viewholder/SlimVideoInfoRenderer.kt b/app/src/main/java/dev/kuylar/lighttube/ui/viewholder/SlimVideoInfoRenderer.kt index e0d3040..12710d7 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/viewholder/SlimVideoInfoRenderer.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/viewholder/SlimVideoInfoRenderer.kt @@ -2,6 +2,7 @@ package dev.kuylar.lighttube.ui.viewholder import android.content.Intent import android.os.Bundle +import android.view.View import androidx.navigation.findNavController import com.bumptech.glide.Glide import com.google.android.material.bottomsheet.BottomSheetBehavior @@ -24,6 +25,9 @@ open class SlimVideoInfoRenderer(private val binding: RendererSlimVideoInfoBindi binding.videoViews.text = video.viewCount binding.videoUploaded.text = video.dateText binding.buttonLike.text = video.likeCount + if (video.showCommentsButton) + binding.buttonComments.visibility = View.VISIBLE + Glide .with(activity) .load(video.channel.avatar) diff --git a/app/src/main/res/layout/renderer_slim_video_info.xml b/app/src/main/res/layout/renderer_slim_video_info.xml index 7cd4e63..aff897f 100644 --- a/app/src/main/res/layout/renderer_slim_video_info.xml +++ b/app/src/main/res/layout/renderer_slim_video_info.xml @@ -116,6 +116,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="4dp" android:text="@string/action_comments" + android:visibility="gone" app:icon="@drawable/ic_comments" /> Date: Wed, 30 Aug 2023 12:13:14 +0300 Subject: [PATCH 6/8] fix: make player settings scrollable --- .../res/layout/fragment_player_settings.xml | 393 +++++++++--------- 1 file changed, 199 insertions(+), 194 deletions(-) diff --git a/app/src/main/res/layout/fragment_player_settings.xml b/app/src/main/res/layout/fragment_player_settings.xml index 97cd8d2..7f3eb66 100644 --- a/app/src/main/res/layout/fragment_player_settings.xml +++ b/app/src/main/res/layout/fragment_player_settings.xml @@ -1,225 +1,230 @@ - + android:layout_height="match_parent"> - + android:orientation="vertical" + android:padding="12dp" + tools:context=".ui.fragment.PlayerSettingsFragment"> - - - - + android:orientation="vertical"> - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + - - + + + + + + + + + + + + android:background="?attr/selectableItemBackground" + android:gravity="center_vertical" + android:orientation="horizontal" + android:padding="10dp"> + + + + + + + + + - - - - - - - - - + android:orientation="vertical" + android:visibility="gone" /> - - - - - - - - - + android:orientation="vertical" + android:visibility="gone" /> - - - - + android:orientation="vertical" + android:visibility="gone" /> - - - - - - - - - - - - - - + + + \ No newline at end of file From 64a987516c5687b03d8b0da6676f6df188456308 Mon Sep 17 00:00:00 2001 From: Kayra Uylar Date: Wed, 30 Aug 2023 12:24:56 +0300 Subject: [PATCH 7/8] feat: add speed controls --- .../ui/fragment/PlayerSettingsFragment.kt | 25 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 26 insertions(+) diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt index 00ce74c..ae37314 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt @@ -34,6 +34,7 @@ class PlayerSettingsFragment( loadQualityMenu() loadSubtitleMenu() + loadSpeedMenu() binding.playerSettingsLoopValue.text = if (player.repeatMode == Player.REPEAT_MODE_ONE) getString(R.string.on) else getString(R.string.off) @@ -194,4 +195,28 @@ class PlayerSettingsFragment( binding.playerSettingsButtonCaption.visibility = View.GONE } } + + private fun loadSpeedMenu() { + val currentSpeed = player.playbackParameters.speed + + binding.playerSettingsSpeedValue.text = formatSpeedString(currentSpeed) + + floatArrayOf(0.25f, 0.5f, 0.75f, 1f, 1.25f, 1.5f, 1.75f, 2f).forEach { speed -> + binding.playerSettingsSpeed.addView(createMenuItem( + formatSpeedString(speed), + currentSpeed == speed + ) { + player.setPlaybackSpeed(speed) + dismissNow() + }) + } + } + + private fun formatSpeedString(speed: Float): String { + return when (speed) { + 1f -> getString(R.string.player_speed_default) + 2f -> getString(R.string.player_speed_template, "2") + else -> getString(R.string.player_speed_template, speed.toString()) + } + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f2b8e38..796afbf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -91,6 +91,7 @@ Your data is stored in the instance you chose (%s). Audio track Auto Normal + %sx New version available From 61c129b2f5884cb7057093ef9606a4533c361425 Mon Sep 17 00:00:00 2001 From: Kayra Uylar Date: Wed, 30 Aug 2023 12:41:00 +0300 Subject: [PATCH 8/8] feat: add audio tracks --- .../ui/fragment/PlayerSettingsFragment.kt | 42 ++++++++++++++++++- .../res/layout/fragment_player_settings.xml | 4 +- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt index ae37314..a3615f8 100644 --- a/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt +++ b/app/src/main/java/dev/kuylar/lighttube/ui/fragment/PlayerSettingsFragment.kt @@ -35,6 +35,7 @@ class PlayerSettingsFragment( loadQualityMenu() loadSubtitleMenu() loadSpeedMenu() + loadAudioTracksMenu() binding.playerSettingsLoopValue.text = if (player.repeatMode == Player.REPEAT_MODE_ONE) getString(R.string.on) else getString(R.string.off) @@ -54,7 +55,7 @@ class PlayerSettingsFragment( } binding.playerSettingsButtonAudio.setOnClickListener { binding.playerSettingsMain.visibility = View.GONE - binding.playerSettingsTrack.visibility = View.VISIBLE + binding.playerSettingsAudio.visibility = View.VISIBLE } when (defaultScreen) { @@ -219,4 +220,43 @@ class PlayerSettingsFragment( else -> getString(R.string.player_speed_template, speed.toString()) } } + + private fun loadAudioTracksMenu() { + val audioTracks = player.currentTracks.groups.filter { it.type == C.TRACK_TYPE_AUDIO } + if (audioTracks.size > 1) { + val params = + player.trackSelectionParameters.overrides.filter { it.key.type == C.TRACK_TYPE_AUDIO } + + binding.playerSettingsAudioValue.text = if (params.isEmpty()) { + getString(R.string.off) + } else { + val f = + audioTracks + .find { it.mediaTrackGroup.id == params.values.first()!!.mediaTrackGroup.id } + ?.getTrackFormat(0) + f?.label ?: f?.id ?: f?.language ?: getString(R.string.unavailable) + } + + for (group in audioTracks) { + val index = group.length - 1 // select the HQ one + val f = group.getTrackFormat(index) + val item = createMenuItem( + f.label ?: f.id ?: f.language ?: getString(R.string.unavailable), + if (params.isNotEmpty()) params.values.first()!!.mediaTrackGroup.id == group.mediaTrackGroup.id else false + ) { + player.trackSelectionParameters = player.trackSelectionParameters + .buildUpon() + .clearOverridesOfType(C.TRACK_TYPE_AUDIO) + .setOverrideForType( + TrackSelectionOverride(group.mediaTrackGroup, index) + ) + .build() + dismissNow() + } + binding.playerSettingsAudio.addView(item) + } + } else { + binding.playerSettingsButtonAudio.visibility = View.GONE + } + } } diff --git a/app/src/main/res/layout/fragment_player_settings.xml b/app/src/main/res/layout/fragment_player_settings.xml index 7f3eb66..f671871 100644 --- a/app/src/main/res/layout/fragment_player_settings.xml +++ b/app/src/main/res/layout/fragment_player_settings.xml @@ -192,7 +192,7 @@ android:text="@string/bullet" /> @@ -221,7 +221,7 @@ android:visibility="gone" />