From 9f4c6a427c3f70f0f7d1797bcba87192e3a42b8f Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Sat, 29 Jun 2024 19:02:34 +0530 Subject: [PATCH 01/20] project rebranding to Sangeet --- CONTRIBUTING.md | 10 +- README.md | 20 +- assets/app_icon.ico | Bin 2039 -> 17326 bytes assets/music.png | Bin 21727 -> 31183 bytes data.json | 5600 ----------------- lib/apis/artist_api.dart | 6 +- lib/apis/song_api.dart | 6 +- lib/core/constants.dart | 2 +- lib/core/type_defs.dart | 2 +- lib/frame/commons.dart | 10 +- lib/frame/home.dart | 12 +- lib/frame/widgets/sidebar.dart | 2 +- .../controllers/explore_controller.dart | 10 +- lib/functions/explore/views/explore_view.dart | 6 +- .../notification/song_notifications.dart | 4 +- .../player/controllers/player_controller.dart | 8 +- lib/functions/player/views/playlist_view.dart | 4 +- .../player/widgets/base_audio_player.dart | 10 +- .../widgets/player_control_buttons.dart | 2 +- .../search/controllers/search_controller.dart | 4 +- lib/functions/search/views/search_view.dart | 10 +- lib/functions/search/widgets/song_tile.dart | 2 +- .../controllers/settings_controller.dart | 4 +- .../settings/views/settings_view.dart | 2 +- .../widgets/playback_quality_setting.dart | 6 +- lib/functions/shortcuts/actions.dart | 4 +- lib/initialization.dart | 4 +- lib/main.dart | 6 +- lib/models/artists/artist_model.dart | 4 +- lib/models/artists/sub_artist_model.dart | 2 +- lib/models/explore_model.dart | 4 +- lib/models/helpers/download_url.dart | 2 +- lib/models/song_model.dart | 6 +- pubspec.lock | 8 + pubspec.yaml | 5 +- test/widget_test.dart | 2 +- windows/CMakeLists.txt | 4 +- windows/runner/Runner.rc | 8 +- windows/runner/main.cpp | 2 +- windows/runner/resources/app_icon.ico | Bin 2039 -> 17326 bytes 40 files changed, 106 insertions(+), 5697 deletions(-) delete mode 100644 data.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ecef082..bb950f5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to Saavn Music Player +# Contributing to Sangeet Music Player -We appreciate your interest in contributing to the Saavn Music Player for Windows! Here are some guidelines to help you get started. +We appreciate your interest in contributing to the Sangeet Music Player for Windows! Here are some guidelines to help you get started. ## How to Contribute @@ -9,7 +9,7 @@ We appreciate your interest in contributing to the Saavn Music Player for Window 2. **Clone Your Fork**: ```sh - git clone https://github.com/YOUR_GITHUB_USERNAME/saavn.git + git clone https://github.com/YOUR_GITHUB_USERNAME/sangeet.git ``` 3. **Create a Branch**: @@ -42,7 +42,7 @@ Please note that this project is released with a [Contributor Code of Conduct](C ## Reporting Issues -If you encounter any bugs or have feature requests, please [open an issue](https://github.com/priyanshuverma-dev/saavn/issues). Provide as much detail as possible, including steps to reproduce the issue and any relevant logs. +If you encounter any bugs or have feature requests, please [open an issue](https://github.com/priyanshuverma-dev/sangeet/issues). Provide as much detail as possible, including steps to reproduce the issue and any relevant logs. ## Code Style @@ -52,7 +52,7 @@ If you encounter any bugs or have feature requests, please [open an issue](https ## Thank You! -Thank you for considering contributing to the Saavn Music Player for Windows! Your contributions help make this project better for everyone. +Thank you for considering contributing to the Sangeet Music Player for Windows! Your contributions help make this project better for everyone. ## Contact diff --git a/README.md b/README.md index ac0532b..42b4ac0 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,30 @@ -# Saavn Music Player for Windows +# Sangeet Music Player for Windows -Welcome to the Saavn Music Player for Windows, an open-source desktop application that allows you to enjoy your favorite music seamlessly. This music player is powered by the Saavn API and built with Flutter, providing a robust and modern user experience. +Welcome to the Sangeet Music Player for Windows, an open-source desktop application that allows you to enjoy your favorite music seamlessly. This music player is powered by the Sangeet SDK and built with Flutter, providing a robust and modern user experience. ## Features - **Seamless Music Playback**: Enjoy high-quality music playback with an intuitive interface. -- **Search and Discover**: Use the Saavn API to search for your favorite songs, albums, and artists. +- **Search and Discover**: Use the Sangeet API to search for your favorite songs, albums, and artists. - **Playlist Management**: Create and manage your playlists easily. - **Rich Metadata**: View detailed metadata for each track, including album art, artist information, and more. - **Cross-Platform**: Built with Flutter, ensuring a consistent experience across different devices. ## Installation -To install the Saavn Music Player for Windows, follow these steps: +To install the Sangeet Music Player for Windows, follow these steps: 1. **Download the Latest Release**: - - Go to the [Releases](https://github.com/priyanshuverma-dev/saavn/releases) page and download the latest version for Windows. + - Go to the [Releases](https://github.com/priyanshuverma-dev/sangeet/releases) page and download the latest version for Windows. 2. **Clone the Repository (optional for development)**: ```sh - git clone https://github.com/priyanshuverma-dev/saavn.git + git clone https://github.com/priyanshuverma-dev/sangeet.git ``` 3. **Navigate to the Project Directory (optional for development)**: ```sh - cd saavn + cd sangeet ``` 4. **Install Dependencies (optional for development)**: @@ -49,7 +49,7 @@ Once installed, you can start using the music player to search for songs, create ## Contributing -We welcome contributions to the Saavn Music Player project! To contribute, please read the [Contributing Guide](CONTRIBUTING.md). +We welcome contributions to the Sangeet Music Player project! To contribute, please read the [Contributing Guide](CONTRIBUTING.md). ## License @@ -57,9 +57,9 @@ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file ## Acknowledgements -- **Saavn API**: This project uses the [JioSaavn API](https://github.com/sumitkolhe/jiosaavn-api) for fetching music data. +- **Sangeet SDK**: This project uses the [Sangeet API](https://github.com/priyanshuverma-dev/sangeet-api) for fetching music data. - **Flutter**: Built with [Flutter](https://github.com/priyanshuverma-dev). -- **Open Source**: Check out the source code on [GitHub](https://github.com/priyanshuverma-dev/saavn). +- **Open Source**: Check out the source code on [GitHub](https://github.com/priyanshuverma-dev/sangeet). ## Contact diff --git a/assets/app_icon.ico b/assets/app_icon.ico index dbb7ff481ae817510686f3e700e8ef9a1c9c702b..aa0575ea1d6ddbf828ec3ad13edc5466ee3df852 100644 GIT binary patch literal 17326 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 literal 21727 zcmeFZWmHvP^ftO_0TDq$X^(_-cdDcaNOwv|cSs%trA0(Q8cAvCh9fD`Azjklame#7 ze*gD=y5o*<$NS}exsKsL4`;1CSIs%s^E`8hy;hbZz@xx}Ac#OgURn);(7`{^p*z^% z$FbMw1^9vMB(LiVLHF8j|Dts{{xAn0K5~=MaZ`7+bn`TIv4A{1Jvpo$Y+c`&I$3Zy zx>zOeicvri9i$-rOv5W>d)CuSL-VHV;Ox~Gg%BzDAg=u0{eldb*;;OgT+Y7e-j@ae7*rDH9~wO`L#0>yK}q=SQ=nGpUYns92DtXUu= zfwd^2Nqx#;9(=TpZcc?fD?z3&%Csl41S%n1=h&PVHutmB!1k8kri%bV@^e9*y3%*Z^br+4JO>$qbtcrpN zmtpzb%$k#UGDueG`hyxgO;uq%vzGScAz;iwhJ5=v4)VY?4h%J3I&JULl7Y1 zklK3@p_pv~3vU(-O{)5;h9*VY+65SKsz#X2ZWvvd>)q`?oU*l+rnD_gMOGu71R7c*H;rjBNGpM^DZ|jGkkB*71^xxh27F<)*?Q*V^}oseh7Chiwx0EF zTgrLLhJ1(!q1PKX*F`!pedP=h-Tg){Plp-UbSpofxe65F=?O(oX8KqGGxt>csPo}Xc|oBpYFVrKlyp--Q8`mQbj$v z+=tJu_GhJYm2UzY8x0y1S)d!dMl>(`5{AsD&}hkn{q&T-LnY{79Q~7PDFgXdDKdMJ z&C)W$W{1zD?OyBZDy&}By}EFKEp_?z9a<>vuvrN^J>lxApybLamaYS-~s|)K{fgr<1Bu^s3OE z<|B9j)MtD2f>O|-HBQ^OhatgGA&uWX33&8=HiW_~`B6;h)-Zclbmy*YWMj<8fSBCnwhX<=%F2qbs43eXYF_kJ;<31d zadFz(5z)^$JdvSCx1VebL*1;+ zH=gZIFR!kSj&(Vp-$1?KS&<}o&{#M&jp#n>df^t>VgKT%cg@>>Q--O?-#P6H3x!^5 zX?1?%lvs)*Pq#QJh^sn?k+`ZMn2Ywn(~(6(i0tgEXrBmPCtAg0UZwxlwMy_wP>R63%loWrLF?>OTLa8@rv1RL`(!@`yVwK%%b7QUU zEz%-slRW10zoYYqCmV8NC&;$#iDve1wERRU^k>u2ymw{rAWLubH}GQ_>A9}sJA!2%eVZn3#<*8RsDZcn*t3}G;v5SD2v(gd{)kVX zR&(|D7J{N%G7NF1ckh5l)yEeP*R4)b{`m33Jp7Ircu zRqgLT%7z@|H8cK9dwxRUmfqu>Frps{vAG7WvjnxX4weH+rYCk%f*FK273eHQ+d?UC zu@@$Y14{$di?%CukH{LY(+MB?F5YKtASJ@pl~hXq(>HG1c51I*yn7*cg;PbUH|s1k zxO$kSh~|%2{Do@7=dkQ-l%cqik@o)=9II@pJjV0U*yemCp9wwoAblDpH^>S%w!QPJ zwUzf;oQ9CI`GPUv-741N(o*rJmNdOxduNC9+y`=X$ttvwJmuW-;c|?dB(yyAtU%&I z5ds` zZ$d}vqI2ED$3X=KDVt0cy&|{)+jg+flQy^S&vN_Y7scDvI9zFTREuN<$9M=%ns0EF zUkrmo^GjS~Rb& z@J~rKZ@b4IFghDdduX{a!C+lKJ^F0=C2b#0S38sy^h}2i;s?X{p%k=8tW1oZADZ5_ z&1qa=V0)vNzLb{sACK=#7D5%778%!!h4213NGE&ftc@#Y2Cavoyne%L-n(tjd?@Wi zNr8y+UyB0!wNE=K0b^WR#RjG_o|o`n2sKs_e9{;)NGX0rfc~gt&MmR1{iE?qS_tb>Yiv!U$Ox9lqRVY zHy7hVCKU%Ux|HbE-Zh3utRQ zD_S02XquNUf@~`ez7LqKeU*TYVD0VX5 z-WOarloD}jm~A}!XO$v$tP$~&m?*}?dN`Zeu-@%W@49N>9QEMceY6oa=H9?oVJHQT z%5H&M3a9z~(=2Jc&{M<%-(RquZpOgH#eJ1}^&-PC_0B6C0W71qqhMP|9?c)x#2W7I ztGSK|p$+(x6b`0+?3mU`%;$9b-Z6_QxfAieaYk==eG0t+Ihy}n10s2xAQh@s?WF)Z z5s`(F_cGG$*dVZ__;kKr?M)(jtBt}aDa)Xj!|j5c1h_ap-=hFgv~p5cWKmn1zI|t| zDIylz^5>h&YN-YhLKHQR>5~}`v{AGhQh6M1ZtknIr2&3qL}+lJY}Bw9YH8rWODxdi zgpq9K@e=(%GAIov31|2here+`cwi74i=1@3NY3RMuV+8o%}Mll-Mi(#cX#JwPm3vH zhl<6Ylr#q8zG=DVw&J6+IUYb4;CGrM)nFYKV5K{8Cr=x~2z-Qj-=@D|!At_VjK9S~ zOvJ5WWYizN(xdZPI2}v(#+Wt1N?ld;AbAHnT`1Ud?(#FEQu1H5obOBZk_MgMhO*E% zT0;V?5U*@m%C&1T;W{QngF}@;mVNqMt~X|CYUoo!bTG9yAd2!AYL{`@O5l^5m(#gQ zC?>FFR#uMwXsO>{8qRXhS@QHqjFi;5g;lC-{N*6IIDR#irX z&mzAgeVe7~>&U%2GQZe8xQ9kZpo2Bazq62bNxK@>BKF2m1_r~~o~a9x(M=4=Js`KV z_!3)Dqb1>Uvlyo}`-NPKCIIO_=f$4Ek9G;ahfoFsl@r2*qo5~Bl%9J-5#5q~42+CL z(Y|CcdY{wNyIO;S{Bi?C0xqkItN$J?8>g?RoQa!HuZhNuZ>=o<^6NILr~m9QhwV`I zgI+)Qf?2Q$ZmUEoCntAwp}+TbpFD#F-S4wL$=cTHB27>AuE{8#-SFyY z#Ba=3tJHw#_kt=b-r>;>$FDMPtK*f`>D}dY$3~l}50qZGLX-6cHrh{H(1mD`e=429 z8RoIQAzoZuVrNs3er{-C!C%i+SZ;LN z(1oQoI1!k1%gQEre<3H_!M5513vC|rbuRoKqL|lC%O>fvKHla` z=bJqPN)77-22f;KNx>9Rcqx<#&yiw^?F4rTa}FbgBQo~l;+N7?7RJxedMXlVDE6%e zl8Dwd9Dfh7!Z#;@H}ms$GY?P*vnHRE^1Ncg`WX2-1+A92?HBC=Sh4J1#`L`;pw=h~5TE8HkB<-QPx(681n?^(WDLfCJFkQib&%kzB52%+CGtcPoT ziAoL*pJpv43rf0_#=VEk`Hs1S`r2@##QBs%7h~No>s-RC60o{U>t-Eje3x-c>db1b z$%77zl_aO@3*Iw*MMpH{68N0{S%|C{s46ET$`5>h<*UVJ?6IDD{l52nd#AA8L~0jAt`?JJlhMB*zpn`hf}eK+YFG ze78Li(6%yM6DM!~l!eWFa=1e;28GYyPXOeieH|5_1zO#*fCFRt3 z6l2z}UrauPew3Z}DRYJ-G*X;T>yG=^d)^nFGxlY{r}qaih4h|c!i5%WMmjxbFX10@ zLZwT>!|}#SjNB)}udsBF4!oN@5-bZDaaBXoHhC$$)@SKH2EQdZ{k~h`Lu=9=*U5W6 z4n;$snx$YQ=m@8bW`(w;sp_TPil{tiY1mXJ!B!%#ZRY^_BAed*1J=W2dTDBJ<8(00 z18W+!rOH|%s#Mpx50%0t>|5iH`j+z+C25fAwuR+dz${87$~pfvalLa+H3GSk-|3=0 zWbfX^G;NA?Eaj@SeS4vDdQI_8K4N?zR-TBIw1d57z60azYN#@T@-=iv9_Q|v##o_t zdQT~zzbhSawa4zvugs#}7eRhwSMNZK2Ulb}&90?P{iZhUWzT%_H=ep?6@_w<%jbFN zFea-~g`@96zT6oj7zl!gG+J(LeKj$kzrA%9hJDX*nwKa~U>Dxr@LvgE@kp>Jd{`5) zdy@5NROocjq?GjBh3^0t*TCmmsqw0nm$ASKc0HHj?mRAw;WNfQ z{RPQKPVrTmx^3NP3p^tqpU6^_Qj$2QWEqB5yfr1u$@w&AO5z44nRaI4MUxKu@Pn}xVB=WPNZ=*NlZy$kQ*A6-HL2 z$myo1!qJ!7A*WpHwj)j|2McOgi%TWGGq_}D7Zvpa=XTN~;~hlV#lzM2BC~p4;oI#U zITsDOdXtQf*yE~is8Ouhbz7h4-qfRS-I*!79#p^1#L{ImYW#f7z;L_mo@g%jwh1a{=eXA6TJ(Klm6e6 z+6_I4*yG zB-20O^AH+(Hh`R{!E>)1bi~kAyIw+i4r|!}H>PEPSMXbJ{t9?DI6kIj-fxX&5~`5p zeXSs2%(u)Z*bJbF)x6@j`BG^Ep+_{CEvYYI98Kdj{Qn_PN4Sh-!o`RyHri zTSQegDV_usezk3(_>I@K^ZPG}VeMtwo#!dd1aCtBhWo})fNQwr??F>v@m2iT)u7@M zru)ixkUNy6bk(LTI44B+c>68uA-Q>9*Vf6DVN!7ty)<`iS;#YM8lM00WSGUj$;*0w zj`VX8KuvJ^jNf3$Ld?)zL;#LdRI2Zve6j?XauqlrS#o}ViXKUp+ifg{&ijvx2!}Tl zh#y<82Ndk3ZhrqH7t|!rML_M5WIggWgO;nK-lkWW8G5J`b?exyt)q%dWT-4bU=O%h zVvoGJQg2W!Q;H3KdchYe%(ZZd%HQ#XRh5E^dga^6Z~#~&^3evPBT64Oq4p#Pe{SF`bBF|i*;{=(m>lh|Cp;*yT9>gZCeS0T{fZp^GR9Bn)_H4!xV+`#W&Qcc*FVx7ajGr&UzE~I!(lHLD)bAAbN>0PITTk$Ei zh@K&cytR&<0O+&!d?cG`Fv!gC5iHX^_TjAl?1Kl2!P{N;9va;4fbWL zCX~z;m%O0L{V~YhWl5W>Yc@I%aeR-eDC?IIeYxAtnD}SNL^KZ*%8F@J)RyxlVCbc8 zyuY^a=$wh~Q;vJN)^db&eZOI37oD6~lgMMJ9kN%V@X&(pM=*5Mu7AgOmd>WAcjKk$ z5=D1FjPd?Sy$|V`yq43@AW0Q*$9*nL%zV!%)OA1d3LKq{xPsg7dy9DPhEMMZ)Y-OU z@L^T!8Ec*hKZdd?`E6!D)*`(k6l0u7SKi-a4lxcL$uqs{JQctM`$$auzXN<`g1GRhO;J#_qvVhP8j za02`;QymIZl$LH+JL$8^wx{lW&I4iYcaQ-?G_EzUpa%+!QRqms2ypjif$MIVvu^!h zZorT#QpiFgF$=fu6A^I}JNk1*b^Q^s`Lhd|9EU_l@&6$Jw#6TLMRw8a1|trW70x=mTz@E zJ&~zK<)_}diN=AY1>QS_aKf>#Tvjy+)@ytj3hym3==p%H^6gL0G|SjZ7YAdnuf&bY zkN)KEW6hmyzQ?=a;*VCa666wHGRTf+2H(^<)cjR|jxtGqXY$kdtGcqa1wZW$!K+E5 z&RV6Ml<7Z6Z=D#uEHGkI(>JCoflNNAk?Z$VoR^KiD7T|mvZ@&HAYx)LAo}HHA3yV5 zW~=Wk}KfDhO{L=CsAwNjm+@ug~QE&nR9p>a8GW41Ol_I75Z zK2dG2?VgtBX#_Qej@-^b6{(jWTVJsd-^9R#Zs*76YbC$QW8SDk_hYhHSW3-Q`~R^X zYAhBzSbn|3_4TpMPQzTR<G{@gNw{ zDu_1~r`TtaSFZQ*O;a+5q-?YCU4bu2iVp2w8HcTu<{ zIO#D-;Sd+ZPr9AjV;Au#tsuj)#}|6-B$&a7B;Dm%&>g}$i*ji##hoZkN2n-mR7Yr4Eo zPHyFC4GWP5C_~Mfk=b%o&3?xZ6@c+X=P1V8O;x)eJvYJL=lxY;@U)eUShp};?w1^Sjo_lnM?NDSy>l<; zrx*{}F1X%;iIpmy^IMM_N|^Jz7%uivv2S^Rivc$4Ukx?Y4vSdVHt&7MNtV<(9PA6L zPh`LUFD<}r_d^we-R_$chVh}8fxs62YfpDvO1!o;!vHCG*!buo0ET+%~sZqdu{7>;jl+HW+h=eT(gUSuBXh zzfHk$FUbELxOW5C1jB|Cp<|7C0Pc&pZ5Dy}y6g#-AviS4D0GB12*lF{#RoC>!Hh4y zmP?C~G#NBeQ`?*bHU{GYpMoRg@^fz_03x8^s{{|meFH{XwVgn|c)T6=3-OF;kfo^# z>C3jY`T9)^*`&M>wt(NOBp2dfAjdDM;MGq9ykSQ zdURmg|En}QNZ3+#K=b~l{OKYdXHBq)}ORUv|1{s zN&SBVZj>3Ib1VVJso$gtDJp;pmb)=_M*PHRalqujah}McjRq*~EbEamvUt_o>4d@1o-#9Y+b5Y@Q1j>fKS##@ z^LhF|n%w`t(f>|H)bzvg@O8_*9w!Uhn_r&VZ%@?)vFi&|SdDW4c#rV1>BEOhy8^Xr zkK5p=Q&3P~w(&)#H<>rNsP`RPZ_>b~ChNhuuSWvo;vKMr!~(t&v`4GGi_^GE$koE3 zTlQ%8i!>F82hz{y{;W(k9-T@eFM2p98a$(CSLB188=?|MH1%}ll)%}Lmp?rBy%Ms= zLtS*upF1pifyZrgD8MwbD)~loMT?8Fa&I$)j?7Wh|_$?^Zgjgq=+s8U0Yjvnv{k zW|96yvYCMWPtHpZs1tddakmy*hvcfjKlvs%JoJhE6d-g}C|ixwyf910Z9Rqm#;1{3 zc;cGH>hIMi540pnbt$JtpXgg+FhS|#Mw(r@GH}?U5Ut-n4dI+8xy*+T9tmo1tZE`F z8ZgU-nDf&52Tgl)0N>gB&NY$SZ_{($_j*Mep(0g1dvg5+ za;tSMnVE-RHuT(2t~1~Opm>g_tg%D=$|nV8+>(Gv!;vAdqM=U!4D5Uz%8K-86#|VG z(QhQUKIGzhW6^zo2G-23#t~}8?yjcZRD{R!xi1W_h2jP?TgqT&$<)&|&HzAvFM{lntrIFM3#riS zbk?g763LZb^3W{Z8NxncF*)<6RpoelKQBsyxcnHew_5>I*NVm+ynA%O?d#Zh19E zd+F#LeV0{SIDDv0ZDW?M^Zg%bSS;uOGj(8XDK|ztHX(u1$vBTcdSxkgOTWI{n4b9d zunhX`&ouzp{mFuViFE=ZK)Fb+veQ2XzA-H?{odwm*YN7REChXb?H5h=m1ih+08!yv zY>*Cbmf`F%NJ?^MNbGJVwYy$#>S)A-!Y#qM3bniviUQ&nlGn6?Zm*XA2D-Bs$V=Y? zSC^QKcdMl;*rPXJEz27DpJLe`J}67OwXg%I9{^+<-MORBAak%Wc;UUqNlbq+MjVsj zbx_yxs3yv};h~>Rfy49zT$rC{Sm?^?Kyq6pb8O_a4XCf>iSyYn9Ae=X7X3@JHK^|K zH_gbuqP}5l4?6wqNBcjZiUNr8#ql6BJD|6^#c#nNQf6~PU%W~enfx&ez;5qso9T3U zdo}1YMe@NCAC1qt1Q~m8c>{^_=kju%)!sDg(bK6@Tr%w^uogKqsRDbzMvDO?CX)6t z4s?XkmoAz-e0^yVBgYqeu}TQBytI%d3{HcyG$ zMljo&&0Xw*kntY_Cuc$jKKcI0G4pI-ESxRl_iFh)aK&q3_SqnIXxI=TgeRt-SDsHxPy&o6Hne2etz-sh!xecNODl$V)_zOaeW@-lD$-UTlfi1!NhfB8pM zQ&aQcqL9-CIOoTLNG9oq^>3M27FG5@wUKAKY_92B zL}y?u5W>!JfoF5O8ZR4kG~WOt`rw-C!#9gfNdUiXkg7 zBn@DBF*?_ICw_A*TFVI)Y^CqnWk^Z93g5;*>=?`~J9fwjoLBzv;e+hX6uoV=?DP44 zYSCB80#)UolGLD3r;*%Oi&KRhxKj(X`c=vmPH@3*Q*T8^f{L(d!PP1z%jbPQn>GYI#i=S3 zDg~mWfy9*<(2u;)O($5K5u2{LH(sqmuSa-A)a6Fjy#l0)_lz~;R7Gp_=ObP0@F1dG zKpIk(G=!5*_ONXofy2`{(ZWHnc-+RQ_D;;Ql&6QK54&1kUCs2=Jv{0!ch7%~R_7g? zx`D_>Z&=$VCD~KuM;F$H$RGaU#Cv>r(BF!AF35`nS{8f?Nq+|YdV!>bZNt_iDP%w; zU!{V=ZYg%(LS%58`DCc1q@yGFyKkv36dIu}lmO6!(ECQE3BaH~Ur12_Z<7(COu6^- zL_Jrakw#;Q0$iVenJ~P zJv~L$w2jbDnIv`@OXIxkZ2Ab+7^h6=K3cWIWN*a4HT!~p+Ing)@bv44Wan{Y?D~(Y z^wZ7?S=CpbYLS1V=6iE7F9Qogm%{Wy-bi9K&Z7cp6vX1b>z^*K10kz`O%1(ZZI?<& zP$Lh@@F61*AePlq;40T z{F@6>n@N`0KWg;7KrLLimhR7zaq36m?X{QfophQoKU%I?KlGiqgH*G3K1&xqe>l?5 zljSiqG{k2+*Scs!p8{Hy)wx=718S;sXRE9J{OapPyUnlkt53DHLP-L)4x=7_JSxyQ z)O>6HZf}j0Yl;jFO|3I@PHNawLPG=82#4tuI@O1ioUy&cHSO;JocubM(t~g2TP9>*&=9sa9rt`L6<;F%U53fp zQ+71e)f>L=AXT6jK6@Xr?Sv|piqSq}XRAO{}52zgW!z~-8MQ0ZAap=QucIk_t5 zneMXrh<<#iY_^IS&dr>8i{cvbLR|vxhlH{_GaR+mO=&j_PUHkFy|p_jvqm>HoxYo* zRAM}iw3h_wH)tGG{`nvN%DaCBBnv=vF_2~DdqfP+bp}I>#=fp^-WIp=*V#kL8B3Xpk)J)U%nt5s`0gfVBr0yu?VRNzYG&c#&TmlsJoqcq)MPxw>_#fV3xS zia?onx|-oof46qa$bjR>kO3Ufl%rWA0OReQKqDSs5AuWq#qZS5I^2FEg5^unAKrkc zRqk9BqR_IL6S10tGk4CVy9Y8xtLV3Y&3GxmbaYB>&uH$p9EZa%CSL1w3(v2-ra}~W zG4=Gbu4U4?F!MGYtif4txZZyfxfmw{K0bF1(tys%64ak~;J{xZ-u{g+!nm5caJP+` zvf$$i&}Kc>jw>oC$a0ED8NBc#o%?{_Ta4t_d#{z|_PJ60Fz?UfQt0 z%bw!2E$tVZc|uSd^Ji+&YJEdF`JRCR-Xv0IH2W`E#hmh(C_Q+?o*&nOKcge-(s7s% zGaF&_{hwl`@4qjdmKRU>4$VJ1lRSP1Xgc;EFJEDDkxkxkOyi=N)F@;rQ3~pS4yP-o z*L&mvVYis&evytjkm@-v2ZV-bXS{Fn5@Ne{%FG8VM=Gf;Qn)+_rxnpruD7%wkn1L3 zX@=!PotffVW2UX3$5_=TSn#&(xvG&Lsahz-pB)`tN5i(LJ8z#YJk#~**+8Ap@SFv& zT4y+xK3%QE6<)>`+96zUsq;GDL(vOp>3i*vAap8+{)fP^E9IWwIx|;`ASWj3D}Dqvp(&xv*033AuvF2{!Vm{V~l=B@U0aD@1 zIK=3V#WB)_9A#uZi<>L%W3i7^SJ59!|2A@0$|SPc8x$VY)PMS{rE2P765bh*&+hE( ze6`j>`+%I*Q8#_wkv;2Zt-;IN)D)q=QB(~qWzAc5`GagiOWpU(2FUfCAL`ALZ9<1$ z655@}A#zhtO0g{{86do^p_OzE$E`@!e5PqBbooO-s!RYJY^XCr8DX1%f&% z{e9Zd*H7Z&;yQ8WgR_uA6?rTT0XiS?N=w7>g533KqC?i-+E-lVu$DH*htT*9ANmWD zX}K(^oVz`&iqMWH!)k14&ebB~cvmn@68M^4FXRu%GFT(pTv7}c=R^aVvrbkoX4 z-hDYwiN{*!sf^YqG1nbx{VsCefTD67<3FEn*gAONvmsND$SGiaQsi=Xn-hP3GD@Llsxt3#LwXSGdH-NMleqxVx^stM%j)^F~OT#no{hBBu<+f5I%{b zO|RyRIwMmpMmvXtc>6^{5{xe8_9f+Q%villWGqe;GkdU zo_s8q_+Vz}lNhwIyxn(;Z0pk#H2cl)r!40cq{O&ZUFFY-`@EYSzOiOZ_KOY=5{ZpC;AV zS%dzW1O(zy{(Rv?PaG>7NaP;9TVlUj3sT`jifWveGj!toMCuZO6G1Pb?VLWx7n(#D&3 zOF?S8ezv7DCY%XVQ|8W;;~LhU>>&dz_zOS~n2b7fa$v#d)eKZEsGxecs@3HN`CGqp zSUPa{i^=#QrwxHSGxG`3YgAk83aRdq0Bd;yFSBZnbH{8|Ktrq-=0Ad`pKQ){{g~}d zozpX(AbIIOqxx}tzcCn4U%CcLNYTCb5s4D45uoB>8b}!atdB&~uCXojy7pHzkmP@y ztg!qh;NF`-dWdGS^zmeyuO(Wz==cv8K6GwG%j*$;+Xd1zd2&2grblbEP&Ce9g%s zu~x>uni1E}e}7e&PZnUuS=G~dDV0J3g>%hN5ETVUKUaG7>Mlk!t=*`{@yBa#0w)q) z5AR7kFKoo;?`>=)j64KF{#+wg76->ioUvb1>^z0zf2h}R476N{s9W{t0kG2};R!zp z;#&pe)XN|MbSx%9{5cjT?Br_$|TS)!E4dl&araych)MPvxk0AG`-eaNi{QkP9qJA25C`R6<-pMB(pG zlXyhUTWD6OuFQ`QWKu?^vwkc8=<-Ipy0&_AQTjE)pR_iL*-PY;`0P8kP`)7_CT;6h zPDR61?nE_^0r5iJPIQ3TLHJ4I;f21)W1ir?WM0_>km6fSlT!*cQ~- zqS|wH0E|ZAq#fwL)J@BK5qQtr%7XinfYU>Gtr4HSMAknaXkWz6hUaz5T`++2x)YVm zSJjZ6WiwSIOel6Gq^NDboJeluY?rF$hxQ8P6PQmHPt28v1@}Wx#eQ7s^tS+uYKzR# zepq#+`KuxVkG+JEk2FsEV6z;ybedpL!m4lkqU~dp*HwO=ZnFpeyz)($ZD~vQsXIDQ z-x@d#G5B6|2(szc1wG1cs}#`QGSy6`CWqbr&DNSS&R zC+S_$Lha&g;{jz^`z(W>>x;5(#pG|CHNUTv;^V!8*`}*b-=h}g_Wb_oN3|lzo930N zx{mW>&#f;s#!B@mj|c3gOT?K{+<2H$eev?rojraxCVfr2YBx(x02)B;%d|a|sFfa}pPb5kf0H9QrRT?qWdv$*aZ#t*lJ}N@t7R!0ZhntGR$|z74U8gpBd0B*>ks;>mS7|jh9_EwHA(ke7`{`y4{68LGK!_H2vJypqQcEx>oYXZ?UI!>pj!%f&5>slWm!M)u-Vj&6b&vFW+pATz z{&SA5+UvjLMgx?NO}3^outm%Wa`uJnz(=`#D6|<*zC*)Erj2yFf~+6$;Dni2E>^6%6*Pm) zdzCa=X__T#ZC*P2{M9RSPBV<(-II#Z%0S-B7m$8Eg{YtT%irBvkdj}H*Pl{5j+_aA zSM-agN6T3YhRfFiJk-s4`n|Z1M>5|$8Xu1Dm=>u}UO$9{b1G5ng6a!LrpT(=l)=|m0nsw`rbwK0R99)^YaR1l7LY?{AqtpQs;yEMLUR$*7bDY}a!@~8cSudZ@p+Y+F zH!r31ao%_5mqG|yWdRKSIpZad2Hi$8@muj}bHV-N^njL*CeK;2*R*}aS>K!;UJS>! zZEYV$kHvGD=^06pKki_n=kk13UE)HD`vNGOGPDz_k-oBo2l{X=Bqy0W71ID1Uvw13 zg>MoT@&h=FVSsMN*nFe!%)k^q-!|p<&sAeTZ|f9C3@E#izaM~7wARr8)RE%|kh=#6 zx$Wav4L}eTPSLN7exNR_usdNSj%^J<({~4GO6%umeor|G?O0lzpOeg|#k`Cj9W*jO zzbJ>@@Z~|q@cE?F29GxvMQrRMz&wVI4mbPx@EL=w;$NClK6FSqRSK62Uk4f|p3g=j zA9Hdpt%oZgJ@UKIHPU!$^EF-;sCd|%R>8h;0GrPB;x2^HM1(LB=;zc}{wn9McfEuI z47mTH$TtAIV(j){iOujP=J9Oa-&rPCX!!~9r5>iW!x80DhHLTDwHD|3plH3}gis+x zKo32dovLtd^B&>gX#0MNBE`(Js;8br8f=D!O-wUvij^S%> zD*TKHFS;`hxrg=8WZ3H{H!AX>wLhbOtwO%`tp<>172o##M)jAMH;(SO%`EHVgD)bd zbz@%wkyD+A9*qhoOLlf^Qk75?rJ(8Y#GbtJSmHkH-wy!d={wfO8;W{<^Elu%dH;a{ zOXevi1pkX1P%Sx#?D(`ZeJfr7g*W=fnxVJeuldhQOYB;jg$z8}SF@^}a$7IuBcd}E zn;sentigc@gQ?=w`D9eA{HQ4Td#H-MNpJ0*^>|5;gUFzeufBq~ThVsyHccFr`F_}oiSl<3K;ch$(SWZbX_nyjT7~;1puR@x zjQCWmuK4Fw)w)OUBam&QV!3vlZJ8ndh=AsHl;1usaO&aiso|kn8k(Bihe@mxO+Cmz z>zwcaeI2#I;Nj2-@^4mC$hLvzWdKrC{!AIv21QI37& z#F-eEg*71lFWXzZno;}H&YrW)Ot7mueOuYNdo^FGPP~)&Th($00hay zJ=23Sj^L(f@;6kJZ1-}x2IYyYbEBV`*XHMybT1aP@+juxEh<}gz0Dnc3_ zE#VbC?MU-To_r1Mu`8wF4=ngo6XBbYIGZAc5leG+T^S(SsM7opI6SN-YapDm$M~tH zfut)mJbV%44xoJK2C$tlVsijO9B<48rmnK05-?_+*82kF9f9#?Vv?P zZY0k!ph1x+M(-y$#@NTZ&#kTVt;u`fG{J)-lEHI#A*2=BDSAQ@UkRuy9`8?02^ey+ zEyQ~QJQDW;^4F_Wp0Lc!=M6pinjlFG;_ULzbA2KW`%PVAFmSkS5$NXp;O8)~O6h4o z1aH~Jl2RGD*GzRu{URjQ(on|qDR_N>(7p!%+H2^ zaA(eI%dp;K4+xfEY7yZP;p_7a_<&Kqmz`Vz4Ut9MJqp4KzjVY4ft^6Wl~F_#$PckJ=@ zYh_kO>tCm#L8#0Kw!1-*(>trv%)IO40U2N;luhymEFOgH5pJZS1Mu0vZ|6h|xgN{s zP!tI0)>|g8@^P2CuC;HjJi{Qqj*X#a73-+62M6}eKxG-AY12d&gTgb8>r#^8Jt>i5EZgdE7Kd-$|07v>Xu0XpBsGUBn{_Goy-yX!N1 zNCpRJ_u(#3rXBxKnW(bOn_Yo!b|OI?1Zje?J3qL;ZG%D~DwEA++S>J*5ez?*x(8lu zw^fE5Xow(`6J6HUd$e1KvG+V8U%Rx~T~mfGeV_}(y2HN->AbsJ+<{bux^KY9cg4M( zJ15s%x-GO_KrM3B=_G8?7tr*NM)Q0!{#P+q{ts3A{?E+VMv*aw$r4HQkZeVaWz>`~ zM%kAkQkE9kvSgb{G*p%}nvj_y9?3egL`s;r)uj^d*eP7r6{kC|N1H_ZUuDqzRZvfNy_WJc*M-$3JyJO^*zXqK5aLxMDpHIj& zr-CiY{aWGsKpfJmmp^GVG>G=XgGe>BegyhtiX?~MLQ&*UA9=IDj-hB@@*ebVb{#nI zWJmC@@{p}Wj#z5bx*ozQhuqlTx*u$B&Of(xt2WI8`Mxz*rX}lw$Jz?Un!w&!NytRY z$z9?9rwpQYPy^&D|KY~;J-ejkQFry!bj8@r=SHpS>T1KCRGgZOVCBAR%y)7ubYaR_ zg-gg+9fe}`x4Y0Dv`8uN2Qflw7=Y0*;0$t%>mFkQWTy)f!WftqLx>ky6&&;V24R3? zK!%eeGC_LxERz{HT2y-KAc#&@id-1!u!b27HTuPZl-^zUm<+Xcv0vdpy1(kuITfY( zkyqJs6)pM8%bDjV_p3@*H+$<05)-OXNjsajhq-&chDx$}@gfy~10FN<`jSDTajfwc zn^|54QoApIG>aPVTxZE{L0*a;0Xm_TAKcrH0S_T7WQ34zSGBHIHdxLE5i{d8Z6IiE z-8+8Pcze5Z7dg_AocLd&7Z+u0-yi~zv{^g#Q4?>SU4j(bTfI%-D%M!yLm}dG5n04@ zg%f8EWj%XVp?XiOf(tFHs%eV!8tv^pS1l(bV=1O2l-1*z^Q`X#_8|NqR{TV++IRKM zc6fTt=h3zCwVa87DWx9Yf|YwJ(=nf7yTe}qV?=n3zq6{g$Em(r_wXw<(g;MohprAe z)bF%=?-RZ-QBXAhQ4oscUUwE5fGH8-4sT9NfQ_zF+aw&Wc@z{cpk&N->m(nEnjI4x zO>gA4>ukhAfDl-fgxo3&0BZ#F=c#iIyyD`4i=eM^Mjq8XGS?gX(9scj>@%F9lsOgV z;LTRHhvd&`a4qqoCE{J3okfXsbRWl|yaSxm!{O^amW%%lcBOT+%AoJj?YE`S!T@bj z0qG_2AoRN~?DuNzw={C3yFT3XqV_}H3&L4sD>mRPMQ!2`jT6YA6;F$q5MCf{Gn2d;H1@fTv6%tb*I zzRKhW-`}gvV=p>(Wc-80XdTMXN&py2-nbt*>msI$A^0^#ssAFKU!_PPcs8OO&WwV> zzuWPDx!lIUcDE7LB4Tvx+G&ozHt`c4)F?QXxOjD6^BQ4!nK<5dV_=%)R(5OS z8CC}XWFgn|l1a8UHa2d$I*`uJnLh2#AMbEDA@k^I?f2%Z6sl{jPWvc&uKrqr&K+?e zd^{Y|g9yBOiX|~O_<%~aj=&$LYR+0zQ_lQ3ei{VNAM%d9^b94pnNOt{&;5)V-1IKR z&cQ^2vp~qWI zSPqPAs^#RS#Kpc%Wu&z9JT`E@L#xW}NPp6YuF7dJ4{uN4!qem31-vD$<$&rr?`xZ#t?um|KKMQ9SW&|G&^ zErUS<^@2i{r;!nF%yK)aTAnBm+`AGP6pHtAnm(1Pcc6nA*`dtU!hczVmccf6l>wN=0MgYj^I{WoHMjQK_BtA*&k_st(Vgad`SefhNe zWZ;~ONOz}cH$R9T#t#(nYPwN!x&MVriX4Jx(kdgX&r1$K8-yKy+@8_oN3muV3Poqr zyPl#*S}Rh;*CSA6FeC8{?)`cThSjIzWhd`aqLWcwk9hBBS&AmK#q_0vtn+a0__nK! zFpGLuSei7lC}z&>wrpNsE;}lo5n>gMKxEk3nz0Oa1em*W-A#O*3YsI!i)9lf!Od_2 zobYPJ@gc}4p-S&Uk;3-$Ngi*9;eR$0lOlx(Z4xw_dMEz6G#~Wn9qL%fqXZ70M;O9UR()@$$aDzO{j<4rkX=7bIeW8)5R;I9@*Kr_z~k zM&~CZUN3|Tq!~sbAG~1e1}Fd(B~OD3pt#AD{)eEYoWmZhwvBKx$%^MEu()OqclW(r zkB;~bWp2_;HV!PWj1AnV-yMxYlQ%GKnpkG)vEKlP{CZKbD5lE=zdp$1D@WIhLl8X8 zD=r6@M;(zvysi4heVTG;sN1-{Zcm_WH37-p#Yk!reck94`#wGP!FmGh##j|)=>2R& zP2gMNc-#WY9xnhC$ZxT^8X_xEn!rovy=c+q+Y0I81zM)h^bRO1bYnqVbjq z=5VI}QnzR2%H*C+Grf!OC6lGymlyr^qJYKTy(`u#ZOEkla)q`kM23FEkeHIP45HrJ z-uBXe-!o{-9e46gH<%?UW~7+8iTP3pELj{_D}^;nn9h_!lq5yZ_3G_bGQ2e&zgY@e zYk1kvK&zD1;WGcCS4IA^u>oCbEI8`3d#b6`4KGaE`~?{om5&MQ0V@UJ6R?vF)1UT8 z4ga<;Q1rkFSm{4oFRik5XvZeQYnV(^vp9KO>Gcr~OjH^L6r4jw%c3(RtaKETt$H+C zlwpgCxH|+dQ?q8uI_2Sav%|DUtkK@@Z{7>7f`=5GaFrCM=gpwWOELgpeKBh)_v zNHfR@dO_%$phQnAFRR1SEHH-+J*Z6uLlva!pICi9|H|OW6I%F|=R96D^KW3OS(6pW z4jw35z!wpol%=Mn?^myr>(#41+PruZ!$BbS9FLn(DU)v9&&#WHXPRV=K8Cr8RIVS%pIiVEg{DHPJT=4ABM=2TxD7cSp>OCJ$U2`4)0~o?we3X6D=^71=4A z0dv-$+i>31D4PK4g_|Y!+G}0q_BcX(S`AqW*r+C?vFn1#jli*DZEep};J!&s`+z5> zImY(Zt)vBl9j^OaCfz=4Ie2w`#Co~FYkv66T`x@QT8fci#T{-cIbVax!WKhWv3y}~ zq2M}9*4@zKio}US`IPr|fin9nqj7$12jn@2OmC$~R31=MbFxdtjWVhjr2PD=`ugda z1vxf1Jv6~pDq(E}tdcZwnjc=HN%VHj6L3yIbY7Y6phpX-F{nqwxzhW|>-|q}rz9h! zrESiJ=z@u)(BZkw=NDcIBnHFhg;QuO69>m0yF5@7#GK+&Qa68n%B$~Sn-ab)Un(kj z{(w%mwyLQ73VOsOjKpqfB) zHmpIEX~lT_v5~S~#Nhgz-nnKvsbTu#Sc%tiSa{58sm4a!e-}ZA&lB2_5A+lSQx{q` z?#i8maK{v}7VIsk2}{QT0{WJn&!m8kZICE4jElPScM&oGNnRgJucabDezKbm0-Nc=|drs0>cB|u}!E)lJZ z7|O`me3R<}#C?*W6(*e|oy`kJ@ZgenlI%RA`d%iRnKj6E)Bow&6dl&D6TJwdLw;U3 zvWQTAYGggJf?N_>5@nl{aZZ=+5}ksA{$lzQ>aPhNb4rE{>+&8#709hVi^hBJs3+1V zl`wuqs%hlg%hMuUUpDpe+v(3@_7^_|gpO~ISk`f!m!zWm8SYtG2 zC<0Ou)T81zK`zXmM`LPTexwpgIIe3%CCC)OB&pSYn=x_%)^$XCP>#Fb6;dHt*Gb3o z-kS>%12{vdP${?FY!O4o6M?FEIebZMD)B!KP18H00DH6Gz4>`>HJ$6x-9GBS;aChm z3@ydaQ>5J@@59RU>D1GGu(?U nFkk6Qak(IegOCk3oe5pWeJd~W>@57n2D diff --git a/data.json b/data.json deleted file mode 100644 index a5e027b..0000000 --- a/data.json +++ /dev/null @@ -1,5600 +0,0 @@ -{ - "success": true, - "data": { - "id": "1274170", - "name": "Dua Lipa", - "url": "https://www.jiosaavn.com/artist/dua-lipa/r-OWIKgpX2I_", - "type": "artist", - "followerCount": 520397, - "fanCount": "599650", - "isVerified": true, - "dominantLanguage": "english", - "dominantType": "music director", - "bio": [], - "dob": null, - "fb": null, - "twitter": null, - "wiki": null, - "availableLanguages": [ - "english", - "unknown", - "spanish", - "instrumental", - "italian", - "french", - "portuguese", - "hebrew", - "dutch", - "korean" - ], - "isRadioPresent": true, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "topSongs": [ - { - "id": "3IoDK8qI", - "name": "Levitating", - "type": "song", - "year": "2020", - "releaseDate": null, - "duration": 203, - "label": "Warner Records", - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/levitating/QyEEdT8IRno", - "copyright": "℗ 2020 Dua Lipa Limited under exclusive license to Warner Records UK, a division of Warner Music UK Limited", - "album": { - "id": "23241654", - "name": "Future Nostalgia", - "url": "https://www.jiosaavn.com/album/future-nostalgia/ITIyo-GDr7A_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/665/7790c3b9097592113008eaf1031d6e57_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/665/7790c3b9097592113008eaf1031d6e57_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/665/7790c3b9097592113008eaf1031d6e57_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/665/7790c3b9097592113008eaf1031d6e57_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/665/7790c3b9097592113008eaf1031d6e57_320.mp4" - } - ] - }, - { - "id": "2IuQsex6", - "name": "Levitating (feat. DaBaby)", - "type": "song", - "year": "2020", - "releaseDate": null, - "duration": 203, - "label": "Warner Records", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/levitating-feat.-dababy/QiEeYAdVTwU", - "copyright": "Under exclusive license to Warner Records UK, a division of Warner Music UK Limited, ℗ 2020 Dua Lipa Limited", - "album": { - "id": "22765589", - "name": "Levitating (feat. DaBaby)", - "url": "https://www.jiosaavn.com/album/levitating-feat.-dababy/9WB4qrU9Stw_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [ - { - "id": "2436622", - "name": "DaBaby", - "role": "featured_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dababy-songs/woXlnIzw1zU_" - } - ], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "2436622", - "name": "DaBaby", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/DaBaby_003_20230627114405_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dababy-songs/woXlnIzw1zU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/587/Gypsy-Girl-A-Cappella--English-2017-20191123100913-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/651/1961c02c707b866858ce1db3ce304d5c_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/651/1961c02c707b866858ce1db3ce304d5c_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/651/1961c02c707b866858ce1db3ce304d5c_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/651/1961c02c707b866858ce1db3ce304d5c_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/651/1961c02c707b866858ce1db3ce304d5c_320.mp4" - } - ] - }, - { - "id": "FH9dQInl", - "name": "One Kiss", - "type": "song", - "year": "2018", - "releaseDate": null, - "duration": 214, - "label": "Columbia", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/one-kiss/NiBSVSV5WV8", - "copyright": "(P) 2018 Sony Music Entertainment UK Limited", - "album": { - "id": "12586003", - "name": "One Kiss", - "url": "https://www.jiosaavn.com/album/one-kiss/UkpDM6Fh728_" - }, - "artists": { - "primary": [ - { - "id": "565985", - "name": "Calvin Harris", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566765", - "name": "Adam Wiles", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/adam-wiles-songs/1RLko-qnkQ0_" - }, - { - "id": "1342573", - "name": "Jessie Reyez", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jessie-reyez-songs/wtw4xIk1bcE_" - }, - { - "id": "565985", - "name": "Calvin Harris", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Calvin_Harris_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4667177", - "name": "Calvin Harris", - "role": "singer", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/4tucLoOYUWs_" - }, - { - "id": "", - "name": "Dua Lipa", - "role": "singer", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "lyricist", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566765", - "name": "Adam Wiles", - "role": "lyricist", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/adam-wiles-songs/1RLko-qnkQ0_" - }, - { - "id": "1342573", - "name": "Jessie Reyez", - "role": "lyricist", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Jessie_Reyez_20200314080442.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jessie-reyez-songs/wtw4xIk1bcE_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/360/b35084c623cc8a39d72e4cf10f9f895c_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/360/b35084c623cc8a39d72e4cf10f9f895c_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/360/b35084c623cc8a39d72e4cf10f9f895c_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/360/b35084c623cc8a39d72e4cf10f9f895c_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/360/b35084c623cc8a39d72e4cf10f9f895c_320.mp4" - } - ] - }, - { - "id": "JdJ_osp0", - "name": "Houdini", - "type": "song", - "year": "2023", - "releaseDate": null, - "duration": 185, - "label": "Warner Records", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/houdini/OgwhbhtDRwM", - "copyright": "Under exclusive license to Warner Records UK, a division of Warner Music UK Limited, ℗ 2023 Radical22 Limited", - "album": { - "id": "49599287", - "name": "Houdini", - "url": "https://www.jiosaavn.com/album/houdini/YKL-I3to3Oc_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/091/0d3cfd6080a23f13ace1c38c3296e18f_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/091/0d3cfd6080a23f13ace1c38c3296e18f_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/091/0d3cfd6080a23f13ace1c38c3296e18f_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/091/0d3cfd6080a23f13ace1c38c3296e18f_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/091/0d3cfd6080a23f13ace1c38c3296e18f_320.mp4" - } - ] - }, - { - "id": "eDfxPtuK", - "name": "Training Season", - "type": "song", - "year": "2024", - "releaseDate": null, - "duration": 209, - "label": "Warner Records", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/training-season/FSwNSSREQng", - "copyright": "Under exclusive license to Warner Records UK, a division of Warner Music UK Limited, ℗ 2024 Radical22 Limited", - "album": { - "id": "51913660", - "name": "Training Season", - "url": "https://www.jiosaavn.com/album/training-season/fblY26EJ8IA_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "624325", - "name": "Martina Sorbara", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martina-sorbara-songs/rFL5cWXPvak_" - }, - { - "id": "880391", - "name": "Nicholas Gale", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nicholas-gale-songs/zrorWzhmK2w_" - }, - { - "id": "843801", - "name": "Shaun Frank", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/109/At-Night-English-2020-20200228121738-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/109/At-Night-English-2020-20200228121738-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/109/At-Night-English-2020-20200228121738-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/shaun-frank-songs/cltu,ejvgXo_" - }, - { - "id": "18848514", - "name": "Steve Francis Richard Mastroianni", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/steve-francis-richard-mastroianni-songs/8E7u-XDZaks_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1001578", - "name": "Yaakov Gruzman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/yaakov-gruzman-songs/23GRX98mY90_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/062/7ee3c0def5574244c8f63fdc4eb63cee_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/062/7ee3c0def5574244c8f63fdc4eb63cee_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/062/7ee3c0def5574244c8f63fdc4eb63cee_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/062/7ee3c0def5574244c8f63fdc4eb63cee_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/062/7ee3c0def5574244c8f63fdc4eb63cee_320.mp4" - } - ] - }, - { - "id": "jLw_tYRU", - "name": "New Rules", - "type": "song", - "year": "2017", - "releaseDate": null, - "duration": 212, - "label": "Warner Records", - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/new-rules/GiQcbgBpZWY", - "copyright": "℗ 2017 Dua Lipa Limited under exclusive license to Warner Music UK Limited", - "album": { - "id": "10903515", - "name": "Dua Lipa", - "url": "https://www.jiosaavn.com/album/dua-lipa/m5MuUdmFrX4_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/812/099424085f4b2b64ffe259ccde3cbbea_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/812/099424085f4b2b64ffe259ccde3cbbea_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/812/099424085f4b2b64ffe259ccde3cbbea_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/812/099424085f4b2b64ffe259ccde3cbbea_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/812/099424085f4b2b64ffe259ccde3cbbea_320.mp4" - } - ] - }, - { - "id": "IOb4m8dA", - "name": "Dance The Night (From Barbie The Album) (From Barbie The Album)", - "type": "song", - "year": "2023", - "releaseDate": null, - "duration": 176, - "label": "Atlantic Records", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/dance-the-night-from-barbie-the-album-from-barbie-the-album/OScJBRkIU3I", - "copyright": "℗ 2023 Atlantic Recording Corporation, Warner Bros. Entertainment, Inc. & Mattel, Inc.", - "album": { - "id": "45537304", - "name": "Dance The Night (From Barbie The Album)", - "url": "https://www.jiosaavn.com/album/dance-the-night-from-barbie-the-album/,d3fJIbyrjU_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/768/c2893da4dd0f422fed60e7dc16120e16_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/768/c2893da4dd0f422fed60e7dc16120e16_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/768/c2893da4dd0f422fed60e7dc16120e16_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/768/c2893da4dd0f422fed60e7dc16120e16_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/768/c2893da4dd0f422fed60e7dc16120e16_320.mp4" - } - ] - }, - { - "id": "Wwhnw7s-", - "name": "Illusion", - "type": "song", - "year": "2024", - "releaseDate": null, - "duration": 188, - "label": "Warner Records", - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/illusion/Jx8DXwMHRB4", - "copyright": "Under exclusive license to Warner Records UK, a division of Warner Music UK Limited, ℗ 2024 Radical22 Limited", - "album": { - "id": "53336548", - "name": "Illusion", - "url": "https://www.jiosaavn.com/album/illusion/l,aNmIvismo_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/733/Super-Natural-Remixes-English-2016-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/241/3285425fe9dae53f621684b1ae840543_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/241/3285425fe9dae53f621684b1ae840543_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/241/3285425fe9dae53f621684b1ae840543_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/241/3285425fe9dae53f621684b1ae840543_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/241/3285425fe9dae53f621684b1ae840543_320.mp4" - } - ] - }, - { - "id": "jIyBUvOJ", - "name": "IDGAF", - "type": "song", - "year": "2017", - "releaseDate": null, - "duration": 218, - "label": "Warner Records", - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/idgaf/GiEScyFGeHk", - "copyright": "℗ 2017 Dua Lipa Limited under exclusive license to Warner Music UK Limited", - "album": { - "id": "10903515", - "name": "Dua Lipa", - "url": "https://www.jiosaavn.com/album/dua-lipa/m5MuUdmFrX4_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/812/96bed89f97e4a16d45d7243df0890261_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/812/96bed89f97e4a16d45d7243df0890261_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/812/96bed89f97e4a16d45d7243df0890261_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/812/96bed89f97e4a16d45d7243df0890261_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/812/96bed89f97e4a16d45d7243df0890261_320.mp4" - } - ] - }, - { - "id": "NYbOVCNT", - "name": "Love Again", - "type": "song", - "year": "2020", - "releaseDate": null, - "duration": 258, - "label": "Warner Records", - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/song/love-again/PjEJfiJzeWc", - "copyright": "Under exclusive license to Warner Records UK, a division of Warner Music UK Limited, ℗ 2020 Dua Lipa Limited", - "album": { - "id": "23241654", - "name": "Future Nostalgia", - "url": "https://www.jiosaavn.com/album/future-nostalgia/ITIyo-GDr7A_" - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "742265", - "name": "Chelcee Grimes", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/957/I-Need-a-Night-Out-English-2018-20180806185047-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/957/I-Need-a-Night-Out-English-2018-20180806185047-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/957/I-Need-a-Night-Out-English-2018-20180806185047-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/chelcee-grimes-songs/XwP3snpNdDI_" - }, - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "585225", - "name": "Crosby", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/892/Crosby-Nash-Without-Stills-Young-The-Dave-Cash-Collection-English-2011-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/892/Crosby-Nash-Without-Stills-Young-The-Dave-Cash-Collection-English-2011-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/892/Crosby-Nash-Without-Stills-Young-The-Dave-Cash-Collection-English-2011-500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/crosby-songs/VnQRDtMVlow_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1130984", - "name": "Wallman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wallman-songs/QkFVfxVnRxw_" - }, - { - "id": "2100501", - "name": "Wartell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wartell-songs/BMNd28V2ydA_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singer", - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/artists/Dua_Lipa_004_20231120090922_500x500.jpg" - } - ], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-500x500.jpg" - } - ], - "downloadUrl": [ - { - "quality": "12kbps", - "url": "https://aac.saavncdn.com/665/345db6fd4257836c528aba8067b49863_12.mp4" - }, - { - "quality": "48kbps", - "url": "https://aac.saavncdn.com/665/345db6fd4257836c528aba8067b49863_48.mp4" - }, - { - "quality": "96kbps", - "url": "https://aac.saavncdn.com/665/345db6fd4257836c528aba8067b49863_96.mp4" - }, - { - "quality": "160kbps", - "url": "https://aac.saavncdn.com/665/345db6fd4257836c528aba8067b49863_160.mp4" - }, - { - "quality": "320kbps", - "url": "https://aac.saavncdn.com/665/345db6fd4257836c528aba8067b49863_320.mp4" - } - ] - } - ], - "topAlbums": [ - { - "id": "23241654", - "name": "Future Nostalgia", - "description": "", - "type": "album", - "year": 2020, - "playCount": null, - "language": "english", - "explicitContent": true, - "url": "https://www.jiosaavn.com/album/future-nostalgia/ITIyo-GDr7A_", - "songCount": 13, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566172", - "name": "Jeff Bhasker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jeff-bhasker-songs/lnl3ESr3WQo_" - }, - { - "id": "613919", - "name": "Ben Kohn", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ben-kohn-songs/TktBXZIk6lY_" - }, - { - "id": "678029", - "name": "Camille Purcell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/camille-purcell-songs/eikyrmwHNEY_" - }, - { - "id": "632102", - "name": "Pete Kelleher", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/pete-kelleher-songs/nYZUreZf,b8_" - }, - { - "id": "882822", - "name": "Shakka Philip", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/shakka-philip-songs/uuvVFJ5qi08_" - }, - { - "id": "613921", - "name": "Tom Barnes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tom-barnes-songs/ObvZUE45DcA_" - }, - { - "id": "707698", - "name": "Tove Lo", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tove-lo-songs/wBPjTKDNv9Q_" - }, - { - "id": "591993", - "name": "Jason Evigan", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jason-evigan-songs/,zVmyXajdpg_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "577489", - "name": "Ian Kirkpatrick", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ian-kirkpatrick-songs/zsvJSi5q-As_" - }, - { - "id": "672852", - "name": "Julia Michaels", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/julia-michaels-songs/OboBJBVTzgs_" - }, - { - "id": "4521858", - "name": "Samuel George Lewis", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/samuel-george-lewis-songs/ZVzkyvCfr-k_" - }, - { - "id": "2607495", - "name": "Sophie Frances Cooke", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sophie-frances-cooke-songs/6TnITnwuIyw_" - }, - { - "id": "742265", - "name": "Chelcee Grimes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/chelcee-grimes-songs/XwP3snpNdDI_" - }, - { - "id": "585225", - "name": "Crosby", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/crosby-songs/VnQRDtMVlow_" - }, - { - "id": "1130984", - "name": "Wallman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wallman-songs/QkFVfxVnRxw_" - }, - { - "id": "2100501", - "name": "Wartell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wartell-songs/BMNd28V2ydA_" - }, - { - "id": "566701", - "name": "Ali Tamposi", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ali-tamposi-songs/uXzfkjl2h6g_" - }, - { - "id": "571060", - "name": "Andrew Farriss", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-farriss-songs/3eWWFeRs4ls_" - }, - { - "id": "1256966", - "name": "Andrew Wotman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-wotman-songs/IKutWGGxYdI_" - }, - { - "id": "1825828", - "name": "Jordan K. Johnson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jordan-k.-johnson-songs/9iT4-qqOwIM_" - }, - { - "id": "567384", - "name": "Michael Hutchence", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/michael-hutchence-songs/T-MHZIru9-Q_" - }, - { - "id": "672854", - "name": "Stefan Johnson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stefan-johnson-songs/J2c,DBR4dso_" - }, - { - "id": "2419724", - "name": "David Charles Marshall Biral", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/david-charles-marshall-biral-songs/kbScH,rEjXM_" - }, - { - "id": "740123", - "name": "Denzel Michael-Akil Baptiste", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/denzel-michael-akil-baptiste-songs/vJVWPosaO6Q_" - }, - { - "id": "1290807", - "name": "Melanie Joy Fontana", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/melanie-joy-fontana-songs/CNTyLC,YPis_" - }, - { - "id": "7493251", - "name": "Michel Lindgren Schulz", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/michel-lindgren-schulz-songs/w-iIn-ycuSU_" - }, - { - "id": "4112470", - "name": "Taylor Upsahl", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/taylor-upsahl-songs/lB3-4Mrcy0Q_" - }, - { - "id": "633532", - "name": "Justin Tranter", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/justin-tranter-songs/MUdaah321CU_" - }, - { - "id": "1986316", - "name": "Kennedi", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kennedi-songs/abSMdo,ClaQ_" - }, - { - "id": "2436622", - "name": "DaBaby", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dababy-songs/woXlnIzw1zU_" - }, - { - "id": "2061563", - "name": "Angele", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/angele-songs/CTAPmcDBz3g_" - }, - { - "id": "570206", - "name": "Jacob Kasher Hindlin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jacob-kasher-hindlin-songs/anqSKuozjn0_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "2061563", - "name": "Angele", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/angele-songs/CTAPmcDBz3g_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/665/Future-Nostalgia-English-2020-20231110075246-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "10903515", - "name": "Dua Lipa", - "description": "", - "type": "album", - "year": 2017, - "playCount": null, - "language": "english", - "explicitContent": true, - "url": "https://www.jiosaavn.com/album/dua-lipa/m5MuUdmFrX4_", - "songCount": 12, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "569216", - "name": "Miguel", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/miguel-songs/yU9vDouPTGk_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/812/Dua-Lipa-English-2017-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "51913660", - "name": "Training Season", - "description": "", - "type": "album", - "year": 2024, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/training-season/fblY26EJ8IA_", - "songCount": 4, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "624325", - "name": "Martina Sorbara", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martina-sorbara-songs/rFL5cWXPvak_" - }, - { - "id": "880391", - "name": "Nicholas Gale", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nicholas-gale-songs/zrorWzhmK2w_" - }, - { - "id": "843801", - "name": "Shaun Frank", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/shaun-frank-songs/cltu,ejvgXo_" - }, - { - "id": "18848514", - "name": "Steve Francis Richard Mastroianni", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/steve-francis-richard-mastroianni-songs/8E7u-XDZaks_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1001578", - "name": "Yaakov Gruzman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/yaakov-gruzman-songs/23GRX98mY90_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/062/Training-Season-English-2024-20240220134756-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "53336548", - "name": "Illusion", - "description": "", - "type": "album", - "year": 2024, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/illusion/l,aNmIvismo_", - "songCount": 4, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/241/Illusion-English-2024-20240411221655-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "53965513", - "name": "Radical Optimism", - "description": "", - "type": "album", - "year": 2024, - "playCount": null, - "language": "english", - "explicitContent": true, - "url": "https://www.jiosaavn.com/album/radical-optimism/-OBciCbRdqo_", - "songCount": 11, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "624325", - "name": "Martina Sorbara", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martina-sorbara-songs/rFL5cWXPvak_" - }, - { - "id": "880391", - "name": "Nicholas Gale", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nicholas-gale-songs/zrorWzhmK2w_" - }, - { - "id": "843801", - "name": "Shaun Frank", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/shaun-frank-songs/cltu,ejvgXo_" - }, - { - "id": "18848514", - "name": "Steve Francis Richard Mastroianni", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/steve-francis-richard-mastroianni-songs/8E7u-XDZaks_" - }, - { - "id": "1001578", - "name": "Yaakov Gruzman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/yaakov-gruzman-songs/23GRX98mY90_" - }, - { - "id": "565999", - "name": "Andrew Wyatt", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-wyatt-songs/oYC,SPG6ZW8_" - }, - { - "id": "876346", - "name": "Billy Walsh", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/billy-walsh-songs/pmWCqwQBwnw_" - }, - { - "id": "566701", - "name": "Ali Tamposi", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ali-tamposi-songs/uXzfkjl2h6g_" - }, - { - "id": "698397", - "name": "Emily Warren", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/emily-warren-songs/VwuRln-T5mE_" - }, - { - "id": "577489", - "name": "Ian Kirkpatrick", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ian-kirkpatrick-songs/zsvJSi5q-As_" - }, - { - "id": "672852", - "name": "Julia Michaels", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/julia-michaels-songs/OboBJBVTzgs_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/870/Radical-Optimism-English-2024-20240503014647-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/870/Radical-Optimism-English-2024-20240503014647-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/870/Radical-Optimism-English-2024-20240503014647-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "10066373", - "name": "No Lie (Remixes)", - "description": "", - "type": "album", - "year": 2017, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/no-lie-remixes/,U7RPTHOZJw_", - "songCount": 2, - "artists": { - "primary": [ - { - "id": "468845", - "name": "Sean Paul", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-songs/GQPg5UvdL60_" - } - ], - "featured": [], - "all": [ - { - "id": "612926", - "name": "Jamie Sanderson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jamie-sanderson-songs/oXD9kYG6liY_" - }, - { - "id": "1365555", - "name": "Philip Kembo", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/philip-kembo-songs/m,NJhlaFscw_" - }, - { - "id": "562807", - "name": "Sean Paul Henriques", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-henriques-songs/YEox-ir-av8_" - }, - { - "id": "611692", - "name": "Andrew Jackson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-jackson-songs/,pt92v4YXfE_" - }, - { - "id": "698397", - "name": "Emily Warren", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/emily-warren-songs/VwuRln-T5mE_" - }, - { - "id": "468845", - "name": "Sean Paul", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-songs/GQPg5UvdL60_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/747/No-Lie-Remixes--English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/747/No-Lie-Remixes--English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/747/No-Lie-Remixes--English-2017-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "13428333", - "name": "One Kiss (Remixes)", - "description": "", - "type": "album", - "year": 2018, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/one-kiss-remixes/T-ApjLEQo6I_", - "songCount": 7, - "artists": { - "primary": [ - { - "id": "565985", - "name": "Calvin Harris", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566765", - "name": "Adam Wiles", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/adam-wiles-songs/1RLko-qnkQ0_" - }, - { - "id": "1342573", - "name": "Jessie Reyez", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jessie-reyez-songs/wtw4xIk1bcE_" - }, - { - "id": "565985", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4667177", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/4tucLoOYUWs_" - }, - { - "id": "", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/518/One-Kiss-Remixes--English-2018-20180712131358-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/518/One-Kiss-Remixes--English-2018-20180712131358-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/518/One-Kiss-Remixes--English-2018-20180712131358-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "22251959", - "name": "Club Future Nostalgia (DJ Mix)", - "description": "", - "type": "album", - "year": 2020, - "playCount": null, - "language": "english", - "explicitContent": true, - "url": "https://www.jiosaavn.com/album/club-future-nostalgia-dj-mix/vNHRGzUjFdY_", - "songCount": 17, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "8374767", - "name": "The Blessed Madonna", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/the-blessed-madonna-songs/sBoRrdAbBS4_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "591993", - "name": "Jason Evigan", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jason-evigan-songs/,zVmyXajdpg_" - }, - { - "id": "633532", - "name": "Justin Tranter", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/justin-tranter-songs/MUdaah321CU_" - }, - { - "id": "1986316", - "name": "Kennedi", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kennedi-songs/abSMdo,ClaQ_" - }, - { - "id": "742265", - "name": "Chelcee Grimes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/chelcee-grimes-songs/XwP3snpNdDI_" - }, - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "585225", - "name": "Crosby", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/crosby-songs/VnQRDtMVlow_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1130984", - "name": "Wallman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wallman-songs/QkFVfxVnRxw_" - }, - { - "id": "2100501", - "name": "Wartell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wartell-songs/BMNd28V2ydA_" - }, - { - "id": "566701", - "name": "Ali Tamposi", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ali-tamposi-songs/uXzfkjl2h6g_" - }, - { - "id": "571060", - "name": "Andrew Farriss", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-farriss-songs/3eWWFeRs4ls_" - }, - { - "id": "1256966", - "name": "Andrew Wotman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-wotman-songs/IKutWGGxYdI_" - }, - { - "id": "1825828", - "name": "Jordan K. Johnson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jordan-k.-johnson-songs/9iT4-qqOwIM_" - }, - { - "id": "567384", - "name": "Michael Hutchence", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/michael-hutchence-songs/T-MHZIru9-Q_" - }, - { - "id": "672854", - "name": "Stefan Johnson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stefan-johnson-songs/J2c,DBR4dso_" - }, - { - "id": "522744", - "name": "Madonna", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/madonna-songs/ygEp5MhUSFw_" - }, - { - "id": "2122813", - "name": "Melissa A. Elliott", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/melissa-a.-elliott-songs/,AepsQv2zqI_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "4521858", - "name": "Samuel George Lewis", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/samuel-george-lewis-songs/ZVzkyvCfr-k_" - }, - { - "id": "2607495", - "name": "Sophie Frances Cooke", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sophie-frances-cooke-songs/6TnITnwuIyw_" - }, - { - "id": "1263098", - "name": "Dan Traynor", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dan-traynor-songs/kMUicwSwV9U_" - }, - { - "id": "610392", - "name": "Uzoechi Emenike", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/uzoechi-emenike-songs/06XhH,faYHo_" - }, - { - "id": "2061349", - "name": "Baldursson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/baldursson-songs/l8,AnBi,998_" - }, - { - "id": "947400", - "name": "Bjoerklund", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/bjoerklund-songs/m8RWm3HDT1s_" - }, - { - "id": "932594", - "name": "Korduletsch", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/korduletsch-songs/Y0KO3PaK5oM_" - }, - { - "id": "8786548", - "name": "A. Armer", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/a.-armer-songs/PiyGRyBrvnE_" - }, - { - "id": "14027364", - "name": "R.Alpert", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/r.alpert-songs/SiQz9xiNB5o_" - }, - { - "id": "601597", - "name": "Justin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/justin-parker-songs/Z2KwaTnBmuI_" - }, - { - "id": "639493", - "name": "P Nelson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/p-nelson-songs/W8nY2X1rDHA_" - }, - { - "id": "657118", - "name": "Sam Dew", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sam-dew-songs/NiEzi7IGpF4_" - }, - { - "id": "528531", - "name": "Stevie Nicks", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stevie-nicks-songs/u1mLa7J1GRQ_" - }, - { - "id": "566172", - "name": "Jeff Bhasker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jeff-bhasker-songs/lnl3ESr3WQo_" - }, - { - "id": "613919", - "name": "Ben Kohn", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ben-kohn-songs/TktBXZIk6lY_" - }, - { - "id": "678029", - "name": "Camille Purcell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/camille-purcell-songs/eikyrmwHNEY_" - }, - { - "id": "632102", - "name": "Pete Kelleher", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/pete-kelleher-songs/nYZUreZf,b8_" - }, - { - "id": "882822", - "name": "Shakka Philip", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/shakka-philip-songs/uuvVFJ5qi08_" - }, - { - "id": "613921", - "name": "Tom Barnes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tom-barnes-songs/ObvZUE45DcA_" - }, - { - "id": "707698", - "name": "Tove Lo", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tove-lo-songs/wBPjTKDNv9Q_" - }, - { - "id": "562343", - "name": "Cameron Mcvey", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/cameron-mcvey-songs/u,9hrHzdEpg_" - }, - { - "id": "2419724", - "name": "David Charles Marshall Biral", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/david-charles-marshall-biral-songs/kbScH,rEjXM_" - }, - { - "id": "740123", - "name": "Denzel Michael-Akil Baptiste", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/denzel-michael-akil-baptiste-songs/vJVWPosaO6Q_" - }, - { - "id": "769517", - "name": "Dudley", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dudley-songs/WCA3st5wwLE_" - }, - { - "id": "562874", - "name": "Horn", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/horn-songs/dQXQ6gA55qo_" - }, - { - "id": "760111", - "name": "Jamie Morgan", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jamie-morgan-songs/RJV9CkFvSos_" - }, - { - "id": "985587", - "name": "Jeczalik", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jeczalik-songs/iBGPopifGAI_" - }, - { - "id": "934487", - "name": "Langan", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/langan-songs/xxVS,7BBGu8_" - }, - { - "id": "1290807", - "name": "Melanie Joy Fontana", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/melanie-joy-fontana-songs/CNTyLC,YPis_" - }, - { - "id": "7493251", - "name": "Michel Lindgren Schulz", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/michel-lindgren-schulz-songs/w-iIn-ycuSU_" - }, - { - "id": "560118", - "name": "Morley", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/morley-songs/a00Hbl6UIKQ_" - }, - { - "id": "562367", - "name": "Neneh Cherry", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/neneh-cherry-songs/ac3BAkzn73I_" - }, - { - "id": "702791", - "name": "Phil Ramocon", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/phil-ramocon-songs/U4LHEKQP2K0_" - }, - { - "id": "4112470", - "name": "Taylor Upsahl", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/taylor-upsahl-songs/lB3-4Mrcy0Q_" - }, - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "577489", - "name": "Ian Kirkpatrick", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ian-kirkpatrick-songs/zsvJSi5q-As_" - }, - { - "id": "672852", - "name": "Julia Michaels", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/julia-michaels-songs/OboBJBVTzgs_" - }, - { - "id": "2124659", - "name": "Curtis Alan Jones", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/curtis-alan-jones-songs/2zB4dl,Fpyk_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "8374767", - "name": "The Blessed Madonna", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/the-blessed-madonna-songs/sBoRrdAbBS4_" - }, - { - "id": "520974", - "name": "Jamiroquai", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jamiroquai-songs/VGHlGKNMiMU_" - }, - { - "id": "2518190", - "name": "BLACKPINK", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/blackpink-songs/-r0by6dtVic_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/962/Club-Future-Nostalgia-DJ-Mix-English-2020-20231110075206-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/962/Club-Future-Nostalgia-DJ-Mix-English-2020-20231110075206-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/962/Club-Future-Nostalgia-DJ-Mix-English-2020-20231110075206-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "10421077", - "name": "Scared To Be Lonely Remixes Vol. 1", - "description": "", - "type": "album", - "year": 2017, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/scared-to-be-lonely-remixes-vol.-1/318zlRbWW0g_", - "songCount": 6, - "artists": { - "primary": [ - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "750432", - "name": "Martijn Garritsen", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martijn-garritsen-songs/7oZ09GZC50c_" - }, - { - "id": "843759", - "name": "Georgia Ku", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/georgia-ku-songs/iwQiBF32Bec_" - }, - { - "id": "2095256", - "name": "Nathaniel Campany", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nathaniel-campany-songs/t6,t3r50Hwk_" - }, - { - "id": "570816", - "name": "Giorgio Tuinfort", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/giorgio-tuinfort-songs/dzMqx-bmCd0_" - }, - { - "id": "698396", - "name": "Kyle Shearer", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kyle-shearer-songs/aEnCHyqFhTI_" - }, - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4156116", - "name": "Martin Garrix & Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martin-garrix-dua-lipa-songs/8gxYZbVuDEo_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/569/Scared-To-Be-Lonely-Remixes-Vol-1-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/569/Scared-To-Be-Lonely-Remixes-Vol-1-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/569/Scared-To-Be-Lonely-Remixes-Vol-1-English-2017-500x500.jpg" - } - ], - "songs": null - }, - { - "id": "10453520", - "name": "Scared To Be Lonely Remixes Vol. 2", - "description": "", - "type": "album", - "year": 2017, - "playCount": null, - "language": "english", - "explicitContent": false, - "url": "https://www.jiosaavn.com/album/scared-to-be-lonely-remixes-vol.-2/fFAW3fXHiJg_", - "songCount": 6, - "artists": { - "primary": [ - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "750432", - "name": "Martijn Garritsen", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martijn-garritsen-songs/7oZ09GZC50c_" - }, - { - "id": "843759", - "name": "Georgia Ku", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/georgia-ku-songs/iwQiBF32Bec_" - }, - { - "id": "2095256", - "name": "Nathaniel Campany", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nathaniel-campany-songs/t6,t3r50Hwk_" - }, - { - "id": "570816", - "name": "Giorgio Tuinfort", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/giorgio-tuinfort-songs/dzMqx-bmCd0_" - }, - { - "id": "698396", - "name": "Kyle Shearer", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kyle-shearer-songs/aEnCHyqFhTI_" - }, - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4156116", - "name": "Martin Garrix & Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martin-garrix-dua-lipa-songs/8gxYZbVuDEo_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/490/Scared-To-Be-Lonely-Remixes-Vol-2-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/490/Scared-To-Be-Lonely-Remixes-Vol-2-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/490/Scared-To-Be-Lonely-Remixes-Vol-2-English-2017-500x500.jpg" - } - ], - "songs": null - } - ], - "singles": [ - { - "id": "3028238", - "name": "No Lie", - "type": "album", - "year": "2016", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/no-lie/3NXbOTcQ3Tk_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "468845", - "name": "Sean Paul", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-songs/GQPg5UvdL60_" - } - ], - "featured": [], - "all": [ - { - "id": "612926", - "name": "Jamie Sanderson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jamie-sanderson-songs/oXD9kYG6liY_" - }, - { - "id": "1365555", - "name": "Philip Kembo", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/philip-kembo-songs/m,NJhlaFscw_" - }, - { - "id": "562807", - "name": "Sean Paul Henriques", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-henriques-songs/YEox-ir-av8_" - }, - { - "id": "611692", - "name": "Andrew Jackson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-jackson-songs/,pt92v4YXfE_" - }, - { - "id": "698397", - "name": "Emily Warren", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/emily-warren-songs/VwuRln-T5mE_" - }, - { - "id": "468845", - "name": "Sean Paul", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sean-paul-songs/GQPg5UvdL60_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/662/No-Lie-English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/662/No-Lie-English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/662/No-Lie-English-2016-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "22765589", - "name": "Levitating (feat. DaBaby)", - "type": "album", - "year": "2020", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/levitating-feat.-dababy/9WB4qrU9Stw_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "2436622", - "name": "DaBaby", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dababy-songs/woXlnIzw1zU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/651/Levitating-feat-DaBaby-English-2020-20231110075141-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "12586003", - "name": "One Kiss", - "type": "album", - "year": "2018", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/one-kiss/UkpDM6Fh728_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "565985", - "name": "Calvin Harris", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566765", - "name": "Adam Wiles", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/adam-wiles-songs/1RLko-qnkQ0_" - }, - { - "id": "1342573", - "name": "Jessie Reyez", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jessie-reyez-songs/wtw4xIk1bcE_" - }, - { - "id": "565985", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4667177", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/4tucLoOYUWs_" - }, - { - "id": "", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/360/One-Kiss-English-2018-20180406033301-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "49599287", - "name": "Houdini", - "type": "album", - "year": "2023", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/houdini/YKL-I3to3Oc_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1264841", - "name": "Danny L Harle", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/danny-l-harle-songs/8uc,o2eYVw8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "657585", - "name": "Kevin Parker", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kevin-parker-songs/WZROEDcg-u8_" - }, - { - "id": "1266339", - "name": "Tobias Jesso Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tobias-jesso-jr.-songs/7n6h1Xoulxc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/091/Houdini-English-2023-20231110015054-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "10030727", - "name": "Scared to Be Lonely", - "type": "album", - "year": "2017", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/scared-to-be-lonely/sovc7pjxF,4_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "750432", - "name": "Martijn Garritsen", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martijn-garritsen-songs/7oZ09GZC50c_" - }, - { - "id": "843759", - "name": "Georgia Ku", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/georgia-ku-songs/iwQiBF32Bec_" - }, - { - "id": "2095256", - "name": "Nathaniel Campany", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nathaniel-campany-songs/t6,t3r50Hwk_" - }, - { - "id": "698396", - "name": "Kyle Shearer", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/kyle-shearer-songs/aEnCHyqFhTI_" - }, - { - "id": "570816", - "name": "Giorgio Tuinfort", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/giorgio-tuinfort-songs/dzMqx-bmCd0_" - }, - { - "id": "10565467", - "name": "マーティンギャリックス", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/%e3%83%9e%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%ae%e3%83%a3%e3%83%aa%e3%83%83%e3%82%af%e3%82%b9-songs/CPaLemZnMOI_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "4156116", - "name": "Martin Garrix & Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/martin-garrix-dua-lipa-songs/8gxYZbVuDEo_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/331/Scared-To-Be-Lonely-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/331/Scared-To-Be-Lonely-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/331/Scared-To-Be-Lonely-English-2017-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "45537304", - "name": "Dance The Night (From Barbie The Album)", - "type": "album", - "year": "2023", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/dance-the-night-from-barbie-the-album/,d3fJIbyrjU_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/768/Dance-The-Night-From-Barbie-The-Album-English-2023-20230526002150-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "28989509", - "name": "Cold Heart (PNAU Remix)", - "type": "album", - "year": "2021", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/cold-heart-pnau-remix/-lf6ymojqKs_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "518438", - "name": "Elton John", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/elton-john-songs/StFcDog7qS4_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "740046", - "name": "Nicholas Littlemore", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/nicholas-littlemore-songs/yr3Yogzc-KM_" - }, - { - "id": "612731", - "name": "Peter Mayes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/peter-mayes-songs/CQhhulZmt9c_" - }, - { - "id": "680520", - "name": "Sam Littlemore", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sam-littlemore-songs/d9ST8fsTGys_" - }, - { - "id": "518438", - "name": "Elton John", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/elton-john-songs/StFcDog7qS4_" - }, - { - "id": "518323", - "name": "Bernie Taupin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/bernie-taupin-songs/z76mC1tqkPo_" - }, - { - "id": "679480", - "name": "Dean Meredith", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dean-meredith-songs/V1SJ2M4lFs4_" - }, - { - "id": "679479", - "name": "Andrew Meecham", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/andrew-meecham-songs/AHAW0T4nqNo_" - }, - { - "id": "518438", - "name": "Elton John", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/elton-john-songs/StFcDog7qS4_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/068/Cold-Heart-PNAU-Remix--English-2021-20210813063534-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/068/Cold-Heart-PNAU-Remix--English-2021-20210813063534-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/068/Cold-Heart-PNAU-Remix--English-2021-20210813063534-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "13799781", - "name": "Electricity", - "type": "album", - "year": "2018", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/electricity/LTFrcdHB0I0_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1915946", - "name": "Silk City", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/silk-city-songs/qLymIcWldyY_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566374", - "name": "Mark Ronson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/mark-ronson-songs/MP3neLrI07M_" - }, - { - "id": "6100802", - "name": "Thomas Pentz", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/thomas-pentz-songs/4EQZAHvmCoU_" - }, - { - "id": "580821", - "name": "Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jr.-songs/VnXKRZaZXTE_" - }, - { - "id": "610483", - "name": "Diana Gordon", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/diana-gordon-songs/DyTW,HXuI9U_" - }, - { - "id": "775309", - "name": "Romy Madley Croft", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/romy-madley-croft-songs/4pEUXf35rwM_" - }, - { - "id": "599435", - "name": "Philip Meckseper", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/philip-meckseper-songs/OfYGr,YjNdE_" - }, - { - "id": "696616", - "name": "Jacob Olofsson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jacob-olofsson-songs/FLmMx0sTKK4_" - }, - { - "id": "752872", - "name": "Rami Dawod", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/rami-dawod-songs/jdNEw2Fqum4_" - }, - { - "id": "752873", - "name": "Maxime Picard", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/maxime-picard-songs/3bfmrntqXwY_" - }, - { - "id": "", - "name": "Clement Picard", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clement-picard-songs/" - }, - { - "id": "1915946", - "name": "Silk City", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/silk-city-songs/qLymIcWldyY_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "599061", - "name": "Diplo", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/diplo-songs/Sufxu-AWqU0_" - }, - { - "id": "566374", - "name": "Mark Ronson", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/mark-ronson-songs/MP3neLrI07M_" - }, - { - "id": "5370066", - "name": "Silk City", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/silk-city-songs/11RW3M6DJtY_" - }, - { - "id": "", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/360/Electricity-English-2018-20180906074251-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/360/Electricity-English-2018-20180906074251-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/360/Electricity-English-2018-20180906074251-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "23179815", - "name": "Fever", - "type": "album", - "year": "2020", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/fever/VwbbBh,WVQ0_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "2061563", - "name": "Angele", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/angele-songs/CTAPmcDBz3g_" - } - ], - "featured": [], - "all": [ - { - "id": "2061563", - "name": "Angele", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/angele-songs/CTAPmcDBz3g_" - }, - { - "id": "776593", - "name": "Caroline Ailin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/caroline-ailin-songs/ksTT3ixnrvU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "577489", - "name": "Ian Kirkpatrick", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ian-kirkpatrick-songs/zsvJSi5q-As_" - }, - { - "id": "570206", - "name": "Jacob Kasher Hindlin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jacob-kasher-hindlin-songs/anqSKuozjn0_" - }, - { - "id": "672852", - "name": "Julia Michaels", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/julia-michaels-songs/OboBJBVTzgs_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "2061563", - "name": "Angele", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/angele-songs/CTAPmcDBz3g_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/718/Fever-English-2020-20231110075053-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/718/Fever-English-2020-20231110075053-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/718/Fever-English-2020-20231110075053-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "33385974", - "name": "Sweetest Pie", - "type": "album", - "year": "2022", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/sweetest-pie/ss46EdCRRj8_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "3622301", - "name": "Megan Thee Stallion", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/megan-thee-stallion-songs/aobbyrFG,rE_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "3622301", - "name": "Megan Thee Stallion", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/megan-thee-stallion-songs/aobbyrFG,rE_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/298/Sweetest-Pie-English-2022-20240228151353-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/298/Sweetest-Pie-English-2022-20240228151353-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/298/Sweetest-Pie-English-2022-20240228151353-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "26118113", - "name": "Levitating (feat. Prakriti Kakar & Sukriti Kakar) [Amaal Mallik Remix]", - "type": "album", - "year": "2021", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/levitating-feat.-prakriti-kakar-sukriti-kakar-amaal-mallik-remix/eO1y0M0P-xo_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "702498", - "name": "Sarah Hudson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sarah-hudson-songs/pW4Y,NKAPPI_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/701/Levitating-feat-Prakriti-Kakar-Sukriti-Kakar-Amaal-Mallik-Remix-English-2021-20231110075049-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/701/Levitating-feat-Prakriti-Kakar-Sukriti-Kakar-Amaal-Mallik-Remix-English-2021-20231110075049-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/701/Levitating-feat-Prakriti-Kakar-Sukriti-Kakar-Amaal-Mallik-Remix-English-2021-20231110075049-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "10374201", - "name": "Blow Your Mind (Mwah)", - "type": "album", - "year": "2016", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/blow-your-mind-mwah/,vmWXPGM12k_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/708/Blow-Your-Mind-Mwah--English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/708/Blow-Your-Mind-Mwah--English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/708/Blow-Your-Mind-Mwah--English-2016-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "35251756", - "name": "Potion", - "type": "album", - "year": "2022", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": true, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/potion/H09J6gGV6kE_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "565985", - "name": "Calvin Harris", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "780980", - "name": "Young Thug", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/young-thug-songs/FDLHizfHTXY_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "566765", - "name": "Adam Wiles", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/adam-wiles-songs/1RLko-qnkQ0_" - }, - { - "id": "1342573", - "name": "Jessie Reyez", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jessie-reyez-songs/wtw4xIk1bcE_" - }, - { - "id": "826110", - "name": "Maneesh Bidaye", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/maneesh-bidaye-songs/SbnrJXiFc,8_" - }, - { - "id": "714983", - "name": "Jeffery Williams", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jeffery-williams-songs/t2UCf8mvg6E_" - }, - { - "id": "565985", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/QMnR-zr4Bng_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "780980", - "name": "Young Thug", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/young-thug-songs/FDLHizfHTXY_" - }, - { - "id": "13183672", - "name": "Calvin Harris", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/calvin-harris-songs/9vHZ4iCAC28_" - }, - { - "id": "", - "name": "Dua Lipa & Young Thug", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-young-thug-songs/" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/599/Potion-English-2022-20220525231311-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/599/Potion-English-2022-20220525231311-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/599/Potion-English-2022-20220525231311-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "21605171", - "name": "UN DIA (ONE DAY)", - "type": "album", - "year": "2020", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "spanish", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/un-dia-one-day/vczKv2ytPPM_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1017816", - "name": "J Balvin", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/j-balvin-songs/kSQKdiFEeZ8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "2029479", - "name": "Bad Bunny", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/bad-bunny-songs/hHU81hLRJc8_" - }, - { - "id": "1036632", - "name": "Tainy", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tainy-songs/Q-6FV2PFy6E_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "740056", - "name": "Jose Alvaro Osorio Balvin", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/jose-alvaro-osorio-balvin-songs/OAynqozci,E_" - }, - { - "id": "11349294", - "name": "Maximiliano Rivera Cordoba", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/maximiliano-rivera-cordoba-songs/3T8sJOPijbA_" - }, - { - "id": "3792455", - "name": "Benito Antonio Martínez Ocasio", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/benito-antonio-martinez-ocasio-songs/suYOraOxkoI_" - }, - { - "id": "698785", - "name": "Daystar Peterson", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/daystar-peterson-songs/ag,k6,85t-w_" - }, - { - "id": "607510", - "name": "Marcos Masis", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/marcos-masis-songs/aDrbGbnsNAE_" - }, - { - "id": "2122895", - "name": "Alejandro Borrero", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/alejandro-borrero-songs/DfnuyED5spc_" - }, - { - "id": "2122894", - "name": "Ivanni Rodriguez", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/ivanni-rodriguez-songs/D2uPsKsBtIk_" - }, - { - "id": "825030", - "name": "Clarence Coffee Jr.", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr.-songs/woRdMTkfuNE_" - }, - { - "id": "1017816", - "name": "J Balvin", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/j-balvin-songs/kSQKdiFEeZ8_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "2029479", - "name": "Bad Bunny", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/bad-bunny-songs/hHU81hLRJc8_" - }, - { - "id": "1036632", - "name": "Tainy", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/tainy-songs/Q-6FV2PFy6E_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/870/UN-DIA-ONE-DAY--Spanish-2020-20200723000636-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/870/UN-DIA-ONE-DAY--Spanish-2020-20200723000636-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/870/UN-DIA-ONE-DAY--Spanish-2020-20200723000636-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "3319997", - "name": "Thinking 'Bout You", - "type": "album", - "year": "2017", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/thinking-bout-you/3H-t14PvkaE_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/136/Thinking-Bout-You-English-2017-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/136/Thinking-Bout-You-English-2017-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/136/Thinking-Bout-You-English-2017-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "21941981", - "name": "Levitating (feat. Madonna and Missy Elliott) [The Blessed Madonna Remix]", - "type": "album", - "year": "2020", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/levitating-feat.-madonna-and-missy-elliott-the-blessed-madonna-remix/b0nsjcIYMhw_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/140/Levitating-feat-Madonna-and-Missy-Elliott-The-Blessed-Madonna-Remix--English-2020-20200810120042-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/140/Levitating-feat-Madonna-and-Missy-Elliott-The-Blessed-Madonna-Remix--English-2020-20200810120042-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/140/Levitating-feat-Madonna-and-Missy-Elliott-The-Blessed-Madonna-Remix--English-2020-20200810120042-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "2932661", - "name": "Room For 2", - "type": "album", - "year": "2016", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/room-for-2/UqYNSRaDonc_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/325/Room-For-2-English-2016-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/325/Room-For-2-English-2016-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/325/Room-For-2-English-2016-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "29955036", - "name": "Love Again (Imanbek Remix)", - "type": "album", - "year": "2021", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/love-again-imanbek-remix/waMpheKthxo_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "742265", - "name": "Chelcee Grimes", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/chelcee-grimes-songs/XwP3snpNdDI_" - }, - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "585225", - "name": "Crosby", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/crosby-songs/VnQRDtMVlow_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "599533", - "name": "Stephen Kozmeniuk", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/stephen-kozmeniuk-songs/lS1-2YuC5oc_" - }, - { - "id": "1130984", - "name": "Wallman", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wallman-songs/QkFVfxVnRxw_" - }, - { - "id": "2100501", - "name": "Wartell", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/wartell-songs/BMNd28V2ydA_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/555/Love-Again-Imanbek-Remix-English-2021-20231110075123-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/555/Love-Again-Imanbek-Remix-English-2021-20231110075123-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/555/Love-Again-Imanbek-Remix-English-2021-20231110075123-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "27617944", - "name": "CAN THEY HEAR US (From ‘Gully’ with original Daniel Heath Score)", - "type": "album", - "year": "2021", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/can-they-hear-us-from-%e2%80%98gully%e2%80%99-with-original-daniel-heath-score/p6gdE,pmLfM_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "573802", - "name": "Clarence Coffee Jr", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/clarence-coffee-jr-songs/2mX96rBxCYU_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/277/CAN-THEY-HEAR-US-From-Gully-with-original-Daniel-Heath-Score--English-2021-20210603233951-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/277/CAN-THEY-HEAR-US-From-Gully-with-original-Daniel-Heath-Score--English-2021-20210603233951-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/277/CAN-THEY-HEAR-US-From-Gully-with-original-Daniel-Heath-Score--English-2021-20210603233951-500x500.jpg" - } - ], - "downloadUrl": [] - }, - { - "id": "25811277", - "name": "We're Good (Dillon Francis Remix)", - "type": "album", - "year": "2021", - "releaseDate": null, - "duration": null, - "label": null, - "explicitContent": false, - "playCount": null, - "language": "english", - "hasLyrics": false, - "lyricsId": null, - "url": "https://www.jiosaavn.com/album/were-good-dillon-francis-remix/wcegyVP,2VQ_", - "copyright": null, - "album": { - "id": null, - "name": null, - "url": null - }, - "artists": { - "primary": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "primary_artists", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ], - "featured": [], - "all": [ - { - "id": "1274170", - "name": "Dua Lipa", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - }, - { - "id": "698397", - "name": "Emily Warren", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/emily-warren-songs/VwuRln-T5mE_" - }, - { - "id": "740039", - "name": "Scott Harris", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/scott-harris-songs/GD3O7jPuE30_" - }, - { - "id": "887068", - "name": "Sylvester Willy Sivertsen", - "role": "music", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/sylvester-willy-sivertsen-songs/3jM1dmsjoPA_" - }, - { - "id": "1274170", - "name": "Dua Lipa", - "role": "singers", - "image": [], - "type": "artist", - "url": "https://www.jiosaavn.com/artist/dua-lipa-songs/r-OWIKgpX2I_" - } - ] - }, - "image": [ - { - "quality": "50x50", - "url": "https://c.saavncdn.com/332/We-re-Good-Dillon-Francis-Remix-English-2021-20231110075345-50x50.jpg" - }, - { - "quality": "150x150", - "url": "https://c.saavncdn.com/332/We-re-Good-Dillon-Francis-Remix-English-2021-20231110075345-150x150.jpg" - }, - { - "quality": "500x500", - "url": "https://c.saavncdn.com/332/We-re-Good-Dillon-Francis-Remix-English-2021-20231110075345-500x500.jpg" - } - ], - "downloadUrl": [] - } - ], - "similarArtists": [] - } -} \ No newline at end of file diff --git a/lib/apis/artist_api.dart b/lib/apis/artist_api.dart index b0d506f..3c883eb 100644 --- a/lib/apis/artist_api.dart +++ b/lib/apis/artist_api.dart @@ -3,10 +3,10 @@ import 'dart:developer'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fpdart/fpdart.dart'; -import 'package:saavn/core/constants.dart'; -import 'package:saavn/core/core.dart'; +import 'package:sangeet/core/constants.dart'; +import 'package:sangeet/core/core.dart'; import 'package:http/http.dart' as http; -import 'package:saavn/models/artists/sub_artist_model.dart'; +import 'package:sangeet/models/artists/sub_artist_model.dart'; final artistAPIProvider = Provider((ref) { return ArtistAPI(); diff --git a/lib/apis/song_api.dart b/lib/apis/song_api.dart index 2f732b4..6c18992 100644 --- a/lib/apis/song_api.dart +++ b/lib/apis/song_api.dart @@ -3,9 +3,9 @@ import 'dart:developer'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fpdart/fpdart.dart'; -import 'package:saavn/core/constants.dart'; -import 'package:saavn/core/core.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/core/constants.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/models/song_model.dart'; import 'package:http/http.dart' as http; final songAPIProvider = Provider((ref) { diff --git a/lib/core/constants.dart b/lib/core/constants.dart index d86f539..7bdd374 100644 --- a/lib/core/constants.dart +++ b/lib/core/constants.dart @@ -1,6 +1,6 @@ class Constants { static String serverUrl = "saavn.dev"; - static String appName = "Saavn Desktop"; + static String appName = "Sangeet Desktop"; static String appIconPath = "assets/app_icon.ico"; } diff --git a/lib/core/type_defs.dart b/lib/core/type_defs.dart index 91d033a..762767a 100644 --- a/lib/core/type_defs.dart +++ b/lib/core/type_defs.dart @@ -1,5 +1,5 @@ import 'package:fpdart/fpdart.dart'; -import 'package:saavn/core/failure.dart'; +import 'package:sangeet/core/failure.dart'; typedef FutureEither = Future>; typedef FutureEitherVoid = FutureEither; diff --git a/lib/frame/commons.dart b/lib/frame/commons.dart index d64eaa8..db4835b 100644 --- a/lib/frame/commons.dart +++ b/lib/frame/commons.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/functions/explore/views/explore_view.dart'; -import 'package:saavn/functions/player/views/playlist_view.dart'; -import 'package:saavn/functions/search/views/search_view.dart'; -import 'package:saavn/functions/settings/views/settings_view.dart'; +import 'package:sangeet/functions/explore/views/explore_view.dart'; +import 'package:sangeet/functions/player/views/playlist_view.dart'; +import 'package:sangeet/functions/search/views/search_view.dart'; +import 'package:sangeet/functions/settings/views/settings_view.dart'; final appScreenConfigProvider = StateNotifierProvider((ref) { @@ -13,7 +13,7 @@ final appScreenConfigProvider = enum Screens { explore( AppScreen( - name: "Explore Saavn", + name: "Explore Sangeet", view: ExploreView(), ), ), diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 4f47ebf..1089ade 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -3,12 +3,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; -import 'package:saavn/core/constants.dart'; -import 'package:saavn/frame/commons.dart'; -import 'package:saavn/frame/widgets/sidebar.dart'; -import 'package:saavn/functions/player/controllers/player_controller.dart'; -import 'package:saavn/functions/player/widgets/base_audio_player.dart'; -import 'package:saavn/functions/shortcuts/actions.dart'; +import 'package:sangeet/core/constants.dart'; +import 'package:sangeet/frame/commons.dart'; +import 'package:sangeet/frame/widgets/sidebar.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/widgets/base_audio_player.dart'; +import 'package:sangeet/functions/shortcuts/actions.dart'; import 'package:sidebarx/sidebarx.dart'; import 'package:tray_manager/tray_manager.dart'; import 'package:window_manager/window_manager.dart'; diff --git a/lib/frame/widgets/sidebar.dart b/lib/frame/widgets/sidebar.dart index 71919de..8c5d97a 100644 --- a/lib/frame/widgets/sidebar.dart +++ b/lib/frame/widgets/sidebar.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/frame/commons.dart'; +import 'package:sangeet/frame/commons.dart'; import 'package:sidebarx/sidebarx.dart'; class SideBar extends ConsumerWidget { diff --git a/lib/functions/explore/controllers/explore_controller.dart b/lib/functions/explore/controllers/explore_controller.dart index 715948a..ca81191 100644 --- a/lib/functions/explore/controllers/explore_controller.dart +++ b/lib/functions/explore/controllers/explore_controller.dart @@ -1,10 +1,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/apis/artist_api.dart'; -import 'package:saavn/apis/song_api.dart'; -import 'package:saavn/models/artists/sub_artist_model.dart'; -import 'package:saavn/models/explore_model.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/apis/artist_api.dart'; +import 'package:sangeet/apis/song_api.dart'; +import 'package:sangeet/models/artists/sub_artist_model.dart'; +import 'package:sangeet/models/explore_model.dart'; +import 'package:sangeet/models/song_model.dart'; final exploreControllerProvider = StateNotifierProvider((ref) { diff --git a/lib/functions/explore/views/explore_view.dart b/lib/functions/explore/views/explore_view.dart index 4b3d50f..7d5d720 100644 --- a/lib/functions/explore/views/explore_view.dart +++ b/lib/functions/explore/views/explore_view.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/core/core.dart'; -import 'package:saavn/functions/explore/controllers/explore_controller.dart'; -import 'package:saavn/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; class ExploreView extends ConsumerStatefulWidget { const ExploreView({super.key}); diff --git a/lib/functions/notification/song_notifications.dart b/lib/functions/notification/song_notifications.dart index bb8113f..9b6f1b8 100644 --- a/lib/functions/notification/song_notifications.dart +++ b/lib/functions/notification/song_notifications.dart @@ -1,13 +1,13 @@ import 'dart:io'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/song_model.dart'; import 'package:windows_notification/notification_message.dart'; import 'package:windows_notification/windows_notification.dart'; import 'package:path_provider/path_provider.dart'; import 'package:http/http.dart' as http; class SongNotifications { - final _winNotifyPlugin = WindowsNotification(applicationId: "Saavn Music"); + final _winNotifyPlugin = WindowsNotification(applicationId: "Sangeet"); Future getImageBytes(String url, String id) async { final supportDir = await getTemporaryDirectory(); diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 57ecfb4..57a82d1 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -4,10 +4,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:saavn/functions/explore/controllers/explore_controller.dart'; -import 'package:saavn/functions/player/widgets/common.dart'; -import 'package:saavn/functions/settings/controllers/settings_controller.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; +import 'package:sangeet/functions/player/widgets/common.dart'; +import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; +import 'package:sangeet/models/song_model.dart'; final playerControllerProvider = StateNotifierProvider((ref) { diff --git a/lib/functions/player/views/playlist_view.dart b/lib/functions/player/views/playlist_view.dart index fb4aaa4..9b5d344 100644 --- a/lib/functions/player/views/playlist_view.dart +++ b/lib/functions/player/views/playlist_view.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; -import 'package:saavn/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/song_model.dart'; class PlaylistView extends ConsumerStatefulWidget { const PlaylistView({super.key}); diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 9939e8c..54d5735 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -4,13 +4,13 @@ import 'package:flutter/widgets.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/frame/commons.dart'; +import 'package:sangeet/frame/commons.dart'; -import 'package:saavn/functions/player/controllers/player_controller.dart'; -import 'package:saavn/functions/player/widgets/common.dart'; -import 'package:saavn/functions/player/widgets/player_control_buttons.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/widgets/common.dart'; +import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/song_model.dart'; // FOR APPBAR WIDGET PreferredSizeWidget getBasePlayerAppbar(BuildContext context) { diff --git a/lib/functions/player/widgets/player_control_buttons.dart b/lib/functions/player/widgets/player_control_buttons.dart index a1e592d..971c7c1 100644 --- a/lib/functions/player/widgets/player_control_buttons.dart +++ b/lib/functions/player/widgets/player_control_buttons.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; -import 'package:saavn/functions/player/widgets/common.dart'; +import 'package:sangeet/functions/player/widgets/common.dart'; class PlayerControllerButtons extends StatelessWidget { final AudioPlayer player; diff --git a/lib/functions/search/controllers/search_controller.dart b/lib/functions/search/controllers/search_controller.dart index eb079e8..532c34f 100644 --- a/lib/functions/search/controllers/search_controller.dart +++ b/lib/functions/search/controllers/search_controller.dart @@ -1,6 +1,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/apis/song_api.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/apis/song_api.dart'; +import 'package:sangeet/models/song_model.dart'; final searchControllerProvider = StateNotifierProvider((ref) { diff --git a/lib/functions/search/views/search_view.dart b/lib/functions/search/views/search_view.dart index 0d06262..58c554e 100644 --- a/lib/functions/search/views/search_view.dart +++ b/lib/functions/search/views/search_view.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/core/core.dart'; -import 'package:saavn/functions/player/controllers/player_controller.dart'; -import 'package:saavn/functions/search/controllers/search_controller.dart'; -import 'package:saavn/functions/search/widgets/searchbar.dart'; -import 'package:saavn/functions/search/widgets/song_tile.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/search/controllers/search_controller.dart'; +import 'package:sangeet/functions/search/widgets/searchbar.dart'; +import 'package:sangeet/functions/search/widgets/song_tile.dart'; class SearchView extends ConsumerStatefulWidget { const SearchView({super.key}); diff --git a/lib/functions/search/widgets/song_tile.dart b/lib/functions/search/widgets/song_tile.dart index 9714a97..563a704 100644 --- a/lib/functions/search/widgets/song_tile.dart +++ b/lib/functions/search/widgets/song_tile.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/song_model.dart'; class SearchSongTile extends StatelessWidget { final SongModel song; diff --git a/lib/functions/settings/controllers/settings_controller.dart b/lib/functions/settings/controllers/settings_controller.dart index 99369ce..9f500ff 100644 --- a/lib/functions/settings/controllers/settings_controller.dart +++ b/lib/functions/settings/controllers/settings_controller.dart @@ -1,6 +1,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/core/constants.dart'; -import 'package:saavn/models/helpers/download_quality.dart'; +import 'package:sangeet/core/constants.dart'; +import 'package:sangeet/models/helpers/download_quality.dart'; import 'package:shared_preferences/shared_preferences.dart'; final songQualityProvider = FutureProvider((ref) { diff --git a/lib/functions/settings/views/settings_view.dart b/lib/functions/settings/views/settings_view.dart index bd18901..8efae09 100644 --- a/lib/functions/settings/views/settings_view.dart +++ b/lib/functions/settings/views/settings_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/functions/settings/widgets/widgets.dart'; +import 'package:sangeet/functions/settings/widgets/widgets.dart'; class SettingsView extends ConsumerWidget { const SettingsView({super.key}); diff --git a/lib/functions/settings/widgets/playback_quality_setting.dart b/lib/functions/settings/widgets/playback_quality_setting.dart index a52eaa1..1abbe3a 100644 --- a/lib/functions/settings/widgets/playback_quality_setting.dart +++ b/lib/functions/settings/widgets/playback_quality_setting.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:saavn/core/constants.dart'; -import 'package:saavn/functions/settings/controllers/settings_controller.dart'; -import 'package:saavn/models/helpers/download_quality.dart'; +import 'package:sangeet/core/constants.dart'; +import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; +import 'package:sangeet/models/helpers/download_quality.dart'; import 'package:shared_preferences/shared_preferences.dart'; class PlaybackQualitySetting extends ConsumerStatefulWidget { diff --git a/lib/functions/shortcuts/actions.dart b/lib/functions/shortcuts/actions.dart index 7464674..5bf2ed3 100644 --- a/lib/functions/shortcuts/actions.dart +++ b/lib/functions/shortcuts/actions.dart @@ -1,8 +1,8 @@ import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; -import 'package:saavn/functions/notification/song_notifications.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/functions/notification/song_notifications.dart'; +import 'package:sangeet/models/song_model.dart'; enum KeyAction { playPauseMusic, diff --git a/lib/initialization.dart b/lib/initialization.dart index 434e855..0ed95eb 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -1,7 +1,7 @@ import 'package:audio_session/audio_session.dart'; import 'package:flutter/material.dart'; import 'package:flutter_acrylic/flutter_acrylic.dart'; -import 'package:saavn/core/constants.dart'; +import 'package:sangeet/core/constants.dart'; import 'package:system_theme/system_theme.dart'; import 'package:tray_manager/tray_manager.dart'; import 'package:window_manager/window_manager.dart'; @@ -24,7 +24,7 @@ Future initWindowManager() async { WindowOptions windowOptions = const WindowOptions( center: true, - title: "Saavn Music Desktop", + title: "Sangeet Desktop", ); windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.show(); diff --git a/lib/main.dart b/lib/main.dart index 12295b8..e08d64e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,8 +5,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; import 'package:system_theme/system_theme.dart'; -import 'package:saavn/frame/home.dart'; -import 'package:saavn/initialization.dart'; +import 'package:sangeet/frame/home.dart'; +import 'package:sangeet/initialization.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -26,7 +26,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Saavn Music', + title: 'Sangeet', debugShowCheckedModeBanner: false, theme: ThemeData( colorSchemeSeed: SystemTheme.accentColor.accent, diff --git a/lib/models/artists/artist_model.dart b/lib/models/artists/artist_model.dart index 190b3f9..3719feb 100644 --- a/lib/models/artists/artist_model.dart +++ b/lib/models/artists/artist_model.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; -import 'package:saavn/models/helpers/song_image.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/helpers/song_image.dart'; +import 'package:sangeet/models/song_model.dart'; class ArtistModel { final String id; diff --git a/lib/models/artists/sub_artist_model.dart b/lib/models/artists/sub_artist_model.dart index f975c0f..c887b05 100644 --- a/lib/models/artists/sub_artist_model.dart +++ b/lib/models/artists/sub_artist_model.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; -import 'package:saavn/models/helpers/song_image.dart'; +import 'package:sangeet/models/helpers/song_image.dart'; class SubArtistModel { final String id; diff --git a/lib/models/explore_model.dart b/lib/models/explore_model.dart index 41d9597..4389922 100644 --- a/lib/models/explore_model.dart +++ b/lib/models/explore_model.dart @@ -1,5 +1,5 @@ -import 'package:saavn/models/artists/sub_artist_model.dart'; -import 'package:saavn/models/song_model.dart'; +import 'package:sangeet/models/artists/sub_artist_model.dart'; +import 'package:sangeet/models/song_model.dart'; class ExploreModel { final List songs; diff --git a/lib/models/helpers/download_url.dart b/lib/models/helpers/download_url.dart index 3376e5d..14db767 100644 --- a/lib/models/helpers/download_url.dart +++ b/lib/models/helpers/download_url.dart @@ -1,7 +1,7 @@ // ignore_for_file: public_member_api_docs, sort_constructors_first import 'dart:convert'; -import 'package:saavn/models/helpers/download_quality.dart'; +import 'package:sangeet/models/helpers/download_quality.dart'; class DownloadUrl { SongQualityType quality; diff --git a/lib/models/song_model.dart b/lib/models/song_model.dart index aebabc5..a02b9e5 100644 --- a/lib/models/song_model.dart +++ b/lib/models/song_model.dart @@ -4,9 +4,9 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; -import 'package:saavn/models/helpers/album_submodal.dart'; -import 'package:saavn/models/helpers/download_url.dart'; -import 'package:saavn/models/helpers/song_image.dart'; +import 'package:sangeet/models/helpers/album_submodal.dart'; +import 'package:sangeet/models/helpers/download_url.dart'; +import 'package:sangeet/models/helpers/song_image.dart'; @immutable class SongModel { diff --git a/pubspec.lock b/pubspec.lock index 094bd5e..052fcc8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -496,6 +496,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + rename_app: + dependency: "direct main" + description: + name: rename_app + sha256: "0267b7507ca70ede47b1e5a0b391e547d0e0854956a00fad2585fb6c5968dc24" + url: "https://pub.dev" + source: hosted + version: "1.6.1" riverpod: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d087805..65b7702 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: saavn +name: sangeet description: "A Music App." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. @@ -56,6 +56,7 @@ dependencies: bot_toast: ^4.1.3 windows_notification: ^1.2.0 path_provider: ^2.1.3 + rename_app: ^1.6.1 dev_dependencies: flutter_test: @@ -74,7 +75,7 @@ flutter_launcher_icons: windows: generate: true image_path: "assets/music.png" - icon_size: 48 # min:48, max:256, default: 48 + icon_size: 256 # min:48, max:256, default: 48 diff --git a/test/widget_test.dart b/test/widget_test.dart index f189e24..7f1dd12 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:saavn/main.dart'; +import 'package:sangeet/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index 520ce44..fbae2af 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -1,10 +1,10 @@ # Project-level configuration. cmake_minimum_required(VERSION 3.14) -project(Saavn LANGUAGES CXX) +project(Sangeet LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. -set(BINARY_NAME "Saavn") +set(BINARY_NAME "Sangeet") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc index b126b5b..520e487 100644 --- a/windows/runner/Runner.rc +++ b/windows/runner/Runner.rc @@ -90,12 +90,12 @@ BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "io.github.priyanshuverma-dev" "\0" - VALUE "FileDescription", "Saavn Music" "\0" + VALUE "FileDescription", "Sangeet Desktop" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "Saavn" "\0" + VALUE "InternalName", "Sangeet" "\0" VALUE "LegalCopyright", "Copyright (C) 2024 Priyanshu Verma. All rights reserved." "\0" - VALUE "OriginalFilename", "Saavn.exe" "\0" - VALUE "ProductName", "Saavn" "\0" + VALUE "OriginalFilename", "Sangeet.exe" "\0" + VALUE "ProductName", "Sangeet" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index 0d21002..481946c 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"Saavn", origin, size)) { + if (!window.Create(L"Sangeet", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico index dbb7ff481ae817510686f3e700e8ef9a1c9c702b..aa0575ea1d6ddbf828ec3ad13edc5466ee3df852 100644 GIT binary patch literal 17326 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 Date: Sun, 30 Jun 2024 19:17:03 +0530 Subject: [PATCH 02/20] explore pg data populated --- lib/core/api_provider.dart | 6 + lib/core/utils.dart | 4 + lib/frame/commons.dart | 24 ++- lib/frame/home.dart | 47 +++-- .../controllers/explore_controller.dart | 66 +++--- lib/functions/explore/views/explore_view.dart | 72 +------ lib/functions/explore/widgets/album_card.dart | 66 ++++++ lib/functions/explore/widgets/chart_card.dart | 64 ++++++ .../explore/widgets/explore_list.dart | 188 ++++++++++++++++++ .../explore/widgets/playlist_card.dart | 70 +++++++ lib/functions/explore/widgets/radio_card.dart | 75 +++++++ lib/functions/explore/widgets/trend_card.dart | 114 +++++++++++ .../notification/song_notifications.dart | 14 +- .../player/controllers/player_controller.dart | 76 +++++-- lib/functions/player/views/playlist_view.dart | 9 +- .../player/widgets/base_audio_player.dart | 10 +- lib/functions/search/views/search_view.dart | 12 +- .../controllers/settings_controller.dart | 10 +- lib/functions/shortcuts/actions.dart | 10 +- lib/initialization.dart | 6 - lib/main.dart | 3 +- pubspec.lock | 39 +++- pubspec.yaml | 6 +- 23 files changed, 790 insertions(+), 201 deletions(-) create mode 100644 lib/core/api_provider.dart create mode 100644 lib/functions/explore/widgets/album_card.dart create mode 100644 lib/functions/explore/widgets/chart_card.dart create mode 100644 lib/functions/explore/widgets/explore_list.dart create mode 100644 lib/functions/explore/widgets/playlist_card.dart create mode 100644 lib/functions/explore/widgets/radio_card.dart create mode 100644 lib/functions/explore/widgets/trend_card.dart diff --git a/lib/core/api_provider.dart b/lib/core/api_provider.dart new file mode 100644 index 0000000..522b2b8 --- /dev/null +++ b/lib/core/api_provider.dart @@ -0,0 +1,6 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final sangeetAPIProvider = Provider((ref) { + return SangeetAPI(); +}); \ No newline at end of file diff --git a/lib/core/utils.dart b/lib/core/utils.dart index 28a7f53..3ef9cd7 100644 --- a/lib/core/utils.dart +++ b/lib/core/utils.dart @@ -19,3 +19,7 @@ void unfocusKeyboard(context) { currentFocus.unfocus(); } } + +Color hexToColor(String code) { + return Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000); +} diff --git a/lib/frame/commons.dart b/lib/frame/commons.dart index db4835b..7301fc9 100644 --- a/lib/frame/commons.dart +++ b/lib/frame/commons.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/player/views/playlist_view.dart'; @@ -14,26 +15,29 @@ enum Screens { explore( AppScreen( name: "Explore Sangeet", + index: 0, view: ExploreView(), ), ), - playlist( + search( AppScreen( - name: "Playlists", - view: PlaylistView(), + name: "Search Songs", + index: 1, + view: SearchView(), ), ), settings( AppScreen( name: "Settings", + index: 2, view: SettingsView(), ), ), - - search( + playlist( AppScreen( - name: "Search Songs", - view: SearchView(), + name: "Playlists", + index: 0, + view: PlaylistView(), ), ); @@ -44,6 +48,10 @@ enum Screens { class AppScreenConfig extends StateNotifier { AppScreenConfig() : super(Screens.explore); + void onIndex(int idx) { + state = Screens.values.firstWhere((e) => e.index == idx); + } + void goto({required Screens screen}) { state = screen; } @@ -52,9 +60,11 @@ class AppScreenConfig extends StateNotifier { class AppScreen { final Widget view; final String name; + final int index; const AppScreen({ required this.view, required this.name, + required this.index, }); } diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 1089ade..9c125dd 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -1,27 +1,15 @@ -import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; import 'package:sangeet/core/constants.dart'; import 'package:sangeet/frame/commons.dart'; -import 'package:sangeet/frame/widgets/sidebar.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/base_audio_player.dart'; import 'package:sangeet/functions/shortcuts/actions.dart'; -import 'package:sidebarx/sidebarx.dart'; import 'package:tray_manager/tray_manager.dart'; import 'package:window_manager/window_manager.dart'; -class ExampleIntent extends Intent {} - -class ExampleAction extends Action { - @override - void invoke(covariant ExampleIntent intent) { - BotToast.showText(text: 'ExampleAction invoked'); - } -} - class HomeFrame extends ConsumerStatefulWidget { const HomeFrame({super.key}); @@ -31,9 +19,6 @@ class HomeFrame extends ConsumerStatefulWidget { class _HomeFrameState extends ConsumerState with TrayListener, WindowListener { - final SidebarXController sidebarXController = - SidebarXController(selectedIndex: 0); - @override void initState() { super.initState(); @@ -50,6 +35,7 @@ class _HomeFrameState extends ConsumerState @override Widget build(BuildContext context) { + final screenConfig = ref.watch(appScreenConfigProvider.notifier); final screen = ref.watch(appScreenConfigProvider).screen; return Actions( actions: >{ @@ -72,7 +58,36 @@ class _HomeFrameState extends ConsumerState child: Scaffold( body: Row( children: [ - SideBar(controller: sidebarXController), + NavigationRail( + selectedIndex: screen.index, + onDestinationSelected: (i) => screenConfig.onIndex(i), + destinations: const [ + NavigationRailDestination( + icon: Icon(Icons.home), + label: Text("Home"), + ), + NavigationRailDestination( + icon: Icon(Icons.search), + label: Text("Search"), + ), + NavigationRailDestination( + icon: Icon(Icons.settings), + label: Text("Settings"), + ), + ], + leading: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Image.asset( + 'assets/app_icon.ico', + width: 35, + ), + ), + elevation: 10, + labelType: NavigationRailLabelType.all, + indicatorShape: ContinuousRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + ), Expanded( child: screen.view, ), diff --git a/lib/functions/explore/controllers/explore_controller.dart b/lib/functions/explore/controllers/explore_controller.dart index ca81191..c3f21dc 100644 --- a/lib/functions/explore/controllers/explore_controller.dart +++ b/lib/functions/explore/controllers/explore_controller.dart @@ -1,16 +1,12 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/apis/artist_api.dart'; -import 'package:sangeet/apis/song_api.dart'; -import 'package:sangeet/models/artists/sub_artist_model.dart'; -import 'package:sangeet/models/explore_model.dart'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; final exploreControllerProvider = StateNotifierProvider((ref) { return ExploreController( - songAPI: ref.watch(songAPIProvider), - artistAPI: ref.watch(artistAPIProvider), + api: ref.watch(sangeetAPIProvider), ); }); @@ -20,45 +16,31 @@ final getExploreDataProvider = FutureProvider((ref) { }); class ExploreController extends StateNotifier { - final SongAPI _songAPI; - final ArtistAPI _artistAPI; - ExploreController({required SongAPI songAPI, required ArtistAPI artistAPI}) - : _songAPI = songAPI, - _artistAPI = artistAPI, + final SangeetAPI _api; + ExploreController({required SangeetAPI api}) + : _api = api, super(false); - Future getExploreData() async { - List songs = []; - List artists = []; - final fetchedsongs = await _songAPI.fetchInitData(); - final fetchedArtists = await _artistAPI.fetchInitArtists(); - - fetchedsongs.fold((l) { - throw Error.throwWithStackTrace(l.message, l.stackTrace); - }, (r) => songs = r); - - fetchedArtists.fold((l) { - throw Error.throwWithStackTrace(l.message, l.stackTrace); - }, (r) => artists = r); - - final data = ExploreModel( - songs: songs, - artists: artists, - ); - + Future getExploreData() async { + final data = await _api.explore.browse(); + if (data == null) { + throw Error.throwWithStackTrace( + "Unable to fetch data!", + StackTrace.current, + ); + } return data; } - Future> getSongRecommendationData(String id) async { - List songs = []; - - final res = await _songAPI.fetchSongRecommedationData(id: id); + Future getRadio(String id, bool featured) async { + final data = await _api.song.radio(songId: id, featured: featured); - res.fold((l) { - if (kDebugMode) { - print("RECOMMENDED EXPLORE DATA ERROR: ${l.message}"); - } - }, (r) => songs = r); - return songs; + if (data == null) { + throw Error.throwWithStackTrace( + "Unable to fetch data!", + StackTrace.current, + ); + } + return data; } } diff --git a/lib/functions/explore/views/explore_view.dart b/lib/functions/explore/views/explore_view.dart index 7d5d720..3e8573a 100644 --- a/lib/functions/explore/views/explore_view.dart +++ b/lib/functions/explore/views/explore_view.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/core/core.dart'; -import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; -import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/explore/widgets/explore_list.dart'; class ExploreView extends ConsumerStatefulWidget { const ExploreView({super.key}); @@ -14,72 +12,6 @@ class ExploreView extends ConsumerStatefulWidget { class _ExploreViewState extends ConsumerState { @override Widget build(BuildContext context) { - return const SingleChildScrollView( - child: ExploreList(), - ); - } -} - -class ExploreList extends ConsumerWidget { - const ExploreList({super.key}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final player = ref.read(getAudioPlayer); - - return ref.watch(getExploreDataProvider).when( - data: (data) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // SONGS LIST // - const Padding( - padding: EdgeInsets.all(20.0), - child: Text( - 'Trending Songs.', - style: TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - scrollDirection: Axis.vertical, - physics: const ClampingScrollPhysics(), - shrinkWrap: true, - itemCount: data.songs.length, - itemBuilder: (context, index) { - final song = data.songs[index]; - return ListTile( - title: Text(song.name), - subtitle: Text("${song.label} - ${song.year}"), - leading: CircleAvatar( - radius: 25, - backgroundColor: Theme.of(context).primaryColorDark, - foregroundImage: NetworkImage(song.image[0].url), - ), - onTap: () async { - if (player.audioSource?.sequence[0].tag.id == - song.id) { - return; - } - - ref - .read(playerControllerProvider.notifier) - .setSong(song: song); - }); - }, - ) - // ARTISTS GRID // - ], - ); - }, - error: (error, stackTrace) { - return ErrorText( - error: error.toString(), - ); - }, - loading: () => const Loader(), - ); + return const ExploreList(); } } diff --git a/lib/functions/explore/widgets/album_card.dart b/lib/functions/explore/widgets/album_card.dart new file mode 100644 index 0000000..e6f6f75 --- /dev/null +++ b/lib/functions/explore/widgets/album_card.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class AlbumCard extends StatelessWidget { + final VoidCallback onTap; + final AlbumModel album; + const AlbumCard({super.key, required this.onTap, required this.album}); + + @override + Widget build(BuildContext context) { + return Card( + margin: const EdgeInsets.all(5.0), + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(15), + child: Container( + width: 150, + height: 100, + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircleAvatar( + radius: 55, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(album.images[2].url), + ), + const SizedBox(height: 10), + Text( + album.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + maxLines: 1, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(1.0), + child: Text( + album.artists.map((e) => e.name).toList()[0], + style: const TextStyle( + fontSize: 16, + ), + ), + ), + Visibility( + visible: album.explicitContent, + child: const Icon( + Icons.explicit, + size: 16, + ), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/explore/widgets/chart_card.dart b/lib/functions/explore/widgets/chart_card.dart new file mode 100644 index 0000000..727dbea --- /dev/null +++ b/lib/functions/explore/widgets/chart_card.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class ChartCard extends StatelessWidget { + final BrowseChartModel chart; + final VoidCallback onTap; + const ChartCard({super.key, required this.chart, required this.onTap}); + + @override + Widget build(BuildContext context) { + return Card( + margin: const EdgeInsets.all(5.0), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(15), + child: Container( + width: 150, + height: 100, + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircleAvatar( + radius: 45, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(chart.image), + ), + const SizedBox(height: 10), + Text( + chart.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(1.0), + child: Text( + chart.language, + style: const TextStyle( + fontSize: 16, + ), + ), + ), + Visibility( + visible: chart.explicitContent, + child: const Icon( + Icons.explicit, + size: 16, + ), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart new file mode 100644 index 0000000..3a7f88b --- /dev/null +++ b/lib/functions/explore/widgets/explore_list.dart @@ -0,0 +1,188 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; +import 'package:sangeet/functions/explore/widgets/album_card.dart'; +import 'package:sangeet/functions/explore/widgets/chart_card.dart'; +import 'package:sangeet/functions/explore/widgets/playlist_card.dart'; +import 'package:sangeet/functions/explore/widgets/radio_card.dart'; +import 'package:sangeet/functions/explore/widgets/trend_card.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; + +class ExploreList extends ConsumerWidget { + const ExploreList({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + // final player = ref.read(getAudioPlayer); + + return ref.watch(getExploreDataProvider).when( + data: (data) { + final charts = data.charts; + final radios = data.radios; + final albums = data.albums; + final playlists = data.topPlaylists; + final trendings = data.trending; + + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // TRENDINGS + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Trendings.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 290.0, + child: GridView.count( + crossAxisCount: 3, + childAspectRatio: 0.2, + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + children: trendCards(trendings), + ), + ), + + // CHARTS // + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Top Charts.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 200.0, + child: ListView.builder( + itemCount: charts.length, + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + final chart = charts[index]; + return ChartCard( + chart: chart, + onTap: () {}, + ); + }, + ), + ), + + // RADIOS // + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Radios.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: GridView.builder( + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: radios.length, + itemBuilder: (context, index) { + final radio = radios[index]; + return RadioCard( + radio: radio, + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio(radioId: radio.id, featured: true), + ); + }, + ), + ), + + // ALBUMS // + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'New Albums.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: GridView.builder( + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: albums.length, + itemBuilder: (context, index) { + final album = albums[index]; + return AlbumCard( + album: album, + onTap: () {}, + ); + }, + ), + ), + + // PLAYLISTS // + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'New Playlists.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: GridView.builder( + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: playlists.length, + itemBuilder: (context, index) { + final playlist = playlists[index]; + return PlaylistCard(playlist: playlist, onTap: () {}); + }, + ), + ), + ], + ), + ); + }, + error: (error, stackTrace) { + return ErrorText( + error: error.toString(), + ); + }, + loading: () => const Loader(), + ); + } +} diff --git a/lib/functions/explore/widgets/playlist_card.dart b/lib/functions/explore/widgets/playlist_card.dart new file mode 100644 index 0000000..4818477 --- /dev/null +++ b/lib/functions/explore/widgets/playlist_card.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class PlaylistCard extends StatelessWidget { + final PlaylistMapModel playlist; + final VoidCallback onTap; + const PlaylistCard({super.key, required this.playlist, required this.onTap}); + + @override + Widget build(BuildContext context) { + return Card( + margin: const EdgeInsets.all(5.0), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(15), + child: Container( + width: 150, + height: 100, + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Badge( + label: Text("${playlist.songCount}"), + alignment: Alignment.bottomLeft, + child: CircleAvatar( + radius: 55, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(playlist.images[2].url), + ), + ), + const SizedBox(height: 10), + Text( + playlist.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + maxLines: 1, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(1.0), + child: Text( + playlist.subtitle, + style: const TextStyle( + fontSize: 16, + ), + ), + ), + Visibility( + visible: playlist.explicitContent, + child: const Icon( + Icons.explicit, + size: 16, + ), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/explore/widgets/radio_card.dart b/lib/functions/explore/widgets/radio_card.dart new file mode 100644 index 0000000..97f920b --- /dev/null +++ b/lib/functions/explore/widgets/radio_card.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet_api/models.dart'; + +class RadioCard extends StatelessWidget { + final BrowseRadioModel radio; + final VoidCallback onTap; + const RadioCard({super.key, required this.radio, required this.onTap}); + + @override + Widget build(BuildContext context) { + return Card( + // elevation: 0, + surfaceTintColor: hexToColor(radio.accentColor), + margin: const EdgeInsets.all(5.0), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(15), + child: Container( + width: 150, + height: 100, + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircleAvatar( + radius: 45, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(radio.image), + ), + const SizedBox(height: 10), + Text( + radio.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + maxLines: 1, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Flexible( + child: Padding( + padding: const EdgeInsets.all(1.0), + child: Text( + radio.description ?? radio.language, + style: const TextStyle( + fontSize: 16, + overflow: TextOverflow.ellipsis, + ), + textAlign: TextAlign.center, + maxLines: 3, + softWrap: true, + ), + ), + ), + Visibility( + visible: radio.explicitContent, + child: const Icon( + Icons.explicit, + size: 16, + ), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/explore/widgets/trend_card.dart b/lib/functions/explore/widgets/trend_card.dart new file mode 100644 index 0000000..9acb847 --- /dev/null +++ b/lib/functions/explore/widgets/trend_card.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class TrendCard extends StatelessWidget { + final String image; + final String title; + final String subtitle; + final IconData badgeIcon; + final VoidCallback onTap; + final bool explicitContent; + const TrendCard({ + super.key, + required this.onTap, + required this.image, + required this.title, + required this.subtitle, + required this.badgeIcon, + required this.explicitContent, + }); + + @override + Widget build(BuildContext context) { + return Card( + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(15), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Badge( + backgroundColor: + explicitContent ? Colors.redAccent : Colors.teal, + label: Icon( + badgeIcon, + size: 10, + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + image, + width: 50, + height: 50, + ), + ), + ), + Flexible( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + softWrap: true, + ), + Text( + subtitle, + style: const TextStyle( + overflow: TextOverflow.fade, + ), + maxLines: 2, + softWrap: true, + ), + ], + ), + ), + ), + ], + ), + ), + ), + ); + } +} + +List trendCards(BrowseTrendingModel trendings) { + final l = [ + for (SongModel album in trendings.songs) + (TrendCard( + onTap: () {}, + image: album.images[1].url, + title: album.title, + subtitle: album.subtitle, + explicitContent: album.explicitContent, + badgeIcon: Icons.music_note, + )), + for (AlbumModel album in trendings.albums) + (TrendCard( + onTap: () {}, + image: album.images[1].url, + title: album.title, + subtitle: album.artists.map((e) => e.name).join(','), + explicitContent: album.explicitContent, + badgeIcon: Icons.album, + )), + for (PlaylistMapModel album in trendings.playlists) + (TrendCard( + onTap: () {}, + image: album.images[1].url, + title: album.title, + subtitle: album.subtitle, + explicitContent: album.explicitContent, + badgeIcon: Icons.playlist_play_rounded, + )), + ]; + + return l; +} diff --git a/lib/functions/notification/song_notifications.dart b/lib/functions/notification/song_notifications.dart index 9b6f1b8..f84bc1a 100644 --- a/lib/functions/notification/song_notifications.dart +++ b/lib/functions/notification/song_notifications.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; import 'package:windows_notification/notification_message.dart'; import 'package:windows_notification/windows_notification.dart'; import 'package:path_provider/path_provider.dart'; @@ -28,11 +28,11 @@ class SongNotifications { required SongModel song, }) async { await _winNotifyPlugin.clearNotificationHistory(); - final imageDir = await getImageBytes(song.image[1].url, song.id); + final imageDir = await getImageBytes(song.images[1].url, song.id); NotificationMessage message = NotificationMessage.fromPluginTemplate( "notify_song", - "Playing Now ${song.name}", - "${song.album.name} - ${song.label}", + "Playing Now ${song.title}", + song.subtitle, image: imageDir, ); await _winNotifyPlugin.showNotificationPluginTemplate(message); @@ -43,11 +43,11 @@ class SongNotifications { required String state, }) async { await _winNotifyPlugin.clearNotificationHistory(); - final imageDir = await getImageBytes(song.image[1].url, song.id); + final imageDir = await getImageBytes(song.images[1].url, song.id); NotificationMessage message = NotificationMessage.fromPluginTemplate( "play_pause_song", - "$state ${song.name}", - "${song.label} - ${song.album.name}", + "$state ${song.title}", + "${song.albumName} - ${song.label}", image: imageDir, ); await _winNotifyPlugin.showNotificationPluginTemplate(message); diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 57a82d1..7292451 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -7,7 +7,7 @@ import 'package:rxdart/rxdart.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; final playerControllerProvider = StateNotifierProvider((ref) { @@ -51,23 +51,68 @@ class PlayerController extends StateNotifier { (position, bufferedPosition, duration) => PositionData( position, bufferedPosition, duration ?? Duration.zero)); + Future runRadio( + {required String radioId, bool featured = false}) async { + try { + await playlist.clear(); + final quality = await _settingsController.getSongQuality(); + final songsObjects = await _exploreController.getRadio(radioId, featured); + for (var i = 0; i < songsObjects.songs.length; i++) { + final uri = songsObjects.songs[i].urls + .where((element) => element.quality == quality.name) + .toList()[0] + .url; + + playlist + .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); + } + + await _player.setAudioSource(playlist, + preload: kIsWeb || defaultTargetPlatform != TargetPlatform.linux); + + await _player.play(); + } on PlayerException catch (e) { + // iOS/macOS: maps to NSError.code + // Android: maps to ExoPlayerException.type + // Web: maps to MediaError.code + if (kDebugMode) { + print("Error code: ${e.code}"); + // iOS/macOS: maps to NSError.localizedDescription + // Android: maps to ExoPlaybackException.getMessage() + // Web: a generic message + print("Error message: ${e.message}"); + } + } on PlayerInterruptedException catch (e) { + // This call was interrupted since another audio source was loaded or the + // player was stopped or disposed before this audio source could complete + // loading. + if (kDebugMode) { + print("Connection aborted: ${e.message}"); + } + } catch (e) { + // Fallback for all errors + if (kDebugMode) { + print(e); + } + } + } + Future setSong({required SongModel song}) async { try { await playlist.clear(); final quality = await _settingsController.getSongQuality(); - final songsObjects = - await _exploreController.getSongRecommendationData(song.id); + final songsObjects = await _exploreController.getRadio(song.id, false); - songsObjects.insert(0, song); + songsObjects.songs.insert(0, song); - for (var i = 0; i < songsObjects.length; i++) { - final uri = songsObjects[i] - .downloadUrl - .where((element) => element.quality == quality) + for (var i = 0; i < songsObjects.songs.length; i++) { + final uri = songsObjects.songs[i].urls + .where((element) => element.quality == quality.name) .toList()[0] .url; - playlist.add(AudioSource.uri(Uri.parse(uri), tag: songsObjects[i])); + playlist + .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); } await _player.setAudioSource(playlist, @@ -103,17 +148,16 @@ class PlayerController extends StateNotifier { Future loadMoreSongs({required SongModel song}) async { try { final quality = await _settingsController.getSongQuality(); - final songsObjects = - await _exploreController.getSongRecommendationData(song.id); + final songsObjects = await _exploreController.getRadio(song.id, false); - for (var i = 0; i < songsObjects.length; i++) { - final uri = songsObjects[i] - .downloadUrl - .where((element) => element.quality == quality) + for (var i = 0; i < songsObjects.songs.length; i++) { + final uri = songsObjects.songs[i].urls + .where((element) => element.quality == quality.name) .toList()[0] .url; - playlist.add(AudioSource.uri(Uri.parse(uri), tag: songsObjects[i])); + playlist + .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); } } on PlayerException catch (e) { // iOS/macOS: maps to NSError.code diff --git a/lib/functions/player/views/playlist_view.dart b/lib/functions/player/views/playlist_view.dart index 9b5d344..8d1c83b 100644 --- a/lib/functions/player/views/playlist_view.dart +++ b/lib/functions/player/views/playlist_view.dart @@ -2,8 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; - -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; class PlaylistView extends ConsumerStatefulWidget { const PlaylistView({super.key}); @@ -127,12 +126,12 @@ class _PlaylistViewState extends ConsumerState { ? Theme.of(context).primaryColorLight.withOpacity(.4) : null, title: Text( - "${song.name} ${i == state.currentIndex ? "(Playing)" : ""}"), - subtitle: Text("${song.label} - ${song.year}"), + "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), + subtitle: Text(song.subtitle), leading: CircleAvatar( radius: 25, backgroundColor: Theme.of(context).primaryColorDark, - foregroundImage: NetworkImage(song.image[0].url), + foregroundImage: NetworkImage(song.images[0].url), ), onTap: () { player.seek(Duration.zero, index: i); diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 54d5735..7f15c72 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; @@ -9,8 +8,7 @@ import 'package:sangeet/frame/commons.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; - -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; // FOR APPBAR WIDGET PreferredSizeWidget getBasePlayerAppbar(BuildContext context) { @@ -96,7 +94,7 @@ class _BaseAudioPlayerState extends ConsumerState { child: ClipRRect( borderRadius: BorderRadius.circular(7), child: Image.network( - metadata.image[1].url, + metadata.images[1].url, width: 80, height: 80, cacheHeight: 80, @@ -113,7 +111,7 @@ class _BaseAudioPlayerState extends ConsumerState { padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( - "${metadata.name} - ${metadata.label}", + "${metadata.title} - ${metadata.label}", style: const TextStyle( fontSize: 16, overflow: TextOverflow.clip, @@ -124,7 +122,7 @@ class _BaseAudioPlayerState extends ConsumerState { padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( - metadata.album.name, + metadata.albumName, style: const TextStyle( overflow: TextOverflow.clip, ), diff --git a/lib/functions/search/views/search_view.dart b/lib/functions/search/views/search_view.dart index 58c554e..fa9620b 100644 --- a/lib/functions/search/views/search_view.dart +++ b/lib/functions/search/views/search_view.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/search/controllers/search_controller.dart'; import 'package:sangeet/functions/search/widgets/searchbar.dart'; import 'package:sangeet/functions/search/widgets/song_tile.dart'; @@ -44,12 +43,11 @@ class _SearchViewState extends ConsumerState { physics: const AlwaysScrollableScrollPhysics(), children: [ for (final song in songs) - SearchSongTile( - song: song, - onTap: () => ref - .read(playerControllerProvider.notifier) - .setSong(song: song), - ), + SearchSongTile(song: song, onTap: () {} + // ref + // .read(playerControllerProvider.notifier) + // .setSong(song: song), + ), const Center( child: Text( 'Only 24 results because this feature is in test phase.'), diff --git a/lib/functions/settings/controllers/settings_controller.dart b/lib/functions/settings/controllers/settings_controller.dart index 9f500ff..ba10587 100644 --- a/lib/functions/settings/controllers/settings_controller.dart +++ b/lib/functions/settings/controllers/settings_controller.dart @@ -1,6 +1,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/constants.dart'; -import 'package:sangeet/models/helpers/download_quality.dart'; +import 'package:sangeet_api/common/utils.dart'; import 'package:shared_preferences/shared_preferences.dart'; final songQualityProvider = FutureProvider((ref) { @@ -19,12 +19,12 @@ class SettingsController extends StateNotifier { // SongQualityType get songQuality => setSongQuality(); - Future getSongQuality() async { + Future getSongQuality() async { final prefs = await SharedPreferences.getInstance(); final val = prefs.getString(SharedPrefs.songQuality); - if (val == null) return SongQualityType.high; - var quality = SongQualityType.values - .where((element) => element.type == val) + if (val == null) return SongQuality.v320kbps; + var quality = SongQuality.values + .where((element) => element.quality == val) .toList()[0]; return quality; diff --git a/lib/functions/shortcuts/actions.dart b/lib/functions/shortcuts/actions.dart index 5bf2ed3..0aff958 100644 --- a/lib/functions/shortcuts/actions.dart +++ b/lib/functions/shortcuts/actions.dart @@ -2,7 +2,7 @@ import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'package:sangeet/functions/notification/song_notifications.dart'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; enum KeyAction { playPauseMusic, @@ -29,6 +29,9 @@ class SongActions extends Action { @override void invoke(covariant BaseIntent intent) async { SongModel song = _player.audioSource?.sequence[_player.currentIndex!].tag; + SongModel nextSong = _player.audioSource?.sequence[_player.nextIndex!].tag; + SongModel prevSong = + _player.audioSource?.sequence[_player.previousIndex ?? 0].tag; switch (intent.key) { case KeyAction.playPauseMusic: if (_player.playing) { @@ -47,18 +50,17 @@ class SongActions extends Action { case KeyAction.nextTrack: await _player.seekToNext(); BotToast.showText(text: 'Next Track'); - await notifications.trackChangedNotify(song: song); + await notifications.trackChangedNotify(song: nextSong); break; case KeyAction.prevTrack: await _player.seekToPrevious(); BotToast.showText(text: 'Previous Track'); - await notifications.trackChangedNotify(song: song); + await notifications.trackChangedNotify(song: prevSong); break; case KeyAction.openPlaylist: - // await _player.seekToNext(); BotToast.showText(text: 'Opened Playlist'); break; diff --git a/lib/initialization.dart b/lib/initialization.dart index 0ed95eb..e8c697b 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -1,5 +1,4 @@ import 'package:audio_session/audio_session.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_acrylic/flutter_acrylic.dart'; import 'package:sangeet/core/constants.dart'; import 'package:system_theme/system_theme.dart'; @@ -17,11 +16,6 @@ Future initWindowManager() async { await windowManager.ensureInitialized(); await Window.initialize(); - await Window.setEffect( - effect: WindowEffect.acrylic, - color: const Color(0xCC222222), - ); - WindowOptions windowOptions = const WindowOptions( center: true, title: "Sangeet Desktop", diff --git a/lib/main.dart b/lib/main.dart index e08d64e..bd01356 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -31,8 +31,7 @@ class MyApp extends StatelessWidget { theme: ThemeData( colorSchemeSeed: SystemTheme.accentColor.accent, ), - darkTheme: ThemeData.dark() - .copyWith(scaffoldBackgroundColor: Colors.transparent), + darkTheme: ThemeData.dark().copyWith(), themeMode: ThemeMode.dark, home: const HomeFrame(), builder: BotToastInit(), diff --git a/pubspec.lock b/pubspec.lock index 052fcc8..34b34d6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -137,6 +137,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dio: + dependency: transitive + description: + name: dio + sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5" + url: "https://pub.dev" + source: hosted + version: "5.4.3+1" fake_async: dependency: transitive description: @@ -178,10 +186,10 @@ packages: dependency: "direct main" description: name: flutter_acrylic - sha256: a9a1fdf91ff1fb47858fd82507f57e255a132a5d355056694fdb9fd303633b18 + sha256: b3996dbde5abf5823cc9ead4cf2e5267c3181f15585fe47ce4dc4472e7ec827a url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" flutter_cache_manager: dependency: transitive description: @@ -484,10 +492,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: @@ -497,7 +505,7 @@ packages: source: hosted version: "2.1.8" rename_app: - dependency: "direct main" + dependency: "direct dev" description: name: rename_app sha256: "0267b7507ca70ede47b1e5a0b391e547d0e0854956a00fad2585fb6c5968dc24" @@ -520,6 +528,15 @@ packages: url: "https://pub.dev" source: hosted version: "0.27.7" + sangeet_api: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: a82d7cdb5aa116f7afaa66355987a30489445a76 + url: "https://github.com/priyanshuverma-dev/sangeet-api" + source: git + version: "0.1.2" screen_retriever: dependency: transitive description: @@ -604,10 +621,10 @@ packages: dependency: "direct main" description: name: skeletonizer - sha256: f3589fae7c547534d610ab98245e99c16c7a2ef251054d8823f9d4ae020352b9 + sha256: d94ae24d9fcedc5fd2984ccbe5af5e9d76e2bf6a35ee775fe8c737c90297908e url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" sky_engine: dependency: transitive description: flutter @@ -725,6 +742,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.3" + tripledes_nullsafety: + dependency: transitive + description: + name: tripledes_nullsafety + sha256: "39589b5271e96f2abc592f046e14c3dbcd87bd140c1e6f10f4005e6fb0c28b68" + url: "https://pub.dev" + source: hosted + version: "1.0.3" typed_data: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 65b7702..e849d47 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -56,7 +56,10 @@ dependencies: bot_toast: ^4.1.3 windows_notification: ^1.2.0 path_provider: ^2.1.3 - rename_app: ^1.6.1 + sangeet_api: + git: + url: https://github.com/priyanshuverma-dev/sangeet-api + ref: main dev_dependencies: flutter_test: @@ -68,6 +71,7 @@ dev_dependencies: # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^4.0.0 + rename_app: ^1.6.1 flutter_launcher_icons: ^0.13.1 From 7bfe49100ecde9de86116efcda4e7afd8eeb4346 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Mon, 1 Jul 2024 12:33:58 +0530 Subject: [PATCH 03/20] album view and utils --- lib/core/type_defs.dart | 2 + lib/core/utils.dart | 14 ++ lib/frame/commons.dart | 5 +- lib/frame/home.dart | 50 ++++- .../album/controllers/album_controller.dart | 46 ++++ lib/functions/album/view/album_view.dart | 182 +++++++++++++++ .../album/widgets/album_top_details.dart | 87 ++++++++ lib/functions/explore/widgets/album_card.dart | 2 +- .../explore/widgets/explore_list.dart | 62 +++++- lib/functions/explore/widgets/radio_card.dart | 2 +- lib/functions/explore/widgets/trend_card.dart | 209 +++++++++++------- .../player/controllers/player_controller.dart | 59 ++--- lib/functions/player/views/playlist_view.dart | 208 +++++++---------- lib/initialization.dart | 4 +- lib/main.dart | 12 +- pubspec.lock | 28 ++- pubspec.yaml | 15 +- 17 files changed, 735 insertions(+), 252 deletions(-) create mode 100644 lib/functions/album/controllers/album_controller.dart create mode 100644 lib/functions/album/view/album_view.dart create mode 100644 lib/functions/album/widgets/album_top_details.dart diff --git a/lib/core/type_defs.dart b/lib/core/type_defs.dart index 762767a..93d45c8 100644 --- a/lib/core/type_defs.dart +++ b/lib/core/type_defs.dart @@ -3,3 +3,5 @@ import 'package:sangeet/core/failure.dart'; typedef FutureEither = Future>; typedef FutureEitherVoid = FutureEither; + +enum MediaType { artist, playlist, song, album, radio } diff --git a/lib/core/utils.dart b/lib/core/utils.dart index 3ef9cd7..fc355bd 100644 --- a/lib/core/utils.dart +++ b/lib/core/utils.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:intl/intl.dart'; void showSnackBar(BuildContext context, String content) { ScaffoldMessenger.of(context).showSnackBar( @@ -23,3 +24,16 @@ void unfocusKeyboard(context) { Color hexToColor(String code) { return Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000); } + +String formatNumber(int value) { + final formatter = NumberFormat.compact(locale: "en_US", explicitSign: false); + return formatter.format(value); +} + +String formatDuration(int value) { + Duration duration = Duration(seconds: value); + String twoDigits(int n) => n.toString().padLeft(2, "0"); + String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60).abs()); + String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60).abs()); + return "$twoDigitMinutes:$twoDigitSeconds"; +} diff --git a/lib/frame/commons.dart b/lib/frame/commons.dart index 7301fc9..2acf568 100644 --- a/lib/frame/commons.dart +++ b/lib/frame/commons.dart @@ -52,7 +52,10 @@ class AppScreenConfig extends StateNotifier { state = Screens.values.firstWhere((e) => e.index == idx); } - void goto({required Screens screen}) { + void goto({ + required Screens screen, + Map parameters = const {}, + }) { state = screen; } } diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 9c125dd..7638263 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -1,14 +1,19 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; + import 'package:hotkey_manager/hotkey_manager.dart'; +import 'package:window_manager/window_manager.dart'; +import 'package:tray_manager/tray_manager.dart'; + import 'package:sangeet/core/constants.dart'; import 'package:sangeet/frame/commons.dart'; +import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/base_audio_player.dart'; +import 'package:sangeet/functions/search/views/search_view.dart'; +import 'package:sangeet/functions/settings/views/settings_view.dart'; import 'package:sangeet/functions/shortcuts/actions.dart'; -import 'package:tray_manager/tray_manager.dart'; -import 'package:window_manager/window_manager.dart'; class HomeFrame extends ConsumerStatefulWidget { const HomeFrame({super.key}); @@ -19,6 +24,14 @@ class HomeFrame extends ConsumerStatefulWidget { class _HomeFrameState extends ConsumerState with TrayListener, WindowListener { + int _index = 0; + + void onDestinationSelected(int i) { + setState(() { + _index = i; + }); + } + @override void initState() { super.initState(); @@ -35,8 +48,6 @@ class _HomeFrameState extends ConsumerState @override Widget build(BuildContext context) { - final screenConfig = ref.watch(appScreenConfigProvider.notifier); - final screen = ref.watch(appScreenConfigProvider).screen; return Actions( actions: >{ BaseIntent: SongActions( @@ -59,8 +70,8 @@ class _HomeFrameState extends ConsumerState body: Row( children: [ NavigationRail( - selectedIndex: screen.index, - onDestinationSelected: (i) => screenConfig.onIndex(i), + selectedIndex: _index, + onDestinationSelected: onDestinationSelected, destinations: const [ NavigationRailDestination( icon: Icon(Icons.home), @@ -89,7 +100,23 @@ class _HomeFrameState extends ConsumerState ), ), Expanded( - child: screen.view, + child: IndexedStack( + index: _index, + children: [ + _buildNavigator( + 0, + const ExploreView(), + ), + _buildNavigator( + 1, + const SearchView(), + ), + _buildNavigator( + 2, + const SettingsView(), + ), + ], + ), ), ], ), @@ -99,6 +126,15 @@ class _HomeFrameState extends ConsumerState ); } + Widget _buildNavigator(int index, Widget child) { + return Navigator( + key: GlobalKey(debugLabel: 'navigator$index'), + onGenerateRoute: (settings) => MaterialPageRoute( + builder: (context) => child, + ), + ); + } + @override void onTrayIconRightMouseDown() async { await trayManager.popUpContextMenu(); diff --git a/lib/functions/album/controllers/album_controller.dart b/lib/functions/album/controllers/album_controller.dart new file mode 100644 index 0000000..4dbecd0 --- /dev/null +++ b/lib/functions/album/controllers/album_controller.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final albumControllerProvider = + StateNotifierProvider((ref) { + return AlbumController( + api: ref.watch(sangeetAPIProvider), + ); +}); + +final albumByIdProvider = + FutureProvider.family((ref, String id) async { + return ref + .watch(albumControllerProvider.notifier) + .fetchAlbumById(albumId: id); +}); + +class AlbumController extends StateNotifier { + final SangeetAPI _api; + AlbumController({required SangeetAPI api}) + : _api = api, + super(false); + + Future fetchAlbumById({required String albumId}) async { + final album = await _api.album.getById(albumId: albumId); + + if (album == null) { + throw Error.throwWithStackTrace("Album not found", StackTrace.empty); + } + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(album.images[0].url), + brightness: Brightness.dark, + ); + + print(accentColor.background.value); + + final s = album.copyWith( + playCount: accentColor.background.value, + ); + + return s; + } +} diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart new file mode 100644 index 0000000..7b5bc71 --- /dev/null +++ b/lib/functions/album/view/album_view.dart @@ -0,0 +1,182 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/functions/album/controllers/album_controller.dart'; +import 'package:sangeet/functions/album/widgets/album_top_details.dart'; + +class AlbumView extends ConsumerWidget { + final String albumId; + const AlbumView({this.albumId = "", super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ModalRoute.of(context)?.settings.name ?? albumId; + + return ref.watch(albumByIdProvider(name)).when( + data: (album) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Color(album.playCount), + ), + ], + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + AlbumTopDetails(album: album), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + // onTap: () => Navigator.of(context).pop(), + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + album.artists[0].image), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + album.artists[0].name, + style: GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: Color(album.playCount), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: album.songs.length, + itemBuilder: (context, index) { + final song = album.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + itemCount: album.artists.length, + itemBuilder: (context, index) { + final artist = album.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + )) + ], + ), + ); + }, + error: (err, st) => ErrorPage(error: err.toString()), + loading: () => const LoadingPage(), + ); + } +} diff --git a/lib/functions/album/widgets/album_top_details.dart b/lib/functions/album/widgets/album_top_details.dart new file mode 100644 index 0000000..0a614f8 --- /dev/null +++ b/lib/functions/album/widgets/album_top_details.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class AlbumTopDetails extends StatelessWidget { + final AlbumModel album; + const AlbumTopDetails({super.key, required this.album}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Badge( + backgroundColor: Colors.teal, + label: Visibility( + visible: album.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + album.images[2].url, + width: 200, + height: 200, + ), + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + album.title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + album.subtitle, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + Text( + "${album.language} - ${album.year}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + Text( + "Songs - ${album.listCount}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/lib/functions/explore/widgets/album_card.dart b/lib/functions/explore/widgets/album_card.dart index e6f6f75..d7e96b5 100644 --- a/lib/functions/explore/widgets/album_card.dart +++ b/lib/functions/explore/widgets/album_card.dart @@ -11,7 +11,7 @@ class AlbumCard extends StatelessWidget { return Card( margin: const EdgeInsets.all(5.0), child: InkWell( - onTap: () {}, + onTap: onTap, borderRadius: BorderRadius.circular(15), child: Container( width: 150, diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 3a7f88b..4b3c66d 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/explore/widgets/album_card.dart'; import 'package:sangeet/functions/explore/widgets/chart_card.dart'; @@ -8,6 +9,7 @@ import 'package:sangeet/functions/explore/widgets/playlist_card.dart'; import 'package:sangeet/functions/explore/widgets/radio_card.dart'; import 'package:sangeet/functions/explore/widgets/trend_card.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet_api/models.dart'; class ExploreList extends ConsumerWidget { const ExploreList({super.key}); @@ -48,7 +50,42 @@ class ExploreList extends ConsumerWidget { childAspectRatio: 0.2, scrollDirection: Axis.horizontal, physics: const BouncingScrollPhysics(), - children: trendCards(trendings), + children: [ + for (SongModel song in trendings.songs) + (TrendCard( + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + song: song, + ), + image: song.images[1].url, + title: song.title, + subtitle: song.subtitle, + explicitContent: song.explicitContent, + badgeIcon: Icons.music_note, + )), + for (AlbumModel album in trendings.albums) + (TrendCard( + onTap: () {}, + image: album.images[1].url, + title: album.title, + subtitle: + album.artists.map((e) => e.name).join(','), + explicitContent: album.explicitContent, + badgeIcon: Icons.album, + )), + for (PlaylistMapModel playlist in trendings.playlists) + (TrendCard( + onTap: () {}, + image: playlist.images[1].url, + title: playlist.title, + subtitle: playlist.subtitle, + explicitContent: playlist.explicitContent, + badgeIcon: Icons.playlist_play_rounded, + )), + ], ), ), @@ -73,7 +110,14 @@ class ExploreList extends ConsumerWidget { final chart = charts[index]; return ChartCard( chart: chart, - onTap: () {}, + onTap: () => Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => const AlbumView(), + settings: RouteSettings( + name: chart.id, + ), + ), + ), ); }, ), @@ -107,7 +151,10 @@ class ExploreList extends ConsumerWidget { radio: radio, onTap: () => ref .watch(playerControllerProvider.notifier) - .runRadio(radioId: radio.id, featured: true), + .runRadio( + radioId: radio.id, + type: MediaType.radio, + ), ); }, ), @@ -139,7 +186,14 @@ class ExploreList extends ConsumerWidget { final album = albums[index]; return AlbumCard( album: album, - onTap: () {}, + onTap: () => Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => const AlbumView(), + settings: RouteSettings( + name: album.id, + ), + ), + ), ); }, ), diff --git a/lib/functions/explore/widgets/radio_card.dart b/lib/functions/explore/widgets/radio_card.dart index 97f920b..e2f3450 100644 --- a/lib/functions/explore/widgets/radio_card.dart +++ b/lib/functions/explore/widgets/radio_card.dart @@ -52,7 +52,7 @@ class RadioCard extends StatelessWidget { overflow: TextOverflow.ellipsis, ), textAlign: TextAlign.center, - maxLines: 3, + maxLines: 2, softWrap: true, ), ), diff --git a/lib/functions/explore/widgets/trend_card.dart b/lib/functions/explore/widgets/trend_card.dart index 9acb847..d72bddc 100644 --- a/lib/functions/explore/widgets/trend_card.dart +++ b/lib/functions/explore/widgets/trend_card.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; -class TrendCard extends StatelessWidget { +class TrendCard extends StatefulWidget { final String image; final String title; final String subtitle; @@ -18,54 +17,148 @@ class TrendCard extends StatelessWidget { required this.explicitContent, }); + @override + State createState() => _TrendCardState(); +} + +class _TrendCardState extends State + with SingleTickerProviderStateMixin { + late AnimationController _controller; + late Animation _animation; + late Animation padding; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(milliseconds: 275), + vsync: this, + ); + _animation = Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation( + parent: _controller, + curve: Curves.ease, + reverseCurve: Curves.easeIn, + )); + // padding = Tween(begin: 0.0, end: -25.0).animate(CurvedAnimation( + // parent: _controller, curve: Curves.ease, reverseCurve: Curves.easeIn)); + _controller.addListener(() { + setState(() {}); + }); + } + @override Widget build(BuildContext context) { - return Card( - child: InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 8.0), - child: Row( - mainAxisSize: MainAxisSize.max, + return MouseRegion( + onEnter: (value) { + setState(() { + _controller.forward(); + }); + }, + onExit: (value) { + setState(() { + _controller.reverse(); + }); + }, + child: Card( + child: InkWell( + onTap: widget.onTap, + borderRadius: BorderRadius.circular(15), + child: Stack( + alignment: Alignment.bottomRight, children: [ - Badge( - backgroundColor: - explicitContent ? Colors.redAccent : Colors.teal, - label: Icon( - badgeIcon, - size: 10, - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - image, - width: 50, - height: 50, - ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Badge( + backgroundColor: widget.explicitContent + ? Colors.redAccent + : Colors.teal, + label: Icon( + widget.badgeIcon, + size: 10, + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + widget.image, + width: 50, + height: 50, + ), + ), + ), + Flexible( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + widget.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + softWrap: true, + ), + Text( + widget.subtitle, + style: const TextStyle( + overflow: TextOverflow.fade, + ), + maxLines: 2, + softWrap: true, + ), + ], + ), + ), + ), + ], ), ), - Flexible( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, + Padding( + padding: const EdgeInsets.only(right: 5, bottom: 5), + child: AnimatedScale( + curve: Curves.bounceOut, + alignment: Alignment.bottomRight, + duration: const Duration(microseconds: 100), + scale: _animation.value, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text( - title, - style: const TextStyle( - fontWeight: FontWeight.bold, + Padding( + padding: const EdgeInsets.all(2.0), + child: IconButton( + onPressed: () {}, + icon: const Icon( + Icons.favorite, + size: 15, + ), + splashColor: Colors.red, + constraints: + const BoxConstraints(maxHeight: 35, maxWidth: 35), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.red.shade400, + ), ), - softWrap: true, ), - Text( - subtitle, - style: const TextStyle( - overflow: TextOverflow.fade, + Padding( + padding: const EdgeInsets.all(2.0), + child: IconButton( + onPressed: () {}, + icon: const Icon( + Icons.play_arrow, + size: 15, + ), + splashColor: Colors.teal, + constraints: + const BoxConstraints(maxHeight: 35, maxWidth: 35), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.teal.shade500, + ), ), - maxLines: 2, - softWrap: true, ), ], ), @@ -78,37 +171,3 @@ class TrendCard extends StatelessWidget { ); } } - -List trendCards(BrowseTrendingModel trendings) { - final l = [ - for (SongModel album in trendings.songs) - (TrendCard( - onTap: () {}, - image: album.images[1].url, - title: album.title, - subtitle: album.subtitle, - explicitContent: album.explicitContent, - badgeIcon: Icons.music_note, - )), - for (AlbumModel album in trendings.albums) - (TrendCard( - onTap: () {}, - image: album.images[1].url, - title: album.title, - subtitle: album.artists.map((e) => e.name).join(','), - explicitContent: album.explicitContent, - badgeIcon: Icons.album, - )), - for (PlaylistMapModel album in trendings.playlists) - (TrendCard( - onTap: () {}, - image: album.images[1].url, - title: album.title, - subtitle: album.subtitle, - explicitContent: album.explicitContent, - badgeIcon: Icons.playlist_play_rounded, - )), - ]; - - return l; -} diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 7292451..6433611 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -4,16 +4,21 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:rxdart/rxdart.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/frame/commons.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; import 'package:sangeet_api/modules/song/models/song_model.dart'; +import 'package:sangeet_api/sangeet_api.dart'; final playerControllerProvider = StateNotifierProvider((ref) { return PlayerController( exploreController: ref.watch(exploreControllerProvider.notifier), settingsController: ref.watch(settingsControllerProvider.notifier), + api: ref.watch(sangeetAPIProvider), ); }); @@ -23,6 +28,7 @@ final getAudioPlayer = class PlayerController extends StateNotifier { final ExploreController _exploreController; final SettingsController _settingsController; + final SangeetAPI _api; final _player = AudioPlayer(); final playlist = ConcatenatingAudioSource( @@ -33,11 +39,13 @@ class PlayerController extends StateNotifier { children: [], ); - PlayerController( - {required ExploreController exploreController, - required SettingsController settingsController}) - : _exploreController = exploreController, + PlayerController({ + required ExploreController exploreController, + required SettingsController settingsController, + required SangeetAPI api, + }) : _exploreController = exploreController, _settingsController = settingsController, + _api = api, super(false); AudioPlayer get getPlayer => _player; @@ -51,46 +59,41 @@ class PlayerController extends StateNotifier { (position, bufferedPosition, duration) => PositionData( position, bufferedPosition, duration ?? Duration.zero)); - Future runRadio( - {required String radioId, bool featured = false}) async { + Future runRadio({ + required String radioId, + SongModel? song, + required MediaType type, + bool featured = false, + }) async { try { await playlist.clear(); final quality = await _settingsController.getSongQuality(); - final songsObjects = await _exploreController.getRadio(radioId, featured); - for (var i = 0; i < songsObjects.songs.length; i++) { - final uri = songsObjects.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; - playlist - .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); + if (type == MediaType.song) { + final songsObjects = await _exploreController.getRadio(radioId, false); + songsObjects.songs.insert(0, song!); + for (var i = 0; i < songsObjects.songs.length; i++) { + final uri = songsObjects.songs[i].urls + .where((element) => element.quality == quality.name) + .toList()[0] + .url; + + playlist + .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); + } + await _player.setAudioSource(playlist, preload: true); } - await _player.setAudioSource(playlist, - preload: kIsWeb || defaultTargetPlatform != TargetPlatform.linux); - await _player.play(); } on PlayerException catch (e) { - // iOS/macOS: maps to NSError.code - // Android: maps to ExoPlayerException.type - // Web: maps to MediaError.code if (kDebugMode) { - print("Error code: ${e.code}"); - // iOS/macOS: maps to NSError.localizedDescription - // Android: maps to ExoPlaybackException.getMessage() - // Web: a generic message print("Error message: ${e.message}"); } } on PlayerInterruptedException catch (e) { - // This call was interrupted since another audio source was loaded or the - // player was stopped or disposed before this audio source could complete - // loading. if (kDebugMode) { print("Connection aborted: ${e.message}"); } } catch (e) { - // Fallback for all errors if (kDebugMode) { print(e); } diff --git a/lib/functions/player/views/playlist_view.dart b/lib/functions/player/views/playlist_view.dart index 8d1c83b..aa85582 100644 --- a/lib/functions/player/views/playlist_view.dart +++ b/lib/functions/player/views/playlist_view.dart @@ -16,134 +16,98 @@ class _PlaylistViewState extends ConsumerState { Widget build(BuildContext context) { final player = ref.watch(getAudioPlayer); final playlist = ref.watch(playerControllerProvider.notifier).playlist; - return SingleChildScrollView( - physics: const AlwaysScrollableScrollPhysics(), - child: Column( - children: [ - Container( - padding: const EdgeInsets.all(8.0), - decoration: const BoxDecoration( - border: Border( - bottom: BorderSide( - color: Colors.black12, - width: 4, - ), - )), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - StreamBuilder( - stream: player.loopModeStream, - builder: (context, snapshot) { - final loopMode = snapshot.data ?? LoopMode.off; - const icons = [ - Icon(Icons.repeat, color: Colors.grey), - Icon(Icons.repeat, color: Colors.orange), - Icon(Icons.repeat_one, color: Colors.orange), - ]; - const cycleModes = [ - LoopMode.off, - LoopMode.all, - LoopMode.one, - ]; - final index = cycleModes.indexOf(loopMode); - return IconButton( - icon: icons[index], - onPressed: () { - player.setLoopMode( - cycleModes[(cycleModes.indexOf(loopMode) + 1) % - cycleModes.length], - ); - }, - ); - }, - ), - Expanded( - child: Text( - "Radio Playlist", - style: Theme.of(context).textTheme.titleLarge, - textAlign: TextAlign.center, - ), - ), - StreamBuilder( - stream: player.shuffleModeEnabledStream, - builder: (context, snapshot) { - final shuffleModeEnabled = snapshot.data ?? false; - return IconButton( - icon: shuffleModeEnabled - ? const Icon(Icons.shuffle, color: Colors.orange) - : const Icon(Icons.shuffle, color: Colors.grey), - onPressed: () async { - final enable = !shuffleModeEnabled; - if (enable) { - await player.shuffle(); - } - await player.setShuffleModeEnabled(enable); - }, - ); - }, - ), - ], - ), - ), - StreamBuilder( - stream: player.sequenceStateStream, - builder: (context, snapshot) { - final state = snapshot.data; - final sequence = state?.sequence ?? []; + return StreamBuilder( + stream: player.sequenceStateStream, + builder: (context, snapshot) { + final state = snapshot.data; + final sequence = state?.sequence ?? []; - if (state?.currentIndex == playlist.length - 1) { - playlist.removeRange(0, 10); - final song = sequence[state!.currentIndex].tag as SongModel; - ref - .watch(playerControllerProvider.notifier) - .loadMoreSongs(song: song); - } + final song = sequence[state!.currentIndex].tag as SongModel; + if (state.currentIndex == playlist.length - 1) { + playlist.removeRange(0, 10); + ref + .watch(playerControllerProvider.notifier) + .loadMoreSongs(song: song); + } - return ReorderableListView.builder( - shrinkWrap: true, - onReorder: (int oldIndex, int newIndex) { - if (oldIndex < newIndex) newIndex--; - playlist.move(oldIndex, newIndex); - }, - itemCount: sequence.length, - itemBuilder: (context, i) { - final song = sequence[i].tag as SongModel; - return Dismissible( - key: ValueKey(sequence[i]), - background: Container( - alignment: Alignment.centerRight, - child: const Padding( - padding: EdgeInsets.only(right: 8.0), - child: Icon(Icons.delete), + return SingleChildScrollView( + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + song.images[2].url, + height: 250, + width: 250, ), ), - onDismissed: (dismissDirection) { - playlist.removeAt(i); - }, - child: ListTile( - tileColor: i == state!.currentIndex - ? Theme.of(context).primaryColorLight.withOpacity(.4) - : null, - title: Text( - "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), - subtitle: Text(song.subtitle), - leading: CircleAvatar( - radius: 25, - backgroundColor: Theme.of(context).primaryColorDark, - foregroundImage: NetworkImage(song.images[0].url), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + song.title, + style: const TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, ), - onTap: () { - player.seek(Duration.zero, index: i); - }, ), - ); - }, - ); - }, - ) - ], - ), + ), + ], + ), + ], + ), + ); + }, ); } } + + // ReorderableListView.builder( + // shrinkWrap: true, + // onReorder: (int oldIndex, int newIndex) { + // if (oldIndex < newIndex) newIndex--; + // playlist.move(oldIndex, newIndex); + // }, + // scrollDirection: Axis.vertical, + // itemCount: sequence.length, + // itemBuilder: (context, i) { + // final song = sequence[i].tag as SongModel; + // return Dismissible( + // key: ValueKey(sequence[i]), + // background: Container( + // alignment: Alignment.centerRight, + // child: const Padding( + // padding: EdgeInsets.only(right: 8.0), + // child: Icon(Icons.delete), + // ), + // ), + // onDismissed: (dismissDirection) { + // playlist.removeAt(i); + // }, + // child: ListTile( + // tileColor: i == state!.currentIndex + // ? Theme.of(context).primaryColorLight.withOpacity(.4) + // : null, + // title: Text( + // "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), + // subtitle: Text(song.albumName), + // leading: CircleAvatar( + // radius: 25, + // backgroundColor: Theme.of(context).primaryColorDark, + // foregroundImage: NetworkImage(song.images[0].url), + // ), + // onTap: () { + // player.seek(Duration.zero, index: i); + // }, + // ), + // ); + // }, + // ), + // ], + \ No newline at end of file diff --git a/lib/initialization.dart b/lib/initialization.dart index e8c697b..9cdab13 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -1,12 +1,11 @@ import 'package:audio_session/audio_session.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_acrylic/flutter_acrylic.dart'; import 'package:sangeet/core/constants.dart'; -import 'package:system_theme/system_theme.dart'; import 'package:tray_manager/tray_manager.dart'; import 'package:window_manager/window_manager.dart'; Future initialiseAppFunctions() async { - await SystemTheme.accentColor.load(); await initWindowManager(); final session = await AudioSession.instance; await session.configure(const AudioSessionConfiguration.speech()); @@ -23,6 +22,7 @@ Future initWindowManager() async { windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.show(); await windowManager.focus(); + await windowManager.setMinimumSize(const Size(600, 800)); await windowManager.setPreventClose(true); await trayManager.setIcon('assets/app_icon.ico'); diff --git a/lib/main.dart b/lib/main.dart index bd01356..85acb66 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,9 @@ import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; -import 'package:system_theme/system_theme.dart'; import 'package:sangeet/frame/home.dart'; import 'package:sangeet/initialization.dart'; @@ -29,9 +29,15 @@ class MyApp extends StatelessWidget { title: 'Sangeet', debugShowCheckedModeBanner: false, theme: ThemeData( - colorSchemeSeed: SystemTheme.accentColor.accent, + colorSchemeSeed: Colors.teal, + ), + darkTheme: ThemeData.dark().copyWith( + textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), + colorScheme: ColorScheme.fromSeed( + seedColor: Colors.teal, + brightness: Brightness.dark, + ), ), - darkTheme: ThemeData.dark().copyWith(), themeMode: ThemeMode.dark, home: const HomeFrame(), builder: BotToastInit(), diff --git a/pubspec.lock b/pubspec.lock index 34b34d6..a12bff7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -240,6 +240,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 + url: "https://pub.dev" + source: hosted + version: "6.2.1" hotkey_manager: dependency: "direct main" description: @@ -304,6 +312,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" js: dependency: transitive description: @@ -533,7 +549,7 @@ packages: description: path: "." ref: main - resolved-ref: a82d7cdb5aa116f7afaa66355987a30489445a76 + resolved-ref: "09fb73d9c0010c021d753a55aea348d1edecc18b" url: "https://github.com/priyanshuverma-dev/sangeet-api" source: git version: "0.1.2" @@ -617,6 +633,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.17.1" + simple_animations: + dependency: "direct main" + description: + name: simple_animations + sha256: "1ea7b93fb98e2a611b6865d632de55607b766328d14700143353129ee0559d3a" + url: "https://pub.dev" + source: hosted + version: "5.0.2" skeletonizer: dependency: "direct main" description: @@ -848,4 +872,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.3.3 <4.0.0" - flutter: ">=3.19.0" + flutter: ">=3.19.2" diff --git a/pubspec.yaml b/pubspec.yaml index e849d47..0df3882 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,6 +60,9 @@ dependencies: git: url: https://github.com/priyanshuverma-dev/sangeet-api ref: main + google_fonts: ^6.2.1 + simple_animations: ^5.0.2 + intl: ^0.19.0 dev_dependencies: flutter_test: @@ -111,15 +114,15 @@ flutter: # list giving the asset and other descriptors for the font. For # example: # fonts: - # - family: Schyler + # - family: Ubuntu # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf + # - asset: assets/fonts/Ubuntu/Ubuntu-Regular.ttf + # - asset: assets/fonts/Ubuntu/Ubuntu-Italic.ttf # style: italic - # - family: Trajan Pro + # - family: Playwrite # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf + # - asset: assets/fonts/Playwrite/PlaywriteITModerna-VariableFont_wght.ttf + # - asset: assets/fonts/Playwrite/static/PlaywriteITModerna-Regular.ttf # weight: 700 # # For details regarding fonts from package dependencies, From e8d524298a8f74b6db7570e8fbaa8b88ca783cae Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Mon, 1 Jul 2024 18:32:04 +0530 Subject: [PATCH 04/20] player redesign & playlist view --- lib/core/type_defs.dart | 28 ++- lib/frame/commons.dart | 8 - lib/frame/home.dart | 4 - lib/functions/album/view/album_view.dart | 61 +++--- .../album/widgets/album_top_details.dart | 3 +- .../controllers/explore_controller.dart | 1 + .../explore/widgets/explore_list.dart | 148 +++++++++---- .../explore/widgets/playlist_card.dart | 11 +- lib/functions/explore/widgets/trend_card.dart | 15 +- .../player/controllers/player_controller.dart | 18 +- lib/functions/player/views/playlist_view.dart | 113 ---------- .../player/widgets/base_audio_player.dart | 186 ++++++++-------- .../player/widgets/current_playing_list.dart | 164 ++++++++++++++ .../widgets/player_control_buttons.dart | 75 +++++-- .../controllers/playlist_controller.dart | 44 ++++ .../playlist/view/playlist_view.dart | 187 ++++++++++++++++ .../widgets/playlist_top_details.dart | 92 ++++++++ .../song/controllers/song_controller.dart | 44 ++++ lib/functions/song/view/song_view.dart | 201 ++++++++++++++++++ .../song/widgets/song_top_details.dart | 89 ++++++++ pubspec.lock | 4 +- 21 files changed, 1171 insertions(+), 325 deletions(-) delete mode 100644 lib/functions/player/views/playlist_view.dart create mode 100644 lib/functions/player/widgets/current_playing_list.dart create mode 100644 lib/functions/playlist/controllers/playlist_controller.dart create mode 100644 lib/functions/playlist/view/playlist_view.dart create mode 100644 lib/functions/playlist/widgets/playlist_top_details.dart create mode 100644 lib/functions/song/controllers/song_controller.dart create mode 100644 lib/functions/song/view/song_view.dart create mode 100644 lib/functions/song/widgets/song_top_details.dart diff --git a/lib/core/type_defs.dart b/lib/core/type_defs.dart index 93d45c8..94232b8 100644 --- a/lib/core/type_defs.dart +++ b/lib/core/type_defs.dart @@ -4,4 +4,30 @@ import 'package:sangeet/core/failure.dart'; typedef FutureEither = Future>; typedef FutureEitherVoid = FutureEither; -enum MediaType { artist, playlist, song, album, radio } +enum MediaType { + artist, + playlist, + song, + album, + radio; + + const MediaType(); + + static MediaType fromString(String type) { + switch (type) { + case "song": + return MediaType.song; + + case "album": + return MediaType.album; + + case "playlist": + return MediaType.playlist; + + case "featured_radio": + return MediaType.radio; + default: + return MediaType.song; + } + } +} diff --git a/lib/frame/commons.dart b/lib/frame/commons.dart index 2acf568..3f0276c 100644 --- a/lib/frame/commons.dart +++ b/lib/frame/commons.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/functions/explore/views/explore_view.dart'; -import 'package:sangeet/functions/player/views/playlist_view.dart'; import 'package:sangeet/functions/search/views/search_view.dart'; import 'package:sangeet/functions/settings/views/settings_view.dart'; @@ -32,13 +31,6 @@ enum Screens { index: 2, view: SettingsView(), ), - ), - playlist( - AppScreen( - name: "Playlists", - index: 0, - view: PlaylistView(), - ), ); final AppScreen screen; diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 7638263..b3fef9c 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -7,7 +7,6 @@ import 'package:window_manager/window_manager.dart'; import 'package:tray_manager/tray_manager.dart'; import 'package:sangeet/core/constants.dart'; -import 'package:sangeet/frame/commons.dart'; import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/base_audio_player.dart'; @@ -169,9 +168,6 @@ class _HomeFrameState extends ConsumerState } if (menuItem.key == SystemTrayActions.openPlaylist) { await windowManager.show(); - ref - .watch(appScreenConfigProvider.notifier) - .goto(screen: Screens.playlist); } } diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index 7b5bc71..bfe4117 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -133,42 +133,47 @@ class AlbumView extends ConsumerWidget { Visibility( visible: MediaQuery.of(context).size.width > 750, child: Container( - margin: EdgeInsets.all(8), + margin: const EdgeInsets.all(8), width: MediaQuery.of(context).size.width * 0.3, height: double.infinity, decoration: BoxDecoration( color: Colors.black12, borderRadius: BorderRadius.circular(10), ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), ), - ), - ListView.builder( - shrinkWrap: true, - itemCount: album.artists.length, - itemBuilder: (context, index) { - final artist = album.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), - ), - ); - }, - ), - ], + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: album.artists.length, + itemBuilder: (context, index) { + final artist = album.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), ), )) ], diff --git a/lib/functions/album/widgets/album_top_details.dart b/lib/functions/album/widgets/album_top_details.dart index 0a614f8..3509ca1 100644 --- a/lib/functions/album/widgets/album_top_details.dart +++ b/lib/functions/album/widgets/album_top_details.dart @@ -12,7 +12,8 @@ class AlbumTopDetails extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Badge( - backgroundColor: Colors.teal, + backgroundColor: + album.explicitContent ? Colors.teal : Colors.transparent, label: Visibility( visible: album.explicitContent, child: const Icon( diff --git a/lib/functions/explore/controllers/explore_controller.dart b/lib/functions/explore/controllers/explore_controller.dart index c3f21dc..163bf4c 100644 --- a/lib/functions/explore/controllers/explore_controller.dart +++ b/lib/functions/explore/controllers/explore_controller.dart @@ -29,6 +29,7 @@ class ExploreController extends StateNotifier { StackTrace.current, ); } + return data; } diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 4b3c66d..08acbc6 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -3,13 +3,15 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; +import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/explore/widgets/album_card.dart'; import 'package:sangeet/functions/explore/widgets/chart_card.dart'; import 'package:sangeet/functions/explore/widgets/playlist_card.dart'; import 'package:sangeet/functions/explore/widgets/radio_card.dart'; import 'package:sangeet/functions/explore/widgets/trend_card.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:sangeet_api/models.dart'; +import 'package:sangeet/functions/playlist/view/playlist_view.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class ExploreList extends ConsumerWidget { const ExploreList({super.key}); @@ -25,7 +27,6 @@ class ExploreList extends ConsumerWidget { final albums = data.albums; final playlists = data.topPlaylists; final trendings = data.trending; - return SingleChildScrollView( physics: const BouncingScrollPhysics(), child: Column( @@ -50,42 +51,90 @@ class ExploreList extends ConsumerWidget { childAspectRatio: 0.2, scrollDirection: Axis.horizontal, physics: const BouncingScrollPhysics(), - children: [ - for (SongModel song in trendings.songs) - (TrendCard( - onTap: () => ref - .watch(playerControllerProvider.notifier) - .runRadio( - radioId: song.id, - type: MediaType.song, - song: song, - ), - image: song.images[1].url, - title: song.title, - subtitle: song.subtitle, - explicitContent: song.explicitContent, - badgeIcon: Icons.music_note, - )), - for (AlbumModel album in trendings.albums) - (TrendCard( - onTap: () {}, - image: album.images[1].url, - title: album.title, - subtitle: - album.artists.map((e) => e.name).join(','), - explicitContent: album.explicitContent, - badgeIcon: Icons.album, - )), - for (PlaylistMapModel playlist in trendings.playlists) - (TrendCard( - onTap: () {}, - image: playlist.images[1].url, - title: playlist.title, - subtitle: playlist.subtitle, - explicitContent: playlist.explicitContent, - badgeIcon: Icons.playlist_play_rounded, - )), - ], + children: trendings + .map( + (item) => TrendCard( + key: Key(item.id), + onPlay: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: item.id, + type: MediaType.fromString(item.type), + redirect: () { + Navigator.of(context) + .push(MaterialPageRoute( + builder: (context) { + if (item.type == 'song') { + return SongView( + songId: item.id, + ); + } + if (item.type == 'album') { + return AlbumView( + albumId: item.id, + ); + } + if (item.type == 'playlist') { + return PlaylistView( + playlistId: item.id, + ); + } else { + return const ExploreView(); + } + }, + )); + }, + ), + onLike: () {}, + onTap: () { + Navigator.of(context) + .push(MaterialPageRoute(builder: (context) { + if (item.type == 'song') { + return SongView( + songId: item.id, + ); + } + if (item.type == 'album') { + return AlbumView( + albumId: item.id, + ); + } + if (item.type == 'playlist') { + return PlaylistView( + playlistId: item.id, + ); + } else { + return const ExploreView(); + } + })); + // if (item.type == 'album') { + // Navigator.of(context).push(MaterialPageRoute( + // builder: (context) => AlbumView( + // albumId: item.id, + // ), + // )); + // } + // if (item.type == 'playlist') { + // Navigator.of(context).push(MaterialPageRoute( + // builder: (context) => PlaylistView( + // playlistId: item.id, + // ), + // )); + // } + }, + image: item.image, + accentColor: item.accentColor, + title: item.title, + subtitle: item.subtitle, + explicitContent: item.explicitContent, + badgeIcon: item.type == "song" + ? Icons.music_note + : item.type == "playlist" + ? Icons.playlist_play_rounded + : Icons.album_rounded, + ), + ) + .toList(), ), ), @@ -186,14 +235,12 @@ class ExploreList extends ConsumerWidget { final album = albums[index]; return AlbumCard( album: album, - onTap: () => Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => const AlbumView(), - settings: RouteSettings( - name: album.id, - ), + onTap: () => + Navigator.of(context).push(MaterialPageRoute( + builder: (context) => AlbumView( + albumId: album.id, ), - ), + )), ); }, ), @@ -223,7 +270,16 @@ class ExploreList extends ConsumerWidget { itemCount: playlists.length, itemBuilder: (context, index) { final playlist = playlists[index]; - return PlaylistCard(playlist: playlist, onTap: () {}); + return PlaylistCard( + playlist: playlist, + onTap: () => Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => PlaylistView( + playlistId: playlist.id, + ), + ), + ), + ); }, ), ), diff --git a/lib/functions/explore/widgets/playlist_card.dart b/lib/functions/explore/widgets/playlist_card.dart index 4818477..8665d8a 100644 --- a/lib/functions/explore/widgets/playlist_card.dart +++ b/lib/functions/explore/widgets/playlist_card.dart @@ -24,10 +24,13 @@ class PlaylistCard extends StatelessWidget { Badge( label: Text("${playlist.songCount}"), alignment: Alignment.bottomLeft, - child: CircleAvatar( - radius: 55, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(playlist.images[2].url), + child: Hero( + tag: "${playlist.id}-image", + child: CircleAvatar( + radius: 55, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(playlist.images[2].url), + ), ), ), const SizedBox(height: 10), diff --git a/lib/functions/explore/widgets/trend_card.dart b/lib/functions/explore/widgets/trend_card.dart index d72bddc..422de48 100644 --- a/lib/functions/explore/widgets/trend_card.dart +++ b/lib/functions/explore/widgets/trend_card.dart @@ -6,15 +6,21 @@ class TrendCard extends StatefulWidget { final String subtitle; final IconData badgeIcon; final VoidCallback onTap; + final VoidCallback onLike; + final VoidCallback onPlay; final bool explicitContent; + final Color? accentColor; const TrendCard({ super.key, required this.onTap, required this.image, + this.accentColor, required this.title, required this.subtitle, required this.badgeIcon, required this.explicitContent, + required this.onLike, + required this.onPlay, }); @override @@ -31,7 +37,7 @@ class _TrendCardState extends State void initState() { super.initState(); _controller = AnimationController( - duration: const Duration(milliseconds: 275), + duration: const Duration(milliseconds: 100), vsync: this, ); _animation = Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation( @@ -39,8 +45,6 @@ class _TrendCardState extends State curve: Curves.ease, reverseCurve: Curves.easeIn, )); - // padding = Tween(begin: 0.0, end: -25.0).animate(CurvedAnimation( - // parent: _controller, curve: Curves.ease, reverseCurve: Curves.easeIn)); _controller.addListener(() { setState(() {}); }); @@ -60,6 +64,7 @@ class _TrendCardState extends State }); }, child: Card( + surfaceTintColor: widget.accentColor, child: InkWell( onTap: widget.onTap, borderRadius: BorderRadius.circular(15), @@ -131,7 +136,7 @@ class _TrendCardState extends State Padding( padding: const EdgeInsets.all(2.0), child: IconButton( - onPressed: () {}, + onPressed: widget.onLike, icon: const Icon( Icons.favorite, size: 15, @@ -147,7 +152,7 @@ class _TrendCardState extends State Padding( padding: const EdgeInsets.all(2.0), child: IconButton( - onPressed: () {}, + onPressed: widget.onPlay, icon: const Icon( Icons.play_arrow, size: 15, diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 6433611..7588b70 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -1,12 +1,12 @@ import 'dart:math'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:rxdart/rxdart.dart'; import 'package:sangeet/core/api_provider.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/frame/commons.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; @@ -61,9 +61,9 @@ class PlayerController extends StateNotifier { Future runRadio({ required String radioId, - SongModel? song, required MediaType type, bool featured = false, + VoidCallback? redirect, }) async { try { await playlist.clear(); @@ -71,6 +71,7 @@ class PlayerController extends StateNotifier { if (type == MediaType.song) { final songsObjects = await _exploreController.getRadio(radioId, false); + final song = await _api.song.getById(songId: radioId); songsObjects.songs.insert(0, song!); for (var i = 0; i < songsObjects.songs.length; i++) { final uri = songsObjects.songs[i].urls @@ -78,12 +79,19 @@ class PlayerController extends StateNotifier { .toList()[0] .url; - playlist - .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(songsObjects.songs[i].images[0].url), + brightness: Brightness.dark, + ); + + final s = song.copyWith( + accentColor: accentColor.background, + ); + playlist.add(AudioSource.uri(Uri.parse(uri), tag: s)); } await _player.setAudioSource(playlist, preload: true); } - + redirect?.call(); await _player.play(); } on PlayerException catch (e) { if (kDebugMode) { diff --git a/lib/functions/player/views/playlist_view.dart b/lib/functions/player/views/playlist_view.dart deleted file mode 100644 index aa85582..0000000 --- a/lib/functions/player/views/playlist_view.dart +++ /dev/null @@ -1,113 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:just_audio/just_audio.dart'; -import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:sangeet_api/modules/song/models/song_model.dart'; - -class PlaylistView extends ConsumerStatefulWidget { - const PlaylistView({super.key}); - - @override - ConsumerState createState() => _PlaylistViewState(); -} - -class _PlaylistViewState extends ConsumerState { - @override - Widget build(BuildContext context) { - final player = ref.watch(getAudioPlayer); - final playlist = ref.watch(playerControllerProvider.notifier).playlist; - return StreamBuilder( - stream: player.sequenceStateStream, - builder: (context, snapshot) { - final state = snapshot.data; - final sequence = state?.sequence ?? []; - - final song = sequence[state!.currentIndex].tag as SongModel; - if (state.currentIndex == playlist.length - 1) { - playlist.removeRange(0, 10); - ref - .watch(playerControllerProvider.notifier) - .loadMoreSongs(song: song); - } - - return SingleChildScrollView( - child: Column( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - song.images[2].url, - height: 250, - width: 250, - ), - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - song.title, - style: const TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ), - ], - ), - ); - }, - ); - } -} - - // ReorderableListView.builder( - // shrinkWrap: true, - // onReorder: (int oldIndex, int newIndex) { - // if (oldIndex < newIndex) newIndex--; - // playlist.move(oldIndex, newIndex); - // }, - // scrollDirection: Axis.vertical, - // itemCount: sequence.length, - // itemBuilder: (context, i) { - // final song = sequence[i].tag as SongModel; - // return Dismissible( - // key: ValueKey(sequence[i]), - // background: Container( - // alignment: Alignment.centerRight, - // child: const Padding( - // padding: EdgeInsets.only(right: 8.0), - // child: Icon(Icons.delete), - // ), - // ), - // onDismissed: (dismissDirection) { - // playlist.removeAt(i); - // }, - // child: ListTile( - // tileColor: i == state!.currentIndex - // ? Theme.of(context).primaryColorLight.withOpacity(.4) - // : null, - // title: Text( - // "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), - // subtitle: Text(song.albumName), - // leading: CircleAvatar( - // radius: 25, - // backgroundColor: Theme.of(context).primaryColorDark, - // foregroundImage: NetworkImage(song.images[0].url), - // ), - // onTap: () { - // player.seek(Duration.zero, index: i); - // }, - // ), - // ); - // }, - // ), - // ], - \ No newline at end of file diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 7f15c72..ff8837b 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -1,10 +1,10 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/frame/commons.dart'; - import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; @@ -45,102 +45,110 @@ class _BaseAudioPlayerState extends ConsumerState { final metadata = state!.currentSource!.tag as SongModel; // Start - return Container( - margin: const EdgeInsets.all(7), - decoration: BoxDecoration( - color: Colors.black26, - borderRadius: BorderRadius.circular(5), - ), - child: Column( - mainAxisSize: MainAxisSize.min, + return Card( + surfaceTintColor: metadata.accentColor, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - StreamBuilder( - stream: ref - .watch(playerControllerProvider.notifier) - .positionDataStream, - builder: (context, snapshot) { - final positionData = snapshot.data; - return Container( - padding: - const EdgeInsets.only(left: 10, right: 10, top: 10), - child: ProgressBar( - progress: positionData?.position ?? Duration.zero, - buffered: positionData?.bufferedPosition ?? Duration.zero, - total: positionData?.duration ?? Duration.zero, - progressBarColor: Colors.red, - baseBarColor: Colors.white.withOpacity(0.24), - bufferedBarColor: Colors.white.withOpacity(0.24), - thumbColor: Colors.white, - timeLabelLocation: TimeLabelLocation.sides, - timeLabelType: TimeLabelType.totalTime, - barHeight: 3.0, - thumbRadius: 5.0, - onSeek: (duration) { - player.seek(duration); - }, - ), - ); - }, - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: ClipRRect( - borderRadius: BorderRadius.circular(7), - child: Image.network( - metadata.images[1].url, - width: 80, - height: 80, - cacheHeight: 80, - cacheWidth: 80, - ), - ), + Expanded( + flex: 1, + child: Container( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + metadata.images[1].url, + height: 70, + width: 70, ), - Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: - const EdgeInsets.symmetric(horizontal: 8.0), - child: Text( - "${metadata.title} - ${metadata.label}", + ), + Flexible( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + metadata.title, style: const TextStyle( - fontSize: 16, - overflow: TextOverflow.clip, + fontWeight: FontWeight.bold, ), + maxLines: 1, ), - ), - Padding( - padding: - const EdgeInsets.symmetric(horizontal: 8.0), - child: Text( - metadata.albumName, - style: const TextStyle( - overflow: TextOverflow.clip, - ), + Text( + metadata.subtitle, + maxLines: 1, ), - ), - PlayerControllerButtons( - player: player, - onPressed: () => ref - .watch(appScreenConfigProvider.notifier) - .goto(screen: Screens.playlist), - ), - ], + ], + ), ), - ], - ), - ], + ), + ], + ), ), ), + Expanded( + flex: 2, + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + StreamBuilder( + stream: ref + .watch(playerControllerProvider.notifier) + .positionDataStream, + builder: (context, snapshot) { + final positionData = snapshot.data; + return ProgressBar( + progress: positionData?.position ?? Duration.zero, + buffered: + positionData?.bufferedPosition ?? Duration.zero, + total: positionData?.duration ?? Duration.zero, + progressBarColor: Colors.teal, + baseBarColor: Colors.white.withOpacity(0.24), + bufferedBarColor: Colors.white.withOpacity(0.24), + thumbColor: Colors.white, + timeLabelLocation: TimeLabelLocation.sides, + timeLabelType: TimeLabelType.totalTime, + barHeight: 3.0, + thumbRadius: 4.0, + onSeek: (duration) { + player.seek(duration); + }, + ); + }, + ), + PlayerControllerButtons( + player: player, + onPressed: () {}, + ), + ], + ), + ), + ), + Expanded( + flex: MediaQuery.of(context).size.width >= 880 ? 1 : 0, + child: Container( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + onPressed: () {}, + icon: const Icon(Icons.open_in_full_rounded), + ), + ], + ), + ), + ) ], ), ); diff --git a/lib/functions/player/widgets/current_playing_list.dart b/lib/functions/player/widgets/current_playing_list.dart new file mode 100644 index 0000000..865c4b7 --- /dev/null +++ b/lib/functions/player/widgets/current_playing_list.dart @@ -0,0 +1,164 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:sangeet/functions/explore/widgets/trend_card.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet_api/modules/song/models/song_model.dart'; + +class CurrentPlayingList extends ConsumerStatefulWidget { + const CurrentPlayingList({super.key}); + + @override + ConsumerState createState() => _PlaylistViewState(); +} + +class _PlaylistViewState extends ConsumerState { + @override + Widget build(BuildContext context) { + final player = ref.watch(getAudioPlayer); + final playlist = ref.watch(playerControllerProvider.notifier).playlist; + + return StreamBuilder( + stream: player.sequenceStateStream, + builder: (context, snapshot) { + final state = snapshot.data; + final sequence = state?.sequence ?? []; + + final song = sequence[state!.currentIndex].tag as SongModel; + if (state.currentIndex == playlist.length - 1) { + playlist.removeRange(0, 10); + ref + .watch(playerControllerProvider.notifier) + .loadMoreSongs(song: song); + } + + return Column(children: [ + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Current Playing Radio.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + ReorderableListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + onReorder: (int oldIndex, int newIndex) { + if (oldIndex < newIndex) newIndex--; + playlist.move(oldIndex, newIndex); + }, + scrollDirection: Axis.vertical, + itemCount: sequence.length, + itemBuilder: (context, i) { + final song = sequence[i].tag as SongModel; + return Dismissible( + key: ValueKey(sequence[i]), + background: Container( + alignment: Alignment.centerRight, + child: const Padding( + padding: EdgeInsets.only(right: 8.0), + child: Icon(Icons.delete), + ), + ), + onDismissed: (dismissDirection) { + playlist.removeAt(i); + }, + child: ListTile( + splashColor: song.accentColor, + title: Text( + "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), + subtitle: Text(song.albumName), + leading: CircleAvatar( + radius: 25, + backgroundColor: Theme.of(context).primaryColorDark, + foregroundImage: NetworkImage(song.images[0].url), + ), + onTap: () { + player.seek(Duration.zero, index: i); + }, + ), + ); + }, + ), + ]); + }); + // Row( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + // Padding( + // padding: const EdgeInsets.all(8.0), + // child: ClipRRect( + // borderRadius: BorderRadius.circular(8), + // child: Image.network( + // song.images[2].url, + // height: 250, + // width: 250, + // ), + // ), + // ), + // Padding( + // padding: const EdgeInsets.all(8.0), + // child: Text( + // song.title, + // style: const TextStyle( + // fontSize: 30, + // fontWeight: FontWeight.bold, + // ), + // ), + // ), + // ], + // ), + // ], + // ); + // }, + // ); + } +} + + // ReorderableListView.builder( + // shrinkWrap: true, + // onReorder: (int oldIndex, int newIndex) { + // if (oldIndex < newIndex) newIndex--; + // playlist.move(oldIndex, newIndex); + // }, + // scrollDirection: Axis.vertical, + // itemCount: sequence.length, + // itemBuilder: (context, i) { + // final song = sequence[i].tag as SongModel; + // return Dismissible( + // key: ValueKey(sequence[i]), + // background: Container( + // alignment: Alignment.centerRight, + // child: const Padding( + // padding: EdgeInsets.only(right: 8.0), + // child: Icon(Icons.delete), + // ), + // ), + // onDismissed: (dismissDirection) { + // playlist.removeAt(i); + // }, + // child: ListTile( + // tileColor: i == state!.currentIndex + // ? Theme.of(context).primaryColorLight.withOpacity(.4) + // : null, + // title: Text( + // "${song.title} ${i == state.currentIndex ? "(Playing)" : ""}"), + // subtitle: Text(song.albumName), + // leading: CircleAvatar( + // radius: 25, + // backgroundColor: Theme.of(context).primaryColorDark, + // foregroundImage: NetworkImage(song.images[0].url), + // ), + // onTap: () { + // player.seek(Duration.zero, index: i); + // }, + // ), + // ); + // }, + // ), + // ], + \ No newline at end of file diff --git a/lib/functions/player/widgets/player_control_buttons.dart b/lib/functions/player/widgets/player_control_buttons.dart index 971c7c1..a19c218 100644 --- a/lib/functions/player/widgets/player_control_buttons.dart +++ b/lib/functions/player/widgets/player_control_buttons.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; -import 'package:sangeet/functions/player/widgets/common.dart'; class PlayerControllerButtons extends StatelessWidget { final AudioPlayer player; @@ -14,22 +13,31 @@ class PlayerControllerButtons extends StatelessWidget { @override Widget build(BuildContext context) { return Row( - mainAxisSize: MainAxisSize.min, + // mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ - IconButton( - icon: const Icon( - Icons.volume_up, - ), - onPressed: () { - showSliderDialog( - context: context, - title: "Adjust volume", - divisions: 10, - min: 0.0, - max: 1.0, - value: player.volume, - stream: player.volumeStream, - onChanged: player.setVolume, + StreamBuilder( + stream: player.loopModeStream, + builder: (context, snapshot) { + final loopMode = snapshot.data ?? LoopMode.off; + const icons = [ + Icon(Icons.repeat, color: Colors.grey), + Icon(Icons.repeat, color: Colors.orange), + Icon(Icons.repeat_one, color: Colors.orange), + ]; + const cycleModes = [ + LoopMode.off, + LoopMode.all, + LoopMode.one, + ]; + final index = cycleModes.indexOf(loopMode); + return IconButton( + icon: icons[index], + onPressed: () { + player.setLoopMode(cycleModes[ + (cycleModes.indexOf(loopMode) + 1) % cycleModes.length]); + }, ); }, ), @@ -58,6 +66,11 @@ class PlayerControllerButtons extends StatelessWidget { return IconButton( icon: const Icon( Icons.play_arrow, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, ), onPressed: player.play, ); @@ -65,6 +78,11 @@ class PlayerControllerButtons extends StatelessWidget { return IconButton( icon: const Icon( Icons.pause, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, ), onPressed: player.pause, ); @@ -72,6 +90,11 @@ class PlayerControllerButtons extends StatelessWidget { return IconButton( icon: const Icon( Icons.replay, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, ), onPressed: () => player.seek(Duration.zero), ); @@ -84,9 +107,23 @@ class PlayerControllerButtons extends StatelessWidget { ), onPressed: () => player.seekToNext(), ), - IconButton( - onPressed: onPressed, - icon: const Icon(Icons.playlist_play_rounded), + StreamBuilder( + stream: player.shuffleModeEnabledStream, + builder: (context, snapshot) { + final shuffleModeEnabled = snapshot.data ?? false; + return IconButton( + icon: shuffleModeEnabled + ? const Icon(Icons.shuffle, color: Colors.orange) + : const Icon(Icons.shuffle, color: Colors.grey), + onPressed: () async { + final enable = !shuffleModeEnabled; + if (enable) { + await player.shuffle(); + } + await player.setShuffleModeEnabled(enable); + }, + ); + }, ), ], ); diff --git a/lib/functions/playlist/controllers/playlist_controller.dart b/lib/functions/playlist/controllers/playlist_controller.dart new file mode 100644 index 0000000..87a4a85 --- /dev/null +++ b/lib/functions/playlist/controllers/playlist_controller.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final playlistControllerProvider = + StateNotifierProvider((ref) { + return PlaylistController( + api: ref.watch(sangeetAPIProvider), + ); +}); + +final playlistByIdProvider = + FutureProvider.family((ref, String id) async { + return ref + .watch(playlistControllerProvider.notifier) + .fetchPlaylistById(playlistId: id); +}); + +class PlaylistController extends StateNotifier { + final SangeetAPI _api; + PlaylistController({required SangeetAPI api}) + : _api = api, + super(false); + + Future fetchPlaylistById({required String playlistId}) async { + final playlist = await _api.playlist.getById(id: playlistId); + + if (playlist == null) { + throw Error.throwWithStackTrace("Playlist not found", StackTrace.empty); + } + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(playlist.images[0].url), + brightness: Brightness.dark, + ); + + final s = playlist.copyWith( + accentColor: accentColor.background, + ); + + return s; + } +} diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart new file mode 100644 index 0000000..ea2868a --- /dev/null +++ b/lib/functions/playlist/view/playlist_view.dart @@ -0,0 +1,187 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart'; +import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; + +class PlaylistView extends ConsumerWidget { + final String playlistId; + const PlaylistView({this.playlistId = "", super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ModalRoute.of(context)?.settings.name ?? playlistId; + + return ref.watch(playlistByIdProvider(name)).when( + data: (playlist) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: playlist.accentColor!, + ), + ], + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + PlaylistTopDetails(playlist: playlist), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + // onTap: () => Navigator.of(context).pop(), + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + playlist.artists[0].image), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + playlist.artists[0].name, + style: GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: Color(playlist.playCount), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: playlist.songs.length, + itemBuilder: (context, index) { + final song = playlist.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: playlist.artists.length, + itemBuilder: (context, index) { + final artist = playlist.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + SizedBox(height: 20), + ], + ), + ), + )) + ], + ), + ); + }, + error: (err, st) => ErrorPage(error: err.toString()), + loading: () => const LoadingPage(), + ); + } +} diff --git a/lib/functions/playlist/widgets/playlist_top_details.dart b/lib/functions/playlist/widgets/playlist_top_details.dart new file mode 100644 index 0000000..b35ea1d --- /dev/null +++ b/lib/functions/playlist/widgets/playlist_top_details.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet_api/models.dart'; + +class PlaylistTopDetails extends StatelessWidget { + final PlaylistModel playlist; + const PlaylistTopDetails({super.key, required this.playlist}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Badge( + backgroundColor: + playlist.explicitContent ? Colors.teal : Colors.transparent, + label: Visibility( + visible: playlist.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + child: Hero( + tag: "${playlist.id}-image", + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + playlist.images[2].url, + width: 200, + height: 200, + ), + ), + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + playlist.title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + playlist.subtitle, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + Text( + "fans - ${formatNumber(playlist.fanCount)} \nfollowers - ${formatNumber(playlist.followerCount)}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + Text( + "Songs - ${playlist.songs.length}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/lib/functions/song/controllers/song_controller.dart b/lib/functions/song/controllers/song_controller.dart new file mode 100644 index 0000000..b268453 --- /dev/null +++ b/lib/functions/song/controllers/song_controller.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final songControllerProvider = + StateNotifierProvider((ref) { + return SongController( + api: ref.watch(sangeetAPIProvider), + ); +}); + +final songByIdProvider = + FutureProvider.family((ref, String id) async { + return ref.watch(songControllerProvider.notifier).fetchSongById(songId: id); +}); + +class SongController extends StateNotifier { + final SangeetAPI _api; + SongController({required SangeetAPI api}) + : _api = api, + super(false); + + Future fetchSongById({required String songId}) async { + final song = await _api.song.getById(songId: songId); + + if (song == null) { + throw Error.throwWithStackTrace("Song not found", StackTrace.empty); + } + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(song.images[0].url), + brightness: Brightness.dark, + ); + + final s = song.copyWith( + accentColor: accentColor.background, + ); + + return s; + } + + // Future> +} diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart new file mode 100644 index 0000000..61c78ad --- /dev/null +++ b/lib/functions/song/view/song_view.dart @@ -0,0 +1,201 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/widgets/current_playing_list.dart'; +import 'package:sangeet/functions/song/controllers/song_controller.dart'; +import 'package:sangeet/functions/song/widgets/song_top_details.dart'; + +class SongView extends ConsumerStatefulWidget { + final String songId; + const SongView({this.songId = "", super.key}); + + @override + ConsumerState createState() => _SongViewState(); +} + +class _SongViewState extends ConsumerState { + @override + Widget build(BuildContext context) { + final name = ModalRoute.of(context)?.settings.name ?? widget.songId; + final player = ref.read(getAudioPlayer); + + return ref.watch(songByIdProvider(name)).when( + data: (song) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: song.accentColor!, + ), + ], + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + SongTopDetails(song: song), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + // onTap: () => Navigator.of(context).pop(), + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + song.artists[0].image), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + song.artists[0].name, + style: GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + ), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: song.accentColor, + ), + ], + ), + ), + + // Container( + // padding: const EdgeInsets.symmetric(vertical: 10), + // child: ListView.builder( + // shrinkWrap: true, + // physics: const BouncingScrollPhysics(), + // scrollDirection: Axis.vertical, + // itemCount: album.songs.length, + // itemBuilder: (context, index) { + // final song = album.songs[index]; + // return ListTile( + // onTap: () {}, + // title: Text(song.title), + // subtitle: Text( + // "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + // leading: CircleAvatar( + // backgroundImage: + // NetworkImage(song.images[1].url), + // ), + // ); + // }, + // ), + // ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + )) + ], + ), + ); + }, + error: (err, st) => ErrorPage(error: err.toString()), + loading: () => const LoadingPage(), + ); + } +} diff --git a/lib/functions/song/widgets/song_top_details.dart b/lib/functions/song/widgets/song_top_details.dart new file mode 100644 index 0000000..beb0ea6 --- /dev/null +++ b/lib/functions/song/widgets/song_top_details.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet_api/models.dart'; + +class SongTopDetails extends StatelessWidget { + final SongModel song; + const SongTopDetails({super.key, required this.song}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Badge( + backgroundColor: + song.explicitContent ? Colors.teal : Colors.transparent, + label: Visibility( + visible: song.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + song.images[2].url, + width: 200, + height: 200, + ), + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + song.title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + song.subtitle, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + Text( + "${song.language} - ${song.year}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + Text( + "Listens - ${formatNumber(song.playCount)}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index a12bff7..e141d8c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -549,10 +549,10 @@ packages: description: path: "." ref: main - resolved-ref: "09fb73d9c0010c021d753a55aea348d1edecc18b" + resolved-ref: a247f5d9df2e49537a9f7a66bb78d0924046e18e url: "https://github.com/priyanshuverma-dev/sangeet-api" source: git - version: "0.1.2" + version: "0.1.3" screen_retriever: dependency: transitive description: From 75744f4ec577b22842232c96d57cc574796a9c8f Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Mon, 1 Jul 2024 20:01:38 +0530 Subject: [PATCH 05/20] bind radio to album, playlist --- .../album/controllers/album_controller.dart | 2 - lib/functions/album/view/album_view.dart | 10 +- .../explore/widgets/explore_list.dart | 88 ++++++++--------- .../player/controllers/player_controller.dart | 42 ++++++++ .../player/widgets/base_audio_player.dart | 64 ++++++------- .../player/widgets/current_playing_list.dart | 1 - .../playlist/view/playlist_view.dart | 95 ++++++++++--------- lib/functions/song/view/song_view.dart | 4 +- 8 files changed, 167 insertions(+), 139 deletions(-) diff --git a/lib/functions/album/controllers/album_controller.dart b/lib/functions/album/controllers/album_controller.dart index 4dbecd0..c166347 100644 --- a/lib/functions/album/controllers/album_controller.dart +++ b/lib/functions/album/controllers/album_controller.dart @@ -35,8 +35,6 @@ class AlbumController extends StateNotifier { brightness: Brightness.dark, ); - print(accentColor.background.value); - final s = album.copyWith( playCount: accentColor.background.value, ); diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index bfe4117..7adf3bc 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/functions/album/controllers/album_controller.dart'; import 'package:sangeet/functions/album/widgets/album_top_details.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; class AlbumView extends ConsumerWidget { final String albumId; @@ -64,7 +64,6 @@ class AlbumView extends ConsumerWidget { MainAxisAlignment.spaceBetween, children: [ InkWell( - // onTap: () => Navigator.of(context).pop(), child: Row( children: [ CircleAvatar( @@ -87,7 +86,12 @@ class AlbumView extends ConsumerWidget { ), ), IconButton( - onPressed: () {}, + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: album.id, + type: MediaType.album), icon: const Icon( Icons.play_arrow_rounded, size: 35, diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 08acbc6..e0d457d 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -107,20 +107,6 @@ class ExploreList extends ConsumerWidget { return const ExploreView(); } })); - // if (item.type == 'album') { - // Navigator.of(context).push(MaterialPageRoute( - // builder: (context) => AlbumView( - // albumId: item.id, - // ), - // )); - // } - // if (item.type == 'playlist') { - // Navigator.of(context).push(MaterialPageRoute( - // builder: (context) => PlaylistView( - // playlistId: item.id, - // ), - // )); - // } }, image: item.image, accentColor: item.accentColor, @@ -138,6 +124,43 @@ class ExploreList extends ConsumerWidget { ), ), + // ALBUMS // + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'New Albums.', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: GridView.builder( + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: albums.length, + itemBuilder: (context, index) { + final album = albums[index]; + return AlbumCard( + album: album, + onTap: () => + Navigator.of(context).push(MaterialPageRoute( + builder: (context) => AlbumView( + albumId: album.id, + ), + )), + ); + }, + ), + ), + // CHARTS // const Padding( padding: EdgeInsets.all(10.0), @@ -209,43 +232,6 @@ class ExploreList extends ConsumerWidget { ), ), - // ALBUMS // - const Padding( - padding: EdgeInsets.all(10.0), - child: Text( - 'New Albums.', - style: TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - ), - ), - ), - Container( - margin: const EdgeInsets.symmetric(vertical: 20.0), - height: 400.0, - child: GridView.builder( - gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - ), - scrollDirection: Axis.horizontal, - physics: const BouncingScrollPhysics(), - itemCount: albums.length, - itemBuilder: (context, index) { - final album = albums[index]; - return AlbumCard( - album: album, - onTap: () => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => AlbumView( - albumId: album.id, - ), - )), - ); - }, - ), - ), - // PLAYLISTS // const Padding( padding: EdgeInsets.all(10.0), diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 7588b70..2d8a97f 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -91,6 +91,48 @@ class PlayerController extends StateNotifier { } await _player.setAudioSource(playlist, preload: true); } + + if (type == MediaType.album) { + final album = await _api.album.getById(albumId: radioId); + if (album == null) { + throw Error.throwWithStackTrace("Album not found", StackTrace.empty); + } + + for (var i = 0; i < album.songs.length; i++) { + final uri = album.songs[i].urls + .where((element) => element.quality == quality.name) + .toList()[0] + .url; + + playlist.add(AudioSource.uri(Uri.parse(uri), tag: album.songs[i])); + } + + await _player.setAudioSource(playlist, preload: true); + } + if (type == MediaType.playlist) { + final playlistModel = await _api.playlist.getById(id: radioId); + if (playlistModel == null) { + throw Error.throwWithStackTrace( + "Playlist not found", + StackTrace.empty, + ); + } + + for (var i = 0; i < playlistModel.songs.length; i++) { + final uri = playlistModel.songs[i].urls + .where((element) => element.quality == quality.name) + .toList()[0] + .url; + + playlist.add(AudioSource.uri( + Uri.parse(uri), + tag: playlistModel.songs[i], + )); + } + + await _player.setAudioSource(playlist, preload: true); + } + redirect?.call(); await _player.play(); } on PlayerException catch (e) { diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index ff8837b..17b7dd3 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -1,6 +1,4 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; @@ -53,42 +51,40 @@ class _BaseAudioPlayerState extends ConsumerState { children: [ Expanded( flex: 1, - child: Container( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(10), - child: Image.network( - metadata.images[1].url, - height: 70, - width: 70, - ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + metadata.images[1].url, + height: 70, + width: 70, ), - Flexible( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - metadata.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - maxLines: 1, - ), - Text( - metadata.subtitle, - maxLines: 1, + ), + Flexible( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + metadata.title, + style: const TextStyle( + fontWeight: FontWeight.bold, ), - ], - ), + maxLines: 1, + ), + Text( + metadata.subtitle, + maxLines: 1, + ), + ], ), ), - ], - ), + ), + ], ), ), Expanded( diff --git a/lib/functions/player/widgets/current_playing_list.dart b/lib/functions/player/widgets/current_playing_list.dart index 865c4b7..1d6d97b 100644 --- a/lib/functions/player/widgets/current_playing_list.dart +++ b/lib/functions/player/widgets/current_playing_list.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; -import 'package:sangeet/functions/explore/widgets/trend_card.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet_api/modules/song/models/song_model.dart'; diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index ea2868a..9ab35cf 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart'; import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; @@ -63,7 +64,6 @@ class PlaylistView extends ConsumerWidget { MainAxisAlignment.spaceBetween, children: [ InkWell( - // onTap: () => Navigator.of(context).pop(), child: Row( children: [ CircleAvatar( @@ -86,7 +86,12 @@ class PlaylistView extends ConsumerWidget { ), ), IconButton( - onPressed: () {}, + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: playlist.id, + type: MediaType.playlist), icon: const Icon( Icons.play_arrow_rounded, size: 35, @@ -130,52 +135,52 @@ class PlaylistView extends ConsumerWidget { // SUGGESTIONS Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: playlist.artists.length, - itemBuilder: (context, index) { - final artist = playlist.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, - ), - SizedBox(height: 20), - ], - ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: playlist.artists.length, + itemBuilder: (context, index) { + final artist = playlist.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, + ), + const SizedBox(height: 20), + ], ), - )) + ), + ), + ) ], ), ); diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index 61c78ad..b0b0b6b 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:just_audio/just_audio.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:sangeet/functions/player/widgets/current_playing_list.dart'; import 'package:sangeet/functions/song/controllers/song_controller.dart'; import 'package:sangeet/functions/song/widgets/song_top_details.dart'; @@ -20,7 +18,7 @@ class _SongViewState extends ConsumerState { @override Widget build(BuildContext context) { final name = ModalRoute.of(context)?.settings.name ?? widget.songId; - final player = ref.read(getAudioPlayer); + // final player = ref.read(getAudioPlayer); return ref.watch(songByIdProvider(name)).when( data: (song) { From ac1f416ee22ea773aa58e58aa60a5235c118af95 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 10:05:59 +0530 Subject: [PATCH 06/20] chart and radio fuctions --- lib/frame/home.dart | 39 ++-- .../charts/controllers/charts_controller.dart | 44 ++++ lib/functions/charts/view/charts_view.dart | 191 ++++++++++++++++++ .../charts/widgets/charts_top_details.dart | 76 +++++++ .../explore/widgets/explore_list.dart | 8 +- .../player/controllers/player_controller.dart | 77 ++++--- .../player/widgets/base_audio_player.dart | 12 +- lib/main.dart | 5 +- pubspec.lock | 26 ++- pubspec.yaml | 2 +- 10 files changed, 401 insertions(+), 79 deletions(-) create mode 100644 lib/functions/charts/controllers/charts_controller.dart create mode 100644 lib/functions/charts/view/charts_view.dart create mode 100644 lib/functions/charts/widgets/charts_top_details.dart diff --git a/lib/frame/home.dart b/lib/frame/home.dart index b3fef9c..20554d6 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -92,34 +92,41 @@ class _HomeFrameState extends ConsumerState width: 35, ), ), - elevation: 10, - labelType: NavigationRailLabelType.all, + labelType: NavigationRailLabelType.none, indicatorShape: ContinuousRectangleBorder( borderRadius: BorderRadius.circular(50), ), ), Expanded( - child: IndexedStack( - index: _index, + child: Column( children: [ - _buildNavigator( - 0, - const ExploreView(), - ), - _buildNavigator( - 1, - const SearchView(), - ), - _buildNavigator( - 2, - const SettingsView(), + Expanded( + flex: 1, + child: IndexedStack( + index: _index, + children: [ + _buildNavigator( + 0, + const ExploreView(), + ), + _buildNavigator( + 1, + const SearchView(), + ), + _buildNavigator( + 2, + const SettingsView(), + ), + ], + ), ), + const BaseAudioPlayer(), ], ), ), ], ), - bottomNavigationBar: const BaseAudioPlayer(), + // bottomNavigationBar: const BaseAudioPlayer(), ), ), ); diff --git a/lib/functions/charts/controllers/charts_controller.dart b/lib/functions/charts/controllers/charts_controller.dart new file mode 100644 index 0000000..a5fcc86 --- /dev/null +++ b/lib/functions/charts/controllers/charts_controller.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final chartControllerProvider = + StateNotifierProvider((ref) { + return AlbumController( + api: ref.watch(sangeetAPIProvider), + ); +}); + +final chartByIdProvider = + FutureProvider.family((ref, String token) async { + return ref + .watch(chartControllerProvider.notifier) + .fetchChartById(token: token); +}); + +class AlbumController extends StateNotifier { + final SangeetAPI _api; + AlbumController({required SangeetAPI api}) + : _api = api, + super(false); + + Future fetchChartById({required String token}) async { + final album = await _api.explore.chart(token: token); + + if (album == null) { + throw Error.throwWithStackTrace("Playlist not found", StackTrace.empty); + } + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(album.images[0].url), + brightness: Brightness.dark, + ); + + final s = album.copyWith( + playCount: accentColor.background.value, + ); + + return s; + } +} diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart new file mode 100644 index 0000000..6e9271e --- /dev/null +++ b/lib/functions/charts/view/charts_view.dart @@ -0,0 +1,191 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/functions/charts/controllers/charts_controller.dart'; +import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; + +class ChartView extends ConsumerWidget { + final String chartId; + const ChartView({this.chartId = "", super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ModalRoute.of(context)?.settings.name ?? chartId; + + return ref.watch(chartByIdProvider(name)).when( + data: (chart) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Color(chart.playCount), + ), + ], + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + ChartTopDetails(chart: chart), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + chart.artists[0].image), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + chart.artists[0].name, + style: GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: chart.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: Color(chart.playCount), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: chart.songs.length, + itemBuilder: (context, index) { + final song = chart.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + )) + ], + ), + ); + }, + error: (err, st) => ErrorPage(error: err.toString()), + loading: () => const LoadingPage(), + ); + } +} diff --git a/lib/functions/charts/widgets/charts_top_details.dart b/lib/functions/charts/widgets/charts_top_details.dart new file mode 100644 index 0000000..f7d18c0 --- /dev/null +++ b/lib/functions/charts/widgets/charts_top_details.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; +import 'package:sangeet_api/models.dart'; + +class ChartTopDetails extends StatelessWidget { + final PlaylistModel chart; + const ChartTopDetails({super.key, required this.chart}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Badge( + backgroundColor: + chart.explicitContent ? Colors.teal : Colors.transparent, + label: Visibility( + visible: chart.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + chart.images[1].url, + width: 200, + height: 200, + ), + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + chart.title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + chart.subtitle, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + Text( + "${chart.language}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index e0d457d..4930114 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; +import 'package:sangeet/functions/charts/view/charts_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/explore/widgets/album_card.dart'; @@ -184,9 +185,11 @@ class ExploreList extends ConsumerWidget { chart: chart, onTap: () => Navigator.of(context).push( MaterialPageRoute( - builder: (context) => const AlbumView(), + builder: (context) => ChartView( + chartId: chart.token, + ), settings: RouteSettings( - name: chart.id, + name: chart.token, ), ), ), @@ -226,6 +229,7 @@ class ExploreList extends ConsumerWidget { .runRadio( radioId: radio.id, type: MediaType.radio, + redirect: () {}, ), ); }, diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 2d8a97f..dd5158e 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -62,34 +62,18 @@ class PlayerController extends StateNotifier { Future runRadio({ required String radioId, required MediaType type, - bool featured = false, VoidCallback? redirect, }) async { try { + List songs = []; + await playlist.clear(); final quality = await _settingsController.getSongQuality(); if (type == MediaType.song) { final songsObjects = await _exploreController.getRadio(radioId, false); final song = await _api.song.getById(songId: radioId); - songsObjects.songs.insert(0, song!); - for (var i = 0; i < songsObjects.songs.length; i++) { - final uri = songsObjects.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; - - final accentColor = await ColorScheme.fromImageProvider( - provider: NetworkImage(songsObjects.songs[i].images[0].url), - brightness: Brightness.dark, - ); - - final s = song.copyWith( - accentColor: accentColor.background, - ); - playlist.add(AudioSource.uri(Uri.parse(uri), tag: s)); - } - await _player.setAudioSource(playlist, preload: true); + songs = [song!, ...songsObjects.songs]; } if (type == MediaType.album) { @@ -97,17 +81,7 @@ class PlayerController extends StateNotifier { if (album == null) { throw Error.throwWithStackTrace("Album not found", StackTrace.empty); } - - for (var i = 0; i < album.songs.length; i++) { - final uri = album.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; - - playlist.add(AudioSource.uri(Uri.parse(uri), tag: album.songs[i])); - } - - await _player.setAudioSource(playlist, preload: true); + songs = album.songs; } if (type == MediaType.playlist) { final playlistModel = await _api.playlist.getById(id: radioId); @@ -118,21 +92,44 @@ class PlayerController extends StateNotifier { ); } - for (var i = 0; i < playlistModel.songs.length; i++) { - final uri = playlistModel.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; + songs = playlistModel.songs; + } - playlist.add(AudioSource.uri( - Uri.parse(uri), - tag: playlistModel.songs[i], - )); + if (type == MediaType.radio) { + final radio = await _api.song.radio(songId: radioId, featured: true); + if (radio == null) { + throw Error.throwWithStackTrace( + "Radio not found", + StackTrace.empty, + ); } + songs = radio.songs; + } + + for (var i = 0; i < songs.length; i++) { + final uri = songs[i] + .urls + .where((element) => element.quality == quality.name) + .toList()[0] + .url; + + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(songs[i].images[0].url), + brightness: Brightness.dark, + ); - await _player.setAudioSource(playlist, preload: true); + final song = songs[i].copyWith( + accentColor: accentColor.background, + ); + + playlist.add(AudioSource.uri( + Uri.parse(uri), + tag: song, + )); } + await _player.setAudioSource(playlist, preload: true); + redirect?.call(); await _player.play(); } on PlayerException catch (e) { diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 17b7dd3..3343c1b 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -8,14 +8,6 @@ import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; import 'package:sangeet_api/modules/song/models/song_model.dart'; -// FOR APPBAR WIDGET -PreferredSizeWidget getBasePlayerAppbar(BuildContext context) { - return PreferredSize( - preferredSize: Size(MediaQuery.of(context).size.width, 200), - child: const BaseAudioPlayer(), - ); -} - class BaseAudioPlayer extends ConsumerStatefulWidget { const BaseAudioPlayer({super.key}); @@ -44,7 +36,9 @@ class _BaseAudioPlayerState extends ConsumerState { // Start return Card( - surfaceTintColor: metadata.accentColor, + surfaceTintColor: Colors.transparent, + color: Colors.transparent, + shadowColor: Colors.transparent, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/main.dart b/lib/main.dart index 85acb66..a4a7a91 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,14 +29,15 @@ class MyApp extends StatelessWidget { title: 'Sangeet', debugShowCheckedModeBanner: false, theme: ThemeData( - colorSchemeSeed: Colors.teal, + colorSchemeSeed: Colors.grey, ), darkTheme: ThemeData.dark().copyWith( textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), colorScheme: ColorScheme.fromSeed( - seedColor: Colors.teal, + seedColor: Colors.deepPurpleAccent, brightness: Brightness.dark, ), + primaryColor: Colors.black12, ), themeMode: ThemeMode.dark, home: const HomeFrame(), diff --git a/pubspec.lock b/pubspec.lock index e141d8c..bb2d45f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -177,6 +177,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + flex_color_scheme: + dependency: "direct main" + description: + name: flex_color_scheme + sha256: "32914024a4f404d90ff449f58d279191675b28e7c08824046baf06826e99d984" + url: "https://pub.dev" + source: hosted + version: "7.3.1" + flex_seed_scheme: + dependency: transitive + description: + name: flex_seed_scheme + sha256: "4cee2f1d07259f77e8b36f4ec5f35499d19e74e17c7dce5b819554914082bc01" + url: "https://pub.dev" + source: hosted + version: "1.5.0" flutter: dependency: "direct main" description: flutter @@ -549,7 +565,7 @@ packages: description: path: "." ref: main - resolved-ref: a247f5d9df2e49537a9f7a66bb78d0924046e18e + resolved-ref: "9e85662d7a3111d1ecfcf2b509634170a2d26340" url: "https://github.com/priyanshuverma-dev/sangeet-api" source: git version: "0.1.3" @@ -633,14 +649,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.17.1" - simple_animations: - dependency: "direct main" - description: - name: simple_animations - sha256: "1ea7b93fb98e2a611b6865d632de55607b766328d14700143353129ee0559d3a" - url: "https://pub.dev" - source: hosted - version: "5.0.2" skeletonizer: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 0df3882..23ef5cf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,8 +61,8 @@ dependencies: url: https://github.com/priyanshuverma-dev/sangeet-api ref: main google_fonts: ^6.2.1 - simple_animations: ^5.0.2 intl: ^0.19.0 + flex_color_scheme: ^7.3.1 dev_dependencies: flutter_test: From 9c638fda0044599796e580ec6e3c50ef843136dc Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 10:20:37 +0530 Subject: [PATCH 07/20] static routes added --- lib/functions/album/view/album_view.dart | 6 ++ lib/functions/charts/view/charts_view.dart | 91 ++++++++++--------- .../explore/widgets/explore_list.dart | 58 ++++-------- .../player/views/current_playing_view.dart | 11 +++ .../playlist/view/playlist_view.dart | 6 ++ lib/functions/song/view/song_view.dart | 7 +- 6 files changed, 95 insertions(+), 84 deletions(-) create mode 100644 lib/functions/player/views/current_playing_view.dart diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index 7adf3bc..7eab3f6 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -8,6 +9,11 @@ import 'package:sangeet/functions/album/widgets/album_top_details.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class AlbumView extends ConsumerWidget { + static route(String id) => CupertinoPageRoute( + builder: (context) => AlbumView( + albumId: id, + ), + ); final String albumId; const AlbumView({this.albumId = "", super.key}); diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index 6e9271e..a3f9a21 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -8,6 +9,12 @@ import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class ChartView extends ConsumerWidget { + static route(String id) => CupertinoPageRoute( + builder: (context) => ChartView( + chartId: id, + ), + ); + final String chartId; const ChartView({this.chartId = "", super.key}); @@ -135,51 +142,51 @@ class ChartView extends ConsumerWidget { // SUGGESTIONS Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: chart.artists.length, - itemBuilder: (context, index) { - final artist = chart.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, - ), - ], - ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, + ), + ], ), - )) + ), + ), + ) ], ), ); diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 4930114..1f99055 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; @@ -62,28 +63,18 @@ class ExploreList extends ConsumerWidget { radioId: item.id, type: MediaType.fromString(item.type), redirect: () { - Navigator.of(context) - .push(MaterialPageRoute( - builder: (context) { - if (item.type == 'song') { - return SongView( - songId: item.id, - ); - } - if (item.type == 'album') { - return AlbumView( - albumId: item.id, - ); - } - if (item.type == 'playlist') { - return PlaylistView( - playlistId: item.id, - ); - } else { - return const ExploreView(); - } - }, - )); + if (item.type == 'song') { + Navigator.of(context) + .push(SongView.route(item.id)); + } + if (item.type == 'album') { + Navigator.of(context) + .push(AlbumView.route(item.id)); + } + if (item.type == 'playlist') { + Navigator.of(context) + .push(PlaylistView.route(item.id)); + } }, ), onLike: () {}, @@ -151,12 +142,8 @@ class ExploreList extends ConsumerWidget { final album = albums[index]; return AlbumCard( album: album, - onTap: () => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => AlbumView( - albumId: album.id, - ), - )), + onTap: () => Navigator.of(context) + .push(AlbumView.route(album.id)), ); }, ), @@ -184,14 +171,7 @@ class ExploreList extends ConsumerWidget { return ChartCard( chart: chart, onTap: () => Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => ChartView( - chartId: chart.token, - ), - settings: RouteSettings( - name: chart.token, - ), - ), + ChartView.route(chart.token), ), ); }, @@ -263,11 +243,7 @@ class ExploreList extends ConsumerWidget { return PlaylistCard( playlist: playlist, onTap: () => Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => PlaylistView( - playlistId: playlist.id, - ), - ), + PlaylistView.route(playlist.id), ), ); }, diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart new file mode 100644 index 0000000..051c9b7 --- /dev/null +++ b/lib/functions/player/views/current_playing_view.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +class CurrentPlayingView extends ConsumerWidget { + const CurrentPlayingView({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container(); + } +} diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index 9ab35cf..9100ea8 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -8,6 +9,11 @@ import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart' import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; class PlaylistView extends ConsumerWidget { + static route(String id) => CupertinoPageRoute( + builder: (context) => PlaylistView( + playlistId: id, + ), + ); final String playlistId; const PlaylistView({this.playlistId = "", super.key}); diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index b0b0b6b..6121e60 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -7,6 +8,11 @@ import 'package:sangeet/functions/song/controllers/song_controller.dart'; import 'package:sangeet/functions/song/widgets/song_top_details.dart'; class SongView extends ConsumerStatefulWidget { + static route(String id) => CupertinoPageRoute( + builder: (context) => SongView( + songId: id, + ), + ); final String songId; const SongView({this.songId = "", super.key}); @@ -18,7 +24,6 @@ class _SongViewState extends ConsumerState { @override Widget build(BuildContext context) { final name = ModalRoute.of(context)?.settings.name ?? widget.songId; - // final player = ref.read(getAudioPlayer); return ref.watch(songByIdProvider(name)).when( data: (song) { From 7d86e4766cdb437644b901b1322a3c1fad527996 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 11:32:31 +0530 Subject: [PATCH 08/20] theme, artist view and asset --- assets/background.jpg | Bin 0 -> 1373703 bytes lib/core/widgets/error.dart | 22 +- lib/core/widgets/loading.dart | 1 + lib/frame/home.dart | 8 +- .../album/controllers/album_controller.dart | 2 +- lib/functions/album/view/album_view.dart | 324 +++++++++-------- .../artist/controller/artist_controller.dart | 43 +++ lib/functions/artist/view/artist_view.dart | 196 +++++++++++ .../charts/controllers/charts_controller.dart | 20 +- lib/functions/charts/view/charts_view.dart | 322 +++++++++-------- lib/functions/explore/views/explore_view.dart | 21 +- .../explore/widgets/explore_list.dart | 36 +- .../player/controllers/player_controller.dart | 88 ----- .../player/widgets/current_playing_list.dart | 8 +- .../playlist/view/playlist_view.dart | 326 +++++++++-------- lib/functions/song/view/song_view.dart | 328 ++++++++++-------- lib/main.dart | 5 +- pubspec.yaml | 1 + 18 files changed, 1009 insertions(+), 742 deletions(-) create mode 100644 assets/background.jpg create mode 100644 lib/functions/artist/controller/artist_controller.dart create mode 100644 lib/functions/artist/view/artist_view.dart diff --git a/assets/background.jpg b/assets/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50f7448411d655f8dcf6de0fb16b8b4c0b29635c GIT binary patch literal 1373703 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

  • qZ_L5&J5H|*!SaB9bH%&BJ zMH=?x=?vNzD|{|X))m>KuT9)_tG^wXAZwKZ-c^;FRv^9r)CTx!ZlX8_M7)gl(qDjF z;*lZ8Cli$0^I+FED0dKOV4bgA05rbdjZG1Td1t7U=OO`mi0fXgnq}KaNUF7{?_vAs zamn`^V#l64&TnjK%iC_h;ig&Ok|J(85b0#R$7jr!FiiJGzDBNpwRb0qqnd?&R%n&? zbaPD~!)50sU8`Vl@XBc;1?zlxO<#c^0JnJ&=9{=SwG7=Idu69NHPQ001b(`k#A+Mr z2b)hv?%G5HkD1^bPWHN=FnbFh&d8Dsb0>7Lbef0$XN1;vs`F-=YKa`)DZDk}fh0Gm zA-ZLD7BAm*ViX}4KzU~6JB^bg1Q_@&dpfPlBE#zkoSARNuB;M;Oj_?HQx6^t?TAf4f^+{s$GBg3giqAAXIUISFP@Drv`(ePs9 z;_G}|Y{Hzqdp~;Aq%LpAPS>6KV$Jf#X(^|O+4ZLUl^Aqz#!#}J1!^g14c-tr*9VFx zyx&k{<9{3HVu%HLJ=zFVCW3Di9aP{eL;5z8hzMc#6BuZWBlDvyymFehEv(jMt)BTR zJq_emeE%8S?l^U$S8_WI4ibd2TA1E&Ra#%3Vz^9XnG~hIN1z+wJs`3oTU!luo6A@P;imt^F?M5?ty_q)QGTP8o?f*F)jo&>8S`mRxKq;_C|zGME*2Bg zf4yPW$xC2(RG5|KQI`u^G$u1=EA8n9rckT_Ob0()Kh?DnT0R@b*DrrQvdL(hG+3OK zdv(dsSgWi5p)cE7@oc$~+M6*Fe0*~)+Ud``PIU?w!Y!A*9K;CIX!o1t@wlalMi%7| zXJNw&qgj5^TzS#0avoLwVNREI8(dUsBouJ=qZ2`!IixvLPI;=eh7Nh*)P}SVGM`=w zJ9rmT?Y#aZ)A)U_Vaj8gmxhK}Ud4M2v0T}%SLv;mgmWklr&YGf}D5t5mA6L$TyEn9M)T79nDx)E8hH5*yBnKthbX~T9g z$KR?>pdoAIy}hKpyu;*dVM)2_orp5C2PQ)uWy5x)w;2T&^F2V-W0vlnM5Qd>LQ|Ve z*^o_)@l9{<43PB!mxvej6XG*KFX=XhR86CEbfO26<1M_51v`?wW_1O{?i-wbS})zt zDcvFT2!sq zxAI2J&~**WZ0qf!d-fhT2={z5yZGpP3sa}RT=kC2EX(F6VZvT8aUosKnBK~mArhG? zo9nk2?*%4PI(mtt=?2EDaX(=b!t@CH$q9SQxuHE-tyRCJ=AW=z(?;&(SktFagp-B2 zK>|^4r=6x zXQfABhdYdNiG!KB^C%Q*R9Ij&a@wZv^ll7(rFppq)!xm*Ym1a1bo+l^auJ^Ds9spg zpPj<&A=ea>y}Z~i%*)Fom(}G7X-{2od`3Y(2yNs{lGqqymyj{Tx(Tx86&|M`uN_gZ zSMBbn>)SbpyLbN&D6;6#HDKST_{EPxzi|L8BGpCi(0>≈9?Qce@!{(YW1m40aoM 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

    DTz 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¨pDY-rRo#!K~r?I6byAnblvnjMS1EYXKT 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%0DK6wC6x^;0nWo$1PM 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

      r;!Pb~w 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 Mf`B39$N<&x>p(w~rtVzoMBn>D9A5V5&P#dq8N zFpWO%7dwxZukv4#5__*LCQKC7Xl1RKUWl5V_HmAzl@xq6xF#i$I@%XKY%#p#bIw(A zvW~ZrwBo>m?Xsw^9{avC5Gi^1$COdFqo$CMbiXs6^laYB6JGb;K38-RlarWa6VG)! zg*%}gNcBF6QgI=y7`gCcQ@w_>`Yw=9IoDf=vTrQyaxQHO5EFsOiZ}Ri8^Z2SC%01uHrDmowV=khmIR}Bm*bKYe!XKDg7L#yM5@D8N|gG0UT+lLrfr)Sg#7L zU$DyZ$&DuEuGXpL)hx}&Ug#;Fz%`T_>m|Che|Vdy#oj_k+m?+_Uw`qwhT0cehrZ)|NA@s#B3L)_Lv=Wm`H<47+Gk zxwic>-yWk_afG&^jCkECddmQJc&)r*e|95_$DZ-F*&uknR!c6k+&j~2XFheDofp{i zeBk3Xd^mRH_wf6RYXm>OqQWwlC?{E!uj2K$en2<0nR7#OJ7rd)9d?fgLC2u)iEwf` z6k$`#LJYR()Jf3w4hd!iJVvhpH{_w9J9B}QcdT7nJvz#xZ^U-F6q$9c%%#t|ke*hE z&!p9`9`SNo2w1E*H*~9s#Sh^bd!@akK`v^W;IXD@I%I(MEg@%51&@^E4b>u^LE&)s z!*(^iL4CuP+lC)J)t$BtN*a;ToPIJ~p0(${d}eC*-Yb0VkO^1!!03t#28G0K8LCQK zr8I>CWgH*-bc^I3SUqpTEu6Liu&4y3Z}dfJUyH9B0$WzqlUr8?$z=m~k|P3<3Ly$^qitSKruQ%Zz^)YOMph z7|RsQ{WQ#;$0x?<(cjQBzi)q)p6aDlrX1w5!gD!LM7*H~y7!L8iA$im7z65l5aoZ+ zVU-oEz$RtTP)dsSoH@$2ih$8bb>nE~QK|Dt?)2{*L3;jG(}dVjs-;JRa%q1|`x4~R zv6Jd@lwFL8+H%fPag-@AvZs1P2QKZv@f;CI!5nnE{bHIzj)9g%sz($vk&|q_gG8Wd z(KJ$gz%Y3_K&2!S@%z_F%3VPI%(12191I4q9zv4|xx{c%OJ1Gv8xR|%xWqql=?^&u zc?$pSE95$RW&`NFdeyYv44 zdMtcr-~RLPK+JZX60u(TP4skF&XMj;HxKZ^6g_risws#0tE|Zm`Izy?O;MJx*Mr3$ z&tD2>{mgRO%HYqgk{xZ7=W}y|7tcKkOO-uBfm-Q(`#T)@HiLi`8x!ggs`J>n7%GsI z$8}zQua7R_J_@cMU(@yB>CSsN1DEz~W6Rsf=x=JZz|~fRRN!*Q}x$V06)Ib?PUCb9a?7`k61!6!_O(Z|oK){{gI?y9D(^nyM`DN|PCm@&PxS(4&Dl zCbhoWu>5r$*jc++h9Ok{DznoVeQoQ2k?U-PVf3BU5;p3sRB0!AFTYLQ8UAgH09m!! zHL+tWh@TMewY7i>RJk_2rk0Wb!S3)$2>vyf>Da7~TJpLI@!TFkkK^K*&J?TLu0uBy z^Gl}l6s5&CR_YvMSsjqpPA~zLxXyTNH0SM|ooi(dp&L)qZI}}lP?!LM3kVsrJ>2Ex zWg82!=G6>yeGUyj__X0CDxDqN{oA+1Jbdy;4Dc@T*hpTzA0Z(gtqEL!>S{QB5SvBn z_1MSOU_-uyfoykQ2ei&6-mCsuL7wd6r}oqzc%Qy{8i8=co@W_*aKD@V##0z z)?t#T?3!-wlci0gG&Nao*=JLG9w80!zyWLdeLDXJtSmHbN4iH8Q7y$YkJei9yKsXD z3*c6*34pEtBCW$I+P@Hq}rNp@`3V)R|mzUn4x!9&f>6`0cW znu&O{b!~0EVc+1+F!KlC8!+Aj>#0RoZ}=NWt5pq^Cmoy18Mft6JRLKbVQ?n&Ez{NT z%wr+7K~=|W&2K(^3ON>YC$AB-EP3JZeh*@w*J6n#Rl6U$O0zD==6W0EzZVG^SQRo} zV&|yBrmP@)WqL|sFH&`(4xa8pM4-2llyH1*XJ^Hz2(I0sD1ul8sQmI~R0oLiyCY}} zmbU}YqrF8ihxRe|=o=j`ON=`b4z4U`hm_FNCD|1FI~O6>V^wmUt_To^;CO%Wts2l- z*oMb2*LdTx13#pV+UwwZ{sj(GAwPaXOe>m|iCcNPI0@7U9WdaqYPDF;xL+>bqdmCG zl@oGkV3)R)Syj>b8?zb_b!>mty@P_4vbZfSWSh{XE?8 z%kBMh1MNGxcdjK0PkjarMAi*HSw^~%{DwLnpj?62XqbUekLmap4W|gTR zk5hipsFz5O(zbqRrm3aF31(JwcS9EyY&7)abhwL{tYT0xS=?CqcI_N%O?q>Hf;F{t zJN-{}Ghe9w4qd;fW!h1V4?k=fF$fqTMZpNYHiw#5g3IdVtLvgu%5(Zt(kwzSwj?XyLmp0=g}ea>8)w zA9Y{1^WNeCc7Z~TkF#xMLxY?1`BAOj<@l)jK!MoOq+X7-tbTTDnceL=m#fp(kxEyi18${_ zd4B_rH1BsKjK59rpw}@4DEw=gpAas3Zx7i{w)?&gg71L^; zo=E{*lg6+OzsRd)_=4aw}GJ8BGbnkvz?0kx$)unq;0#ca&u z2;UX|GiZi}d~q_)X`(v7!oiqdIc;ooXh{DD`eMuey0*z5GxSdB0cpB&>A6WxW9JQ> zI*6_98)<%wWdp^JI->eZ%*zwFq`cs8*b;rCYlKs%mjQ29l{v=dYQpxjzTr~$5!c>p zJ%Y3NmNmnrUgjr$(v@U;d9Myj9kcI}apcIPYBw=$W6c4mxGYwLudu~#2MMhU_mJOc z6pBW!B0lZr@dVw#9Oub=cCIBe>^bK8arU=2-iE!sbpG`9ftr~0cg}vzEsX^z> z%{8-*D33(+3T_*>RmnG6&_l6*#q)+8gnQ2=3COEL>p0iBX}fDB=7X6{j$`Vmlj${&bG^w)-wO8q^4fGN zEs`WKa}?u~Y@)G#XHEHiGVH=8n%O3axGkV`4bjlb+A%!HQCG6zz*12D!Oq)Fblk`S zzMKa1H}6&088oK;F%}m3C1(syjyCexHGLgS@YfmFct>x>ByUg8S;YJ&3%fSTnLa+A zrb5e^+NvT>$>1xY>Py3Al0LATFD43;F9VfLAP-;wWPF$O^~}u{3*t8}z8cR}P2enL~WFRb!Ca0Ph_ z)q`vO9%R#9Gn|{u@AVDL%j|B85->?@iU&THWoDZsnz+Z1qLaD6W*x};Z9Ua_*f7j) z$i>5~E-galT1xWmK+zTd{odHz;qv4xKhbe*Q5VV=iR*MUoi>qGY24q5#L~e*B5SVf zrD9iBjZCgid2Q#j*_RC>8q4FQ{rV?5nYCUy&y!Y^jA0ePCV{22=JQg_1)X?<;AlJYwO8Z9t&i8X>l|Xo z#n?h8#S#Xm_IL44f~>7No}s(rZ3)0^rDvjCTpTLFD}nJ7vkQ$D)2huVT}VrtH?9?5 zE}ASFZ_bWSp2xL|qgFzr%cBB96F2J)YIOyZvOlA;II?5=E|hr7w^?GgQIazj$q7B0 z+xz4!WZ1-k8Bq$eI&>{&7GIvMJFye!`eaWmx>;6bZKjkbUD}Jg5g{gMbEDowDfAX< z+b7A7-hI`pX`8(0n*rk+@~gZ(+vvwwgh=4xixI_IOM@0wwqwA%?Tf`3FAQ&1#Zfuh zY=ZD{$_%s(J`e>`p63iSasdC+N*nkhSp)LFKE)47J4@Z#%*^b$t=wH;m`DkIfZ@Y0 z=Kv5)0LXeGZRP(6l&t?@ocJqHQg<*m%cO)(%3$r$P}aH&ywD-1N)w%C{5}PmvX%uR zd}DVsAD1qh=dW&v8osnLko&b1xQqXqKo}?y&{3=dVLEXXlTo2w=uDQK0E|>HsO3(c z1Q&l9EB?BT9$Cv)?$;FXI3apuYS83(G9(!;?@b_`Jp+BV7ek{LhWAi>b?|s!Qyla5 zXl=K5smQOw%#m8Cq;2cX^xuwQAlILQ?!a`&ji$FPU#gT``C8!YK_S3Qu^4jt>~Ws- zo2Q@l;a)4>1@Ts#I?XF;U`XKJ%o4-bs#VFMLZK;w@t2Nf2q@9LrEG(;o!qa;=xF<> zsqtgbuWLSG{<;wl*l_|Vyqv#&bjANTJK}*h338Q(BeVO5)dVCWnEnx2{*RSMo64u} z0%Hn(e<_YyR9uKF*{bwEt@_{D2dKOMc)R}d0WeU5B=XU_4X*!75{62FCjHXMAQ0f5 zWV!@lpl71V0k)GTnf{~$C(vt1qjU04I?8S{rTdE73gDYv(cooF4o%k$NWEK|?gtX|~I)1BJ+N8Jyy&dzLwKE=Izy7T<= z;kW(Djjf-M)37(|TfbMduJ{Bnpg&YrqI!vF8-w2R((QJ*rb6kT%%4mD`q+4@%Cd`^9_yLhJ_w<}yzr1xl z=_%xFL5QGlL}HNOw~DjJMBfTL<++&s6Ovc2wD0bIaEncq?36Fdw-1MIjLmr$9%??A zt#n!4C6Rs5KOtxG*9>Z>qUjC|fE)c9LsZy0mc~Pq{u|C@`VT2xDhmxJxQ53$)#LQU z;j3w;j}y`AHwFF-v!#B?el>_1a^_uFR?yQBS?x}L1Uj?onOzIf&?zh6BF9Tv&_Zp| z!3MWui1vfMM5U#qZdWpwBXo%l(+iSLk}nN%HS7JMZCcJ72>IG)3#Z_Z8Y>4k5@@Dd z8`p~TM@+AbMD!LWRR%<0mv+tl3-fXMOy)U+p)H58zK$W51D8L)NXBVv>ZmQZEG^@c z<7K^&RcSGv!5%huHEwHAdz_MZ;q)fX+C#xc9k99-QQbP8w`t2}Jh8QIOKV*oSQq_XF6MHe#|iS+w9Mvu z)%MAysz4BdV0L>~#WUPu;fhk9cX@#{i}4rTRzKHF2cJmm*uwoZW6^?ouQBy6F z8O_G43iHy3m`aIk?Cc#(Wdn+QQm-vM%{j0UAt>!-w#MqGe zZFx(q(*}%u-n!0I9jmpB`q4plTpJh2z$bZk*j9$I3nkgD;Fl3$$aD+rVa!Hg7E&O0 z<1BHsXrwp3p%Xi5)fR?avqm*KrFeT=G&9r_FKV@uL}p67TzaZTp?y-)Fy$uG_9Vn* zBOs)mmuHs?;dvyYg_{>`MvKS9?g`TXH*ypS1*4 zHB1p()btHa&+j_K=j_#7tIw9v?KV<$l)8{U@g%aRECzkUJaoj5S@E2vPZw-dIq#vL zwTI_kY#=xNP`0xWjJ4(tLP=%y@e-zZ_kBcde^S1#Tgu}I{}hWxaSzRio=z+uOq^rBu1~iVjH#r+(Ml@A5o;NiIZ@teg9m(QNcg?c6nh=4j z1WrE?pzdL=ovD0T!z@M~@)vQ9>5?3Tf#2SM-%!;_KQuq1*xaItGv~Dh3)yEKos-OJ zW3%78P&GN?Bt{>hCjlQJj_b8Kcktm~-cKarH`_@l?zzaYU8uKSbaT`0nIGLK8JD6pKYLs~q?<=l4yblK{vhxw zuk0T0`OBmeK)?Z`lBs;IHSa-@z^k04%O7!7y`Zn!7TDwTa+-yD=9Ll}fM`~tztd`5 zuTOB zXpRJL3qBo4kG0JkV###|0z^{WdeQtHqy%9il-YK6W+BkvM>$=8@2Xd! zQi-wFQZ`w!B|XJ^Tnp~y?&O=rw-ZIYO=8e_tXHiESYo)(exLuGIY--mRY(kO@Hw;? zu*EFxe{XS&l$Ri6xL(jH7QM8WFpbWU)${P?_-t99EQTOw^?xYzIzO!TU^B2wm!o@| zLu^GDYmmCGJ)$!P6TEzI|Eu4%jVlv(jIwuf24q{ukq+G^$9FnASyaF1plR=rEnW{v zBE7GAv<3f!#6K)($eV^aaC`Of5yd^5`pLn-)BY#q>pX*ta|lLgAG+AHUn02r#cKTW zAv&1xjWesvd(P%dlK|!d39fr_@0o%(pO|FL_#y?-kt1zFgM-t9rb}k^*uO=*u{!YV^%s_S*v_}NkiTH(HgrBtt%S-eT+~7 zpz8Z_(*-19fAq!_CX))Mf;-yhydC#+0P9k0M*_)ah?tPNa*$ltXe?DzlUk>n&ri#Q zYl>xwy}bQ!@zv~&(%GBD)YqV!DUM=SMrm$Uu+*VOamq8sn1w#qqC0UH{C|RUdyE+c zIf6k2ASMK`O#dzE|39!Sq)*{b3N!_ON8?1?FOdwS^2<>h!l{jw1)KG)53+G$XVqqS z#soFBE3CCMe=ViTS^f`L7J$}YJyRz!uZw@FBAz~dggcKgXzpK+bN08$)4!$^y>$wK z3UXo3ey2opz+_-IC4Q38bvWf#pz*HhtD{v^|IGLw`E`3l%~`#okv|D~nJ#H1o}iOE z(fP=}7MF=R7k2FWap_Nxwv*$d${u*c$p0VvMeyz9_MUbF7 z0@eV4Q;HElIqzTg-$B28$&OSosB+}hPf%6>m`xAl9F8Uwzy^T#Kb+Pn`~EdfE-#<* zwd^Y%iCwbiF}L%u`}G9=wcuZ~BOUltyry63<52PG30wyMy6S&@M*Wua=*j-wft-B7 zbm^DCB3Kb*D+k_n@Deecu$5y1dLsYOypVU414SO-R0aw>KpKOA&Q^i?ojT1U7Iq!R zIGW;18Xz-)veTeIS9WdsOpuxAm1z(jar|(bOndyiNF**pcoY+!lPJo>Bk-{zQZY14 z^fLQA$AambdYuY1LNYhu`))>T_7$SP_A}Px#kDM!x;+=@kNnqTD8sI;{QQx^1e345 zu)5gfaM3nVH5!=rn?uZx_e&Ps&WAeDEDM@a9R6C`WU~$-AzGTYi3aE9!|Zl3<8_3- zC%3X0Nx;IT!&zK4ZGla&*|E6EsQ^_N)$cmltZL_=+v-!=YYppGtZMLW-1Fwi{wz+g zh`QLed+*)s`f&bkiPy}q5e5Z(F&lKgqUi`~{h>{X5sya%BlkO^Huf2~O;$BBKhd9w z(Uiv-dpy5a`$+pF!|xguZxl-}q1`UJ`EqvGf2b7zZl4g3+G^DXN%MYU;I2}@BQHk=pzVXWN&ft(7>XnUEYdOF`tgu}|k zH+w1oYMYm^P7A4mw{8(mjlHd)r4BhRN9B3E==OQq;|yFU6^_&2yVOmqe$qyZ?T=lv z)+Nd8>>UKcr+R1d`{=OKjA!{5RIho}p%*X7ey_I2>)@=AnscMRRLziNJt?(lkL7r1 zaom)mI#)v0K&I$D8-f~lK?p@^l(BB3SU-APZ=iTN7n2cs6_R9R@T zxj%Y!Lv0tJo-`}sitn-Glw)hjh2AW>@GxH(mn$5Wl!M#M1&rR5uf&^BJ`7L9*N_|F zc`cOG%_q0L-=ul%-P0B|bhDAx5zW9)i?{*o%6Ce;uEp?l=GK&EOsg!4 z1KoeD?HEcnq7z#eE14(J>ApVM32k!*UcQIV5_gQ+hcv5v>efB{F+SWbrfm|gmJJD9 z*SgF2D)L2I!+r@9($bCy2}El{X`hpQWkeM;XlWx}9PFBRmJ6)ZI%m%&eL z%ndDd>Wm7I7*W>KQ(zsOGkqxhxV!LFH;r^KVkY_p?UU{Jq27^LCbc?0|61&iADamC zF42Kj{O8&w!_<^RHX|S*kg97m-cRVjx9*8qxQK=K=pqtQXFUtEwpX08KluJ(5%^`c zu&KGE0s7kYA<}O&;qG|U&bl*uQtpo9Sc%&m z3n`&AyO}i7+O9K;@h~032|F{E>&o{3|J%YxG>( z{f*xUXEeM&9TsNt`?%z&=Cpgc(<)Hc>yfgkG9?a+p?8)f+el*~I1q;pvNj0jy+15L$i!aIyxA?QPaJV+_gL&>JqKj-`{g%Rc4nOJ zM-LAeX;c8!k2%s6MIk6Vji0_qEhv zn~Q_L%o`v#&9KYnaxFf)zQ1y8KDVQLq2HbfMt1J=EWnG^nen|y ziE}hiz37p?I<%=x?Fw{Ib+KR|!frMi0WBg8j+#n5m)~~SgU-#at;^C2#_!z*T@H?6 zI8cM5G&uyAGfUVGHo_e}S0OL4aDp4hS8TMuVdP8YIBx z(TKOItwPdssy`jtEKb+wlQsas%!3(hD*qv$W3 zNI~w*0D7@{wbVOs*2d8681=sU?CX7R_k#EA(Nc)cTPFavD8m+<02a2^kGll4$P~ci zouD-EU!v2ytaXBs?t~n*g4{zYMeCFD>Zk8!Dq2eegWMpE7&-Y9z@}J%YH~|0LgI*t z1F#zq#^>9O>hl)$#F6SdrVx?k6sp4}zBgIlJW4|-cjTu=!TDO*U z1iP0vidG@0^rQXYq6(VwjT*&fVROLwG%4e1;ul}^1K;FlR}6gvi6cJ6 zc($;ChuEoHwK0BSP?R*?PqSUzg11&XylD#La1m469vdq5i}M+EZ_sW>eK7vo2WvAS z8#!ffe;|hhw+UT%weA&1cl?Ag9qt?b$)3jwa2h!cq+IuBx=)u>A>VY6+M4Q8v{WKg z^dcG}^zlmTPogxvKd&aU8d?N$Ettg%Pi(5C#^>$j(+a^z?$agodX=gzVz`O@otk{c zTv3C<5zOs_+T?MvtmbxpwzkLYmHCTj5qA>p)Kso{4GO_Yv`(^8^c#75wcnNumcrb9 zeBI+K%Qk#Tsj+)3+%Mg=r=Z%Tt?YO|nE*_NV?bZ~+J%&LY7ZeD!0)C<{izQ)-i>++ z%109&>yuXWTySb`toot;+MM@_`wK^=LoomB`H}qQjemDna>%!)MV`&wd&bB1Ed}T>#%XVf= z%XiYxM*@xCfTjy}UBgWcKD2p0l{Fx~u(dBiE@MWNRc$(qv2G{K_K8$B8#kfd@<&)$ zQc^GWHTZVh-??27SgF=h<%3z8CN285t+2#!(o zE^K_R62n)o>2eID`==#U0;W?(k09s4!wK}8)}Ijk0D9Rd+T~)dOL9Ry37^I`H`I;p zfJh6d#0)&%_u7k}DyJWG-M1d&TJW!`AHf5Ut*uhhVhGB0q*@ijRWjwpOEQF0Y38Ztaoa)^>n6x#H1Fpzi1 z_FI4np6YSmuqhE8P17F$`g|G9qldWh5vE9v-yL`nJ&`3HT1yzDjkn^ZLzf4hx}06o z1uzvepE8NA>XA3?Z#tq)28ZgEHxbV()(`%ed9bLf={|8~Hvi`M?U0R@# zTWwpfF@MwUpADJ?lCZP@rRJXy+m)V>ZIpGDPp&;~(<(DCmC0_r(5AbXVS`szG=8hn zB0g|FYJ1URiA}RQ({zV#ta8JCDtgyu$EN&Z3Kv(25Eznh#Pcexri=2SjVOBXzidSx zBL}?b6+toVk@{tI1$72s1VF`UW=3}jdHmh(UJQu^XI7r<^JS*4I{$fxlQohYW>Yn~ zOj_B*_jh?FqnJL9ffgpX$IjR(gKtjuB9qI*kv+aVbL6PmkG{F@#M^WFJ9IomKO_xI zxKvLH+0ncn*-X+cX?`tjH#t7ERo9!5Y1po@CZSqE&XVx0#LPyS%6{tFXsu*M-%4w` zJ)*VhZqb1dHA<-#^JVD4^4pt~sB~GEzt2z(1#(`Y9;DF7*JKSLp$Ory{>VQ{_(O(I z191}mFU8$?XKDL$y6;ED#h^Sw^{kB@cnH89P9QE0I23SZS+h8B&|c_-H8zHNg!6*- zE;Cf{ZVAa7v>-|P%aTm2cVJwTcbXEt%TYjp*y*tqYS%>>oxeQD>M~QTQ{cA!IIYSH z;U^ovjYjO8e{hf(!OnwVmb1;UQ|Z zudUH_C|5<9pYLy|?x}Ok07O5}h-YnZf^yE(1xLt9>A~ho15ZsGi{<4}S zso6~2zg60$t}H|)%w7SWIqu1+nv#~6#?$lB?+OUW+OU9JDp)Gc7;0{OtOjys04D|IC8y*b}C`IV~W&n zwXB!x>Cpz$Yp6Uda@xA;jr3!#t(_DYbC0TgY#FuiaD^ccPrQ5>lwMJgh)E@0t&c09 z)F2czp5w-49&abipo8`WWr-sy;jC|_y%GkN^I68OIJk&f`)_8c$~OB%vsy`u<&Oft zb=p3}V%ltJK%&hdm%*}ujT60sMvu-<$PMD?&L3TKf|?<&C}rnsSsFR+r66Ce3FL$U zk=hN#nPaW5E8~%B?m?{5&SS-q#vWD%u;0Q?Wo+PCvg7UI163bv*%`$a6fKw4!(r_z zM%5Mrg+tldfeF0}yTKRq2uPiSuw5~PO_tOcW_TTc-?RN%@?pXVF=A?c&1S%Ex}bh7 z5xKCqrnz_^m|=47R*q5>Zrgqaupo^b{i+Spyj3ta381^68HTC!#SC?CT$CUV*CTAU zuVr=h`w_GFRyK<)x4KpaWR(K3y=(eXmG&Piuli(ThlCAYL`=hYwJkbZSsowK)pKk~ z0Bbhj4hpgz4|s(^qVwGAoR%Q?O8>Nz-Ea4>Y>OpgZK8MqB)P$^Kqm7`23S5Q4t zd`0o(p$w3)qoM4B&`}Owk4Bx2p0f3S52_qg-oj;bxH;J)94_2L1j3*Oul5V{kN z&yTn+$LIhf0s!Ub_JFESrTC6Uhf1S}={Xg>;`7tMu||V|DxF5l_PM>3fmJ6>rUGy~ z3$>@tz-m;$^#SACFtl6QL(eKlE5RV56*yqvFk-a7g&z}RyC0r+y4yCVDyJ&_raH#?id zFV8OD=|&Gu6@KZUDFotkY(~`yXUDQOs!6Zxl5d2 zK*RmrP5{)s!7U}2wmMSmnwMXq@E(_)U9<=?yN(4RWS)D4r(9>(+HBMfl?1(GTdg>s z&fW4u#8qNN`!e!Vq?UvH8;90qdE7T4V|x0Ni!^|U0I;!;>WvfXSGB1`uF!p>Ik7}9 z`bu7_`xCOhb2;PlO8E$5t6gl=3@Px7Ma=;^+E<6~a&Cvko(6lnCECLZ+&MsePRjv*z$g4VuazfgSN2_H zYC?{TP}Q7Tdh^WGokY(`Z?7&lgT%w>1?ZTcF>$GIM{Ox{#as(eZ0 zsJ_$%AE_io=afwonNYO7giz{AkFLk23{~5Yp=I>6SPFt8dfd6pJINGLZA;EyfM#J! zy&7_?i+iRERI4T({e_mihvVHwo!i8m+C_TU?x!VA2eMo3Oz#fQ*3zF;rVm}D2XOd} z4kyD^CS__3JvzWV);M8#5_zf%bYl9LYF3rl5NrGlFLcQw2&)>#4%k5*b3vaUYidBg zH!@3F)Zds*rBH*Qfbmk?NweK`CV3umO)yKcKFDiq!#by>-;J)3dC8+-WXF|Nt^37{&6rG}y_C<0d+p*{T#&1vHE%__&4U909 z=dBR9cni4UlK1$>`1J zw%&SjwUnKHvu*T-kA*QWXn}O5;A-pksXY6#It#(#Sw8o5gvc5~FgeH4^IB85_jHLy zWS#O1DLYMK($5>wflMs}^ozD5`h|OW4H0&>DLy}=j*CU0ilf+Q(^a!=50SR1!RIeguFQ3ru zVHLd$R~K7C!!kOKHGLm(ygL<|z*Px)17$XQOJwTLdYW=h6fNc#Il%U0WP{eyc*Xb- zJ&8bjZ)}W(Omm<~+-D4zNQ{gF!hXik2p{vpX@8EMVHU~c_dAE^W}2T62S<0O6$51M z>uz*#;HpdJf!cJAm4#?RrF{Sv%2Ja`mgsUXiD?_GXM32FM)1NrT3lRJ+o-#Sx;>po z|PZw5+$~zpIMZ7829aA8yNP zdRmK5iSHMIHVJ0moh6#ZR+BLiT(-TfrMyfE?&utF?9 zKdR=OKLXznlvCq_5LZDz&Hz5yI*p6w2-qstXOPN#?Gy zHZ1{?3bLzJ`E-QEN?Q5NC6J8gz#h67nA|=Lqu^ruYcu+Q%wcKQZUyvF-`G933w;BU z0~CXeJm%CU;vJdxKHxd&r#S=cVY15d_RKBHn6jp|08MLLh!8iFH4Rk-b&_U5$H#S9 z<|B^|w0or_-I%3|rpq>k8nY1>L!(u>Nd>XXDF4N>a(etTDC^BMBk7fSPsiEwZB=yw zY9F$4rtodB&{Zs9*QsQx>?b6@O3**ryR4bjw%?FD2{eD+*n$W29)Q^9B*C_Hgd(NW zBvGq5_ojJ;#mjzMzr~shR>t~dojB!-^u!J?mNVX|ZmUx*n4}}cQX2p{=`CE<>ejNh2ee*9w{2FXP zC{~XUVQ`|1=b<-q-X6^$VIh>u*O}Mf@&Ua3^w&-ZBqVd|I0c;ko!O&BWrekY))90B zxKZ9t?ynnC;3FmVOTnN=aQT>2H$Y2A!n0Hm0H{tr2ax!0jUF>90q|n$A8JZ;#g~ch z7ZMd`rz&CH)e_ep9X-HrA4OSO!h(+Gl&2?ZO7|wd^A*saO{7%vkC+tnW&kvwNW6Pe z?vnDK>L(%KH}I|jMF>_w`_g3%4SBh{C~bLNJ~VRP+~ED6@BebX0Pr3HaRS)=7wCgf zQks-qlryTkz#v49vIQ(GPoDl|DRLTgnF0Y?I|%jPL0hV>O0K%?O}+=J;?+7Eu&GyGuaY_pUY|W4s0WYx3HP@01=y zw90d+vtxL|k4ef$w3>s~%1C*PBrXHAHCVp`GB}|$6*^X0_P;YaD!jO&t%#-3(o%SF z{%+2nOf=?jns?{vwG={Va$Yd?-Mwurs%3o1UW6w9L_ln2<#4KKw-G{A876{P6}&`TbC0W6=$}fhHLC4M#Y|a9#T5_^YzO-4q(=KUh))}X<0mCEtln?> z9iA?5>|V;7Zq!>fG#!~tByJV&?Q6${RIBcK>$0pYL_;w@6n*VWOmymfhZmzl$5`Sl zrhR|!VHx+J&~&c@vx+O)pXneXmzKaxordb+-PDt+H!i8u%Bj+*>v)_{@Elr(E^b{F zLmI_5R18@b7%@7G8Fu;gl={=22cEe+piO{_`>OSHm9wUZ_ElUHEz9Ly?!3)@nR|1r zvUy%t(|t_XSnBo6vi)@GcN$?~aG!<3nFE2z4;oDI4^rA_mH+`y#LFcrsyuCOi>Gsg zXVsg#zrY`Lh+5jR$^Nir+3>!Wk(S=Qlvn*zPD{!4kUTj1N0CkL_be<$3uJX)@61ZR zp$O&+274hR)`KQ*+6*2IS#>~FEVCZq4x^ij4+foeQrgXvwJn}cR;P0r2ZmvhNopu> zF=uxBbdJ-xj1l&jTSL!rt84XU3tR8^Prdh7Zg_kkQ!^!&Y@!qyIfGo45VCA$gx!Jr z>bROWFxlNF2haDG?)mV(A<7eQO;V3%=R*7fj!!tY*Tz*MK}EkuHQ?$Gd7RmEL@y@4 z8h9!;dFPm08QAD(Us8qBw>PLy%RGY<(i;*1T_O}PZ-2wJ@LXRLUsm$Qk;`i08$`a3 zIuT;rg{8=r<&mBr5PnwZy~ zm60$c9$;oIcQ8vMx{H1-a~;ac3Xg!aI2TX^P$x?&*hK{AyT~1E3ms)qH z9K8(N5y;ZXii0}UnZ3ZIWdC>~oljw`fT4oj1DtnTmih11{~vYl9na?e|Ba_TJw4s3 zN{gbUs9i$U*4AhVsoJBo6t!z_x~<}`@j2lzaM=h*Y&=VD^YRf{d~Qi!)Lb2Kp$oUy{YC^60puDM)nwQk|wc0q1C)M z+KBplerrx$g~%K(_E*tK_>|l#Q`A^q)d`=bRR?7YgY=(}ut-6ImGhiiN1!p&%=wuf z-n8|O0W>-VBd1tfJl=7AG&vl67m)s6D2( zb*mq=IwH2v-Pxy;MLMlHP(x8a!KOOSA>#9%9_9L0Ky%g#yV>I7cg+h`{TJ74aD6we z?xZ>0ulTU+XI+R@tmE(@hv{Wv$eeCLstSkd7Ag^)8Gy^d8XLWq8!w78hs_C{DLx^Y-nG6Qu@|#R z3#mnUOd5?Fy9VobN;DuzGrVh!ezI*KGBe6ucS z+>f@wf+ONr6arm*Q=I%gM(TqC1q5UwB4WTFOrkE%u12PvwVCD2USgYhn|V~i6o$?-vj~HPMqrQv!l6bDkDIVv)fiO+JBcQ7iFXq|GSI+7Yv7Z@Zwdf`(KD~8Q*Gd? z|6>D5sMo{)GV99{CIA=c&6TtrU2P-Ur-*96l+ybNF=gA-tk+PaM6Mo7b!Bo;jm=gj z7vK7C@GYD`RXDw{&6q1ic;6H;ADWYl`?xy_+`e#5Gaz%IH!m3eIY%+YWq)ivf%H`% z<=bZY%1*w2SqM7JT^ukFHiV){%GdU2bwQ8!pkEL_A!%LCz0mTcCHO;bV$fqi3UyNqzA~S-ahx=i;UeWhRY^|ab}T8Ha|y*xeg^7gr)=Vzx#6+mFiOoI zC3*U?qQtj#ChOZHy`uJ>^6KtRlH4Le@%yH`rEA11pN5vr3sS`IxCIwYT^PcLUR+|x zmY0&eQ+k}R2AvjJ{|yGaZ=mQ2~9{FFX6M)_U{y z?hNUQbGlsg+r1FExRusiMj7cXx3SzAhPM~HRotZo2MemT%^HrlUPsB2mFEMdGI@S` zII4(>)sRJVOi?qHX4W-fbQ=X8`?XlY;w`TsMN@yJ>~**xGtULjZ)&>7Dq`bZcx>+N z4W|b$YLP1M@F#>PkBu4-9I>`0QojZ)rET#xRyc1MBd6 z-aV&+d<|%l%eCq07My)Zv7q5qfBW*Z`jlWm#yJ7)ci#1rz`rdDHCXZ1#XqRYnexJ* zCXMniF(&IILN8|kGGaDV*FWUss4LxFvG@Y> z^Z+_t7H^^4gJ`?~HPN#wv65a$&s&2B_PV{BKV{;0X~K|M71X5Tm{kwOnF4AEU`-!A z`uwlu;W-8h0D*=E;O@y^Q-{uJ*y9-cU>ss)tRoNctDT3i392`7KvWsCK)c8a)h!m@vN$s%MLQ=Ssy)B zeUWSMf%y@~m0v-iiAJLXbM6PtTXDJPIbUmhU^|j9YWCLr1%D;LBy&<-+Ni9Xvgi2R z<^A6M=!VzAIC@ywu3pf)aNm(b9k5^uReuG~)_DC?J>1}-YWUF+W`=Oyot{EVm!YX?Y1b$Ip5aLBR4TF>taJWoD+BKh#e+~blM zty16^)bSGcW%?(?z&H|+9uz2Z&Fe>#=CtWuHR-cXEd4oS^YHSZI=uBr+r}5%lGBFM zei2-JkuP`I2O;;a)+%ebq5|DO7$2Spxl>$i9iX2ln;Ifd{NWi|>z;_bBq!iiR5t+A z2`RKvF#Z;lZv8aY#|Lk)U7=j}DsOk+C?y_fajM69ahnLB;7{N;vwjR@Nb0vt(*UjH zy3tkR+I_Roq9NeCx0bl#I)tgrx|OU;Fq;j( zni5+UyIJEtO7vT$!+iWbGzW@%x$(47F)2~wW!lb%Ro4iR&K|UXzDH2f)uXq*y8`RF zg}UMIKvjy>k?*c~#d57%ju`Mcf-f}-7#>TtVeVco_;yDM)Q2U78|l2In4OA=3tfK1 zL_v(jB*h{y@X5eh3@6^Um}87sO==dQ#DJB%^hTq0{gP|kyItzH=`4~lh@0f**~T_m z9*Y)lq@@bXueqUOh69RXnH1~R2Z@8x!Px6-QEn&7moLQ_Pi>WMKk|DpZqq=cmGRqfMEX;TxI!-?;f-M zPJf*-&Iuob5b5&64h#pf%5lXe*)UyD6Hs{$0kEHCDYq9!E0(s$a;-Q3E{r(DX)?;>Rz36W9{B!^cs?e8wq>k<$e zp77=lN3zuk|7Xp~?o&z4icrGDRM4KeLeA`_)wjuODQhc!wK9fb(z-08F)%*Y1$&H= z*7T_~!MbQb&Na82SpY6k3kdJkAkG1S5LR@vG_7D0U&q5@-X$n#6%$=POYQ8O^+~_f zn{~fpX~DTh_a_9${<65QMmd3n51w)0Y)kle7&BEJa;uSGyJ{GA>qrXBHw?) zsT$05_7VmHre&z-W!<>xPxdl?1HO zB()ECE81{LWMl>el7~2)a&C6y^;ySImC5$IvP}+16jmj%a?Hl8jP6R}(X9>|3VHR` zKCF0!Y@N65ZOFCnrs}Z^6qYOOn;q~YKd6t=`#}FpsW*GGCy1Z4D(8dT%N&+Hd8*>v)%c@7o!KQsV;8wEpL|t;AF`&=CY1u z4`oPo3@iA7-K|udEX~ld-X}NN9%FMn^pl0AQ2AtKIy7kjp5o9-yS{h>6xU_bA z8HL`NSR{pzWre5)YItYs{k!cG7=mR{d&oMg4zw3GBJsPjb9Dgko(S15ZzD^B1=oVc zT5R&sJ!%(YOOtf+mr1a#u~j9vwS1M*eIxti%KhYezA?CL*_6biFG1fclf>&*&wrVm zm*ZNzP~C*xi&@-W>frmraZoEDhf0O7HM#&e8l@f6=%_xmX`HDZSefXE8)* zBfBN2v|kzykX3T%-s5jsYYvuW-POSJf2Md`91TjKt7laZ+`RV8>bOI7YyLnwxhTf3 zQN>$Ov*n)MI|{-RDBu0Q5O_ONTGZ^1^e5NtoW+?O19WB*R=Z<-o{g95pyA6{i&Wwj zlN~cSwIRkHOAJ|j`ZMb=d2#;z3>bK-;YQF9HeTV6o zt$q^E^agXId+KjoWutz<=}KWdrP($VT8Ty+GdEOe75FwPVU)%<)hS8NDw>Ofc4P6%WmV6_eikrgw$ApK9fSlmzJ@D zKo7Oi78OgF5wdV}*XF|}N3=e}9+FTRIBL}yitg`kn~_!n_K=$K&Y@y@Olky7O~bh) zpqcEJYqkE=_EjV``cCRs>Bh{4)c2%wNz$O6m74vzEn}}27Vx5NZGMb0Ub~|BFi_>! zWKtpDzT+O&Dyv+Hm>)-8m?(#r!KJqaXP6@Lp5A~ak-6K0mI=L=>U!I;>K{6}&BBkq_Myp#?-rOunZUu(T zC_#y+vl_%C@~3NI**LxYi;Mk;ZEP7ZqK=l}ir?pPDz@|R^&tDXYH&NuCO&JiFPNNO zHp}OZF_{Znn%F{qzIB!TJP0#C^7~tL2C)V>n#5&*RU8=qyZrMwhD*u8!4C|C0Xc}Q zJMDEVH_edsuOo-p4L%&C)BPI(=mR{k_5YmvHx4KndZl(bgK;KM&d&fyKyMH%;Qw+3 zIfy+6Tzbg+19s8X{{=)`>pli9e~iJvA)-Lb&$ah_e|5e7*xzP~|BI9V@Ui#P@18?G ziKzYyI^=$m9mx%U2@D;1o-IvDDEZvEHyPhd|I=F#Wf=E^!61p9JbVqp_;h4mF1*c)VfY!LoHE(S)8Qg^B(OA_LAwt45uEB$JzT_H>q*+O^DUGMS@MTv0D&xjW-=8kuLE zZgG59XErc-qcJMYyx^u5@bYGQ;ht&2{=;IGw?3;Z)aB*5ApM_^Hzs?lB}>h2KPGEI zC9I+R1|FsGP$621NAmq<+@g7EsE?1~bUJ<ma;bA|}aH5`7L6A^iwplmT9@gh54Z^pj z@35{!L~h+-{Vpke%2-|X!rkjk!WYpWPU+urw|i{FeqQYqD};RHyOF@JYUdsqshe4D z7Q-qRrCVY;0j)N>v2l)tWx)gy(R|KY_?@8V^g;$o5*0h;`)l{~ggObB{n)8K|nMpr*GpBUb91614)L zsrj(XlIu~Y?shr8k`jRqL~bM!;Omr5tNr);I#hsEz*44yvL`j80s<6vkJ@ag>}c^+ zZ#C^>{UoNFLHK)?Z*gxE&rWja5&zjBl`furfyJK?v*PLUts8+{F0%#qM9z3b-?`TH z3s|(bMNTQby5IJ#;6z&_L8_otm>0{N$&|4tG0TN~@N9>uTOBiefzA0wj39sAT9K;Hb?25K_Dhdvzx+xfrp!t($V0norfSE3?mUps zg6Qgr7~;V0ZawEl6)d{+l~mNJR_Sk7OA9a=Qjve=iMCd?$}sh=F=;MtZ{%-^$B&g2 zxmtNz_+uNLEtVlIvEav!JFL`oC6=m4ArN^vRaq*0K1PKkWv1q-MjO1DJu@qe4>T(tKHpbX1&}S@ti?WqGoV+5Aaepi@p4O$FnK zIz>eL$gK+V)Oc2uqTeXUN3^fz8(0$v>mh1R>9lMMD98$&f z7w{@WNKI*<`aD0*SJU51heYC7l8Th7c2qpl!zYl1O3W7nFO09|+rOJrw$JvQNTPTv z6P7vUVe}9Qo5HnlB*nUH(rd3E*b4q)wVnxT7(unL;fX}{$Hsw=m$4TzHV&A=-5AI} zzAH1ofDu|D^bFOn-Izn~J(}F?fZD_>$*0K3S#mnO;wp4T#voEiTp}z*h%tU^zP>FB zZM30{UQr~kJziPZS}w?ZX>a~6nwB}2-UFdIb?Jv|QNo;8l zY8uKXgLSA+`bk%f1;i8jE%_u80==mA(Lr_FW3;_)xXmYrODr;K7VRB89)|%9nFw9lom(k%qqRIEjt(V1LDuQ z|NC^P{>^vPE4`^Vxadk9ObzaXIic#+O&nG&T2sYtePxqtg=NJlb=ba5j=D6ExRff1 z3Z7oulkY3ZcjVyTY#(>kfwDv!ETVjEpm3N5E9|jxSYqJr$Mv6(iTwQFa}yPu$;N_8 z-zf!HMa>5`Mdf&HbFI-KqY{*2T!Ch?a(j(*mpy^oFz;!FN1QC*Kn1bA(^%GWX0C4^ z^+TmQD3PT<(*C4>QmiAeOA!Sb3W-bsa_$Z6TY1aeF_)VX*x32?7=8m+pBNlEYN!|Y z81%e982o<4P!D4A#FaHM4ey~aB z678yhcahS6$h%hYP8Ycm_)t^kkE#z<(iZOoiKH{@?}=s|po4?HxEL{+p15Ldm9{+r zxLj8?G7Z^mb8qt>Wpr@#Dib~?GUQ#2SsD< zohA1&&ku$d$?px+%pho?p}oq;m`o5H@~J01n8^N8PN!g_&D>t)+;-s9CChsA^<`cC zNw2v$0?aRK!-wc2@#PEqPe?qufDA3IT7oam$4-6?mLyKN4VH{Edro^#|_I}=)pW__K~!k70wlIRgTC5-=+ zTOzVJ5Ho9bq{)g$Xug;8Sv0btU5PVY)+it}I7Y;iODVMHlCsvWY16&U#HM?+RU;cK zC8fRPvEsm}`&}WIg0z*%+-??f(uD!y#4l}uvV8W^a7;)Vld%)in<(s$AyI!{cK1hL zV){MpaPA{bcYAuu(02WKQH7SP zoWZC519dz+wY;~PH>5q(^Xx`6Ckzd5B{|A2V*F>*_H(C0C6~_>8|9}J?e0{Lz&!Oh zah@cpz2;)fX85(^xl)+TUnaABqa>`{6&%%c=s^M(34V(`TdM;iO6km$_1gGYr-+VD zm|K*4?6Tn+Es!`9oQKva%A?8(o@sU1_EEM$cp2wNN&x|eRJ2rN8)-UMI7X)%6UauNy9ikvtHn z+=z(r#PXY=_vwnL;dK==n)^ceR-lTBzf5$HAioHOWd{=izhK)sXJ83_OPK;7;d>^` zsC{XVz#8QIL7#=km`57W_SP?;`XxuwjdND_KaZ6fj~Y9ftFNdBSJJo;eDsjSGro6{ zVj~iftcruU)cueOWn`nfOps`|pGb7lLd=kxtUmchVV={2^<>L<8Jrjgs}B&SmsF{zoR3$=^%;Ut>0J;f~p!XH>z#VDv0NG`A|~9UROs z`ZFKE96JLEoITI*p4S6g3?>s}07t%mS`CanfEw891L|R-ZubWF=hjuu{sWo1rT_L~ z{L4BqUlhW?Gmxu)GFl{!Y^l>dj)8%R|}3|E+4*|cT6kuSjN?|!vN#} zU?X)7GZtU1oZ#q~$o9C5p)CdD;9Uas1rV1$KbU}+od4@B9lU)YX*l%HPnK~&Bm=Mq z{1iZ`YVa#Vsqyc}(J}rkyj70-A4?6{wsics6^k;Mvd618vowe?@C`#v^4B=hrWrJS zN>>Z`5#P2sIg%hKQK};Bm%Jn?`*{-^Idba1!JvPh_J8%h`^dq^=ik1E?!VMAhwom_ z0IjaehaedM>|&1dsa-w|g6tro*D}F$Zsv{4kRu?VJN#O=uvT~%FNjHh`4t%3OJB~q zA6|GH6v&Q6X5AM4dNwOt3o0HNby!;~S~WWSm-}7Xw`I=qfkN5fDS~$R_vl-Z(z)NG zz>I3t+1#$ojBeG|*2cr5qSt1QwUtYC-_CrIA#+whY?`-GSg|mD>PCZa*|1CT_#n_3 zDGv+M+yFu#lCO_fJT#h(%o}ET=X0~z3`JwrGn&n`4nW&XhnmonR+FSX`TfS$mR5`@FF7nP=@u>i^+!uUgSdi1x_TNjDj8> z1$~xqftRJPz$Woo9?&Y$d$ac7mn8H;Fw`fcm{}(Alj?OeU*_U36SX0akB&IZT5=W1*(C z7uIZ?enL8HdTFDvd+jPO71xy|W|%-B+7}R6jn~YBlIP$Cwm`(l{J2B?mdR&Of{JYX zlf;V^ifj<#lOn)cPccMWuq<7Q&d}K7YRaOIf8i_dvKEV)pzbsQpvz|AG51+8bj`&e zzFND#6(2y+Sk&F4p%-CZ+B4iA2VC}yr(G)amMfird0G#d>f*jPr(mQ01GoB=mTwSwa3|BzSy+r8kf zkD6ra#`r@+;|cH;F=O|| zQmgn16>|XKWxlN~ny(ehG(Bpm9-fy|!Y$1&^|-_PB*ZUxniY1aO zJi?oEF*h_NG@YG;(n1BDyQ?Yx6G=zz66`MJ2c+(r5P$g8U4YSg6Ow9$mq~*rPECgnWv00f@P3!@s-Mx~I zd6B3jDwGrDzdKkPJ70fix&B4Bk|8Nrur&P+2y;k0{+SkOOPwrIQN+6?a@hs-BE79` zx3F>qImaMlr$`&rvlY+!5M<6|*-0dmm}~xr;66k{@q0d$kJ2w~L6q%#&9>!Y>AF_P z$POguV{Bws2#5=+omrPB@5_*A9p~E(*EP3Li9xL)e>fSBag0*yA~BTRIP*;fcxt__ z$BKs#BRk$IktnBxI{EhcAt%XowR)LLzV8tfb@zVw7P5MAnw|%pMfA2yQRYFqNUIKa% zesx4r$-O4ipJ!~i4NvHq>r!^y#UHO|35gx|+;Y0t^AqyCJ=m@iMS|YI`^9z+ga*2m zG2d7%y7E0s=&f}#MFzeE?@y0$n4d)KSMJGK#=%FN*EL=Ga)i3q5!YrRDsC7Ymjf<#|E-m`WIy_LgtQc*rxBe z^b9NqvCqhxm51@?mziONQO}Yl+%2){vjUN09QHxV(W6_sEaZ@LeleCprL$rm1U6S5 z@U^p%;L%~0+r%l-{#s2=6x};Y<;)}@Zmn5fZj7!?gvvQLzew8b3C=eRR+RDDORjfT zI!#=Qi;(ruRqW5q(!O|#rG4@0mmSOaxfo59R5Lqb z$lbWSs{97Brhra4PoyG!y*78OwBclNTl>>%o&iWs!%i{#EFPb_duwo&bOmI^;vEP2SA-HOCJXZjdd+JFG%%BdISfuDT zccbM!iP@}&&lG`J2)~yU-s~$T-LC)IEpbb8*4MDNV0$Vz;1w&1qSP_z?q1!DTq5p-3F=^=3-%u)uN8cQ9|-Jn{Ff&#QC-mO#-Yn(fq3cyn=+(LindP47Fs ztMYYs79Rmj19XABjgnH)P^ri%DN(Q?1tuCqTd};Qk(b*dCzJ|r?D4?8jU`C_wUkTy z!DUkxJC~{{tb17WB(aXChCi3u3NKNRv-VZ?`Iyt!L89TyS|sa~f*;WT7@d)LAnBi{ zf{~9DqF54@P<+h_d}20~{-+xXN1F8w-vtxWenQqY0}Iqmscg@Xz?EnZO6^&fxbKCR zAO*(0`Sxh<^c0M641e?XV}2VEUtLF9N4zjd4u=XHqD<2V2f|H3W`(w=*&ruLRb*-+|DMF&H8e$PCwag7D=-hszmJ&Y%ecGO@n!W&#O% z2IT$A6X7Qh3uhdI#PtgamxjO2ef~)bbNTuE$VlG9XG|69KIeOSRZ5=5MDre;?-K(Z zfK~wbUjWS_#`px5&y4#6*zk$(?!Ql2{^c&?asR_OtzO6jLSxVNHda&^E^GNc4iVkC zye#-8L}DS-Hc0bDh-e_wIX|W-?iNMO*TC~NzR?dJ#of^8$1=JU)2m>d^~*g;{yZr=TBb)Mi@Z7uYtFaUM91d z`fJV?34Z`)va5n2=UY=lR=pgJ49*uHUNU!a*j9oV5@2NiMk7OG^oRopCeg@bzF_qz zVl?w>bmPS=?NimN(ZZs)`P>g%XUb$oWkjnTkD9T9(R4qpt>y&?y1U(&vS%xAXs4P@ z_6o2^hdL$4L)RK=p2o8ezG*7}L69{zEe48X5xibB-435Lav(KDc%@S!rC8erw>)&< zLz3Mb&%zbYawbLcZA*YC3}(X_zLC*u&6|NkUF*u625=>V1K^hAD-jviFF#?P9xsRl z=8E5r3%7keCIUTHS#n+Y#D}sx$DssJykOC8oRO5IN?z6Fe3TUNj(^Qf&tFMnjp)#Q zac*iVAVf@|vcRWpEIhg?B+3{T$D?0uH@2@2kLq0Ptj7+m;6Jant8j4|BV!!m91`kj4$7}+u3HV%=`*5tx<}EC zF>^rgY59<5VuqEOz6aEIejbt2@@BfAMR_w-IEBDxlh{T(L9m@JQEZH6JQp(^254S4 zL@hRZ_F8x2j4{4=r=@2JC35*H625!dK|7OaLneUb1=B950fsS`0Y>^(keU4vprvo0 z{v;jAM_rQhWiN4AvPrGN4plCV7C7A~Lu)l^mfJlLN=6?W7VWjrgOLqJn9Hqb^{Q)i zXCkNTl4qP*!(%ufM;#3`uHKqd+*;hX)HWM7r+V#X+e)pO#^y6~)nX|(37a*R-Lu`R z8(72O0F+H;S~uSI=ACsa6+5_B{C=&XU?}Uy8u8;6w?{=zRa#Gtayo@_FJ)n+am!66 zeS0k0%`FRlp}p7pE~&K4Vw+T&v_qO5TCm`1D02#U!=|z{Hc;fB8>3r|>zl*J?W?+0 zm`Bs6JaI$zbyL2zgdj>`^Su-+0a!wcB^|K{bl?cTH{Rrj`iA=N+Qy(=`{iYhDF*82 zHO`ZmnVGA3W$!fGw(f*Y@O90b*HVi0{nI`_!DCy3k=oWR4{gRY?Si|Vc65S1Al*`$ zuS{F8W~=MV)x_1V;I(;D%$K&BeZ-kYJ8?`c&`LB~pZd8aE5h_XLVfra5s5hWnMKrnaZn zv06-|YXy7zYKkkQ7k^Pfv(9>vk~_w95ELB+OciP4X?pOw$K#7Ipbtm|Il`;K@D}@t z?N=WLS1%=uhHBSPpQKRWCweVgdlY%4!Ws%f4k`LKg18`{vWV}EZxO|ZI?3S}}StzW9kvB$f*M+~#n$qOi_ zF-^wsj0L$c(7p;DvUX8k_*Y2Pqu81PlRw-Me?{_Jb%Pi6>^Y042bFw6TK(Qs_b!h zO*w3tk7jVZ(Rl5zpfoubOMNsnj~#ZYrdUe6QWDfQ`aWLf^LLy?PE$bph1_J3cMfSw z+t9FyO1NQV)U&}!VHf#Vw)g5T_3a4Oz@x&f&MYbk{)7OS+#e<1R2=4Wy^05BLt;{D zpYY@W6`*Kq_cEhRBuKC&uOZdee>?Qet5-1P-MITqP;jNE8a!THZl@xf7zCg9l~4B+ zvNRf}6z|%kbB$d=mZgEBkOcE`4oXSPPGffa#d6i=dC zcgiJyn%{f`v10Ei_)toHMr>Q&!TYPcLPnKvitDpb;8>+Tf2;35A*lYJkXTeZBCQ;g zv^RjuT};j@Sw$y56q+`XNP=Bxy9jzPir*fkJ6!mUep5MPd^^zp;UXt;gi;E9T;Zx% z7Tb;svZ332*_NuRK{)Ojz%c>Cu?oMJrB?i?y0{7#^;WK0GxqGl1<%UfU8GgwzpS4* zg(%;5j+;c(jkzQq74-=x5w(Y}J`fu=P3py#27-9Kl2AzvYrd0z*u1l8dEK}^pO#uV z@2|p6>2Q#LxZ|fo&}UYV%fkpGrjx=ENfQlabT^@<#Y&eUoy03IpV^~*qus1d8c|8- z)(En>ICvzYnOo^YyLnqDD<#!t2DeMKAa*@J>?kr$OsY5f9~$yU-rl9^+&{l%epnBhg;zQl4rCcTm=%07DT6zlj6Icp(> zIep^OSf(f)AHFS-FUqK zck>^6?p<;=@5fd(8>2tCOx0@clIxZE`c<4}pw$AB%TlCKl)sY2en|P}ecrFduTo-9 zyJNXJDeb*Ad9&tSYh`%>?GpErhvNTkuN1aDzNuZNt_O_Qq9v~Z5CSj_)qBMYGx_eWsGA7I*)(Q2?SE2Om4dFpsEUC);p5E&S)F_yU?oxwTbpW zFY-&apA5ss!_lm<)YzO{5R!ZNB-Zi}Bz6Q73H?z$wohJeNHQENvld=M8S( zw*~T>vrq1yJ+2pb`xb=Fl>N|o(1HdeI)*jWZ;JK4b6OQLx*IVKaR$KJiSfb=EOkhY z5j^}C%7PgFEjBqg3WWP6;M`y^WbS|UWd4%5gI3V5f47(pj{m=SF$`ppgj4wwYXr@_Vz zr^I_rD)7cge5ce-s#5YMd#kmt;XKiGVVBD-az#bv_hP1iSVslfpAd0zWy~|H+-*{P z5ukq!rUF|T7j6#w-cg6OCsBfDZI!L$j5sm$tcuVOv8B4e$27>3>>&ISoRiJNeyp&Nd00x4-2M{@v17WB+adNMEOn+4R)d zX)hk!dj0gba@^(Fo1jWnh)Xt z7CroZ{kim`ycS~#DckK+p3;$qobGyr_l;GCrjvcuv1#7of36$@h z4We1`uOK3GV||0X;rYHcb5G4;iMB#jP?|<7$O71)*I&541uy-xpbfCJrugo6qqKZce$xBX?!MdM?(ea#f+0)X!<3-{Fh_KAGLLku-=G$ejt(NvMj zo-a+UP;S?You7*)j;n~QKYtIf%GJ;BzcpjJu6-4elBRED;FK&;>z zMGeAAwCDy(r~ z#h2)o&d0OG#6P;HJ&BEXMbKU5W1H5|1Z>IPy>0uC8fhr?*{q$!y}VtO2a4&vi^|U4 znpuj`=|uN$ZayieQF84y!*=+JfsvSO1UtY%Uy`vHtA`( zAgeBIN4|nisM(Kle`sbGfa8-fVq4fTnsOz?)$wIk+g!5uA~DxljTcm(+%9>css@-5 zz%%BYTHND5fOzoyAq4Ar2gDIo&KDdJ2KWCBY?$~5Hk=XZd5Tl(1Oc~;VV#3kLSF-l zzrvXbJt^Xu{atRc{Je^tF4CKQ-irnM!77W|RekmLCRiY{VSt9Lbd@KytI&kDr|hv& zP6K7eqy}Sne?Gn8`{2f*Z)?N+iSNdj{iR4WYXaA2!o3BYV6))<8ofH*O~_Nk<7v^2 zt!-e|C%0ot(eoIb2mGzX6`A=E<9Qt*dyEs{x&mAXH4NQ38R7E`I@fjAt1ym;ZriR? zdbuB(t~-hfFs-9WXR`Obx4pY|sVf>f&111BF4{URt$Emj9Tg0gWh&;|zo~Wv4QY{w zOi{c6GyO_S`}(5~6~<+>d#taA7ul(twj?Wct<|^x2H!88ewe5blRPwIUd`EH2f=&ZLL_m}NCd>vcemW(~wnEGt7+72Pi29#t0! zy~v9I|6V$Fh`gATybizqXw|R7JZ{AQbfQ?J8+N%C$(5WE{T6(u1=&j6+az1Y~e7!kI;HSN~Mb9a07%l!78!cy91tR6k7HjZVY z;or{tf z0#hQ|(Fpt5MzC&JOCO*o zg@a3$da_;hY@|cm->6;Vc>D{x!hcza?SWIWQgF za<9-~MCDD+m?@Gvpd6mw;y+Z=-1&N-WpSc-w?x^0ek!2%)PAZV^g`L`xH_@MpAZZD z8s2$DS-c%79#rKyMF`qjHS34kwK$Y52I`iV6)It&(1Nzw4h$*}foQg!_tHDBrVo3} zT*@nVWvmS=t^x9D5gcC-pdbh~E*xbB*|l+C#?BUDq^@@SkBh7kMjzvVL6d4oJUSph zVFvs)#JDLB&?5$&J)CY9)8=>kHySpcl%1@)*BsGLxb%K&;B6x4SgZW$yPjua{Q^HV%b zcjQ_Xji!p^Y>Ifkbb_{;wE7{iLbNqR+%r)-SUv;EIhZ&Sr>Dv&NP|tr`0rU|2i=RS z2Zt^gGGNFpem%w<1oD5RR{15{_l_t4A&|>Z$qYs}8_#-hONopgXl;^`8I;D3bpL5e{Vl$WWb) z6$2;fJ^^-qfgS?@>{HflK3*-%<(JPviv*Gd8pF>|L$9?(f(FU=7U91dBxn3X=7UAM z$qGXXXFyq=fm=Y=<~g|GR6Fu7-3mCsnE#h-?gPrQ3jB_f-C$xS+%rLHmhy%PEg z^+~Ga^59*99ww5v@!H^RsczNCPf=%2V`R?eW&&21JFqoZjsBC6tr{;Td<}@t=b{8) za*~rx{`f@J%*_?!QYXib63I1f1G01*%#Aj`gBLMXmzCw zOHB5 zNj^bY7^nKXn@Pm-+usAWjE#*u)(G0k zXKHG!;KO&nG4fjh(OQJ%+NUYLXWt5Vu|U#sx8QCUG`vN)Ewi=*8c$ssOdx*fd$MVc zi!qyM2t936CrAMyjQDqQEB%ox8$wlTBL)mZtBKsU0Sx)T&}!R1eS7`4cLUzUd-L)e zukl5T_F=kkH6ZLZKNbBjGZ<20iW_}Iaq@qsaaMOYpEUkLDUk(hF_%(ggrSp0%_CIc^j-b(X#jJea z7Bo>c+M)E4{fo)CGdXyF1Yz1Ala&z5wA`k*g`DfKs9drpAZ5n5FG-iJjDMbCEwnL3 zAfMc!*je+jhYIMydL>~RP>JQmTqT1EITfSDS=W<89yGb2z&a5Z|1^=$6ibn)Bh9!t zXTz=m-?o7u%PWW;k*eIFK@Y=sn$+md@!^5}s&CJ5DI5~JF6O8~lEL0~)N%ga;wubzybbJdjm)*x= zN@S*IN4kTUoU_G!CIMMh^TmqPRlk;$Klu~FH?(%QrJMHL`=j|?**aoG>SlO1S&v4 zz&hBZ{u`5lyx;}aWSq{Io~oPNMm7R>8z?Y#DWAq(U7~=FckyeueaZOlo$RKFttbT- za(lHvFiXq$WT^SGjxyPqEvFsvPOR&8ri!%3mj6&{qKVHExY&Z?;}e4;>63=PLw>O& zzcExjr~ZWXS5;=~TOTBWXzUw_DR{&;QZ- zi0(LIzLsk=wCNe zos4WFuqw@Lq-W*E0MXv#K(rTeu1YrZk7%!ab%DuJZOHWTBPn{FH8)7>A>_Cpj+Eiz zbrZ2q%14IAhBW+g^@NuF&EtZ)cLjTuI$@;fcC%LXt}MZT0t#2bYvphKv9+S{O>sq0 z;y|(2uGmRxS0iFE6eZKDt;<@oW24=q51hhHmjhc(_TBl?bwvj`lXtLo;j0ugtNtT6 zJE96vUi6cIkX;z8xH5rv%B2Rhmz21HYP7Zs>rqzdwFW7Dwnmbn9c!VjzqJF+XW5^; zv6cXS>^3dS?z#%WId$Tu6TVuc6nwb5xjeFAiWBheylQ@NI49vf zvFz=^Ith7vdGJb-PF6+RgG?ZqIFe8XczO|ROB&pt8ULNr#uB#!s%uxxe$^6KJ`&;FuFc* zme?4nk(DEqaV23kNf`aTfhHB8!kATG0XIn7lu5XG~wS8c5 zuA42|6wMYI{ozKaTJ)ZSst!h`@9u#p85rCivXCuuTN)*n5fJAJ%*4W_<$*z6Bo(N~ zUCwe!wtbY~PCoL2K>0ZM0#B}i8_FpDfySEX^t=dRy69r`NPSl8x9xf?QJZ`MqoOrp>Oi3`d zv)98o&<87FKaHDICv!^>upL=N-11i4K(#Y6eztStS@`n8eBc=wZ!pRvFswOsE&nafKd1^~Ie<#~)BX|W$1-{_+NHhB-%^iUe9rgc*-@^ROPV6Q zd=Y%NGsE_30)or6@wupvVM*`5#&zEWVz`X<|0-G?{{Pz%LyVsQN8Q~+7?%OYDA@P> zxgJK}e`NdLLi}9?s@*#S^(2t^faeZjyK^u^Ro?~;6wwX?fhsW4pbv&34m`cjp~AuO zRDj{H_79;dh5<1cLSRW_$uztJMjTY!_XF(GIcE^>$LibMH3Oo!APHa$GJrk6K5@hP zJ-oJN7r;-@?qEarnd{E`oiFGcafGmxzf>z0*qv*{ZNAh{$XK8OAr!d%+q{T%h?i3q_k6-+?F2l5TsR zx_#$zM+!kdK-Lbfvb0_&e`OnEJ^291{6uPyNnM^U7GRhBPtad}+d?PBrw7$5(aL+-$0}v7Ls>2SFwyLWK4cJp8wVJ zOz80Dw3=+5Zl7Jhw!e#0=uGG0n%in1S4^;v#8bbYLrM}~lwk9arVsbLVx3vo(5kAZ0^b55Ta$jCi`{qy zvh|>?l9;bKM<)VN6eE+Qmv>?48VCP~6~^N7GNB1&IuUfxSXRMk^Aqa*3AM*ZCnS>G zwFL29w|LSr@Of_()+ov&(k=VzU*e#59=(U+Qglt+~1464;U4*gW#s zdG4{e`tdq<3Rkz-HMddRkD7uW)T33*=~e>_$)TyO_WVO^gM3wntsJ%umDwwjs8*%x z*-qqnH4bYT%|PaDgy9yI+qpmf^h=TGI#1U1WT9`?!@XRW+Y?oB$0lkY&SD5EE?hN4 zkw02N-9Vu-il4@>L)6C*fEw$%ONMad5B%{q;_x+|@&|j+Mh^Pcg)5Vo77|xr$M%}M zj$OofX$6d$SMetn zQP;p!lCo1 z7^{R;cd}1e%U>z#`C|cVRLL z*G>9C&l<55tnyI{lqjqO8o}y4GqnE2zSSY~mAL5-vdKy3F|JjjwDD0HFP>?r%K(fE zJ4|Q!$#*F$^D{Xl+FI{sy zIPU@%*VJ2e%2gCW2SQ)dh5XVdgV3E2qxQz%hw5ArD+BaINk)utWsBUyJ+j1bWoal~i z8EiB8S)|f!BB`c4OqOWEbY0!#M6p6W6E9C@0lE%R#SMAv3*r;)X^UNkyCbT3WfsmN z4aPj(+5>i^8d#&29{6tK_BiG>%Lr#gzD5`f6xB>_{)TjmNw>C1JLOGktG~idtkuQN z>uJ>-9!Fl8a`B4kek`j4iVyLQ)jvos2m|Lnr+`*7&pxT#PuyI6Rl&y}r3^^GWNJl? zShX9Q&%!ChmMhfrI(T-UR@|2jR#m{9U>yma3>}MDlt}aO!(r+OQD&7vaxPu9nZ2DD zoxF7~8r~82z+WbMF++r##k{YZh9zzryxr8%oP}08HgOrb%_Z9v?8yFG_IK8Rn`t_| zcRnO^HlV2OcAm%Q3^Mb_7Dahn&B9V&hNE_#=tP7f~DTYhEkw74KL} z8FHy;kbBVZRx)9IYXl)EKj1K%m1`tPKC3Msku)ns-k%W$OHDg`+-ne2 zvj4T=o*j0-^2`5X5cgu& zB?27iUVHhnSPnzwXdi5EYAQhd7as=o@jhPA16CQ0w_xyw*x@H&X%~6KsMKEsb@L;C z(*pK>>GJ!hc9hiNFo<$lq|Zko%029lpv?YlBe>h0KLPdstv`DpKR{C}ZC8Jm@k+bA zYv3jKjQ6eZ#gI$;Q-Rzp!%s+*H}mzkOwDIUa^9vL1|j@4`|TedT?5BOOGS?y16K>$ zE?oh-f`OV!esbG3^ujG@xj0JGt~2gC>%~45zRZIDw_)EPM~}Qs-TOvruW&keV(EAIo}}A}Kr#VA z`Vv5aeFMB|K$^~qxEXPiU+eH^e$8hQ_53%bj=TlZPy9E9BW|XBiF^YSIU=1?a#-p} zgedwz z-JxX;jlnP1Xbq$8u419j-YvPUqm?;JL*|y|lm?2|Rku4t1JVGvzM>fHIgT zfNOSt22NSjy1 zPx2K2GsWH+Z8M}uQLVC3jZ#Zt8`M3Mx)Bxpw$DHRZ3$K& z1BuRNH4mDSS_t+pf#!?}qQR?0DGM#CwNU+=ex>X)2piquOz9x-RLR@T&5R>D-o`ft zj<%R)X!|CP0q5Fq6+rWt^VZ0)eH8xzNSxboer$ERcs4pi|1Llf3S6}3Kt5fv`9^|I z9lGlgpOCYpz*aayZl)lcC5m{)#?Z7B(ld9P#5_!Z0*SjUnqFW(Q6t^fsky+br~a^r-=5)MMY$ zO|q1_v(h&|VZQ^RSgX7AI2E3X6+9MC;(osZmrWcx;r4mFv}f=ESx@}vAanwo6&K&p z34_M9n^nlCW#Y5F*Oi1$jR`4cIEWh5X8YJ|q(O1D7wEBwHq>1%kYxQD8W+p%-T;}_ z>#D6fveqVk1-yHM%w_YxA!|N$EvAo)>#{Gb%zqCC^gWhfrFBm!QO<1;La)#R@JuM@R$JPw=R>YF##Ds? zMZ$QV(#Mfc=cKm?$Z4IRHW>bO<4%9{>PB+JnCFdG8e}9Y*roiiZ zyP9p6okK-EFjLOJ3MnbeFDV4ghYh)x&#s;OTGcz2Y`UoTGQC#`s<^0hg&LnjcBn`z zuLmE{RQvgkpaGdn$xd0&;8(+5eBfKR_1O^^KVK^3d-2V5TgaC*%@8R7we7ksbqe5V zl|MFmZqZM?`P$-9fjd6Ae@zeRW;&mn-YnG2gA+kl#8;dVYiH%r7T5%IVE=3b_c1$G zz$vx@ABWj%D5J`ts-379d*Tc~0Sd3tqUP7PC@x2mDCUn*DaVI>2XYjmub zqIo0WKvFRyV)4lE(|WBHX&%?X5!t~R+0+y_qVhG@h@(rj>$Lh`RuKVbz6V6dRTIS! z)#~a$TgGdb3Nn!6*>dLGlr~ltmI0SmZIv|@Gapjv!q8ERZlMv2<|HVAV4|voUS9GR zzcLyqCyL^5Bco^u4pMVu`CoD zRDt3rDC>J()5&R7S7hBWq{I1pQJN*^ooe2pC-NAyh)rt_=jHQO4gZ4qygK;)Y0k4F zXG0P~e~7FPoFfO;qFXo>yUhLT9m=SsMHJV7bqaS4Rwocg1>O`eqihi+j?xZ=ZK=;3;b8ZLQ<9AH+v@0dHkXR z@$T@_e!K0dbu$H*hnSYoHLb)Z+Kkai+N1c%)^WFqhl#*mTf%E*6O+8k>Js&O@(MX> z(uKp#i&SKeY8^z@N|tr!BYa)_lWTE$4OQHn$uU!_ay~N{7xg^%A6T|L@SP?Z^e~{| zQ-Iz(Y6?EaPcNdV#Z9{Z)iq#w=uPkGdklQFhaHQz(3&;5#Y@0f8x!n6@-dg4@<_MW zuSE}Wms5i*H+Z!7f!a6QHzy_lMPM|IlOPVf!H{3w^JcdLvj3uns_Ng1yG+gfu?+Ku z>wmf+EW3N}@rgOvqpi(jf?Dtb$jaq7__A=b*w59d)k4m)u>4WzBjUI0Xt#=%k zE33HNKSsFuCG`*2cvmcGF9`m?17gII;3_Xk?cH5SWvqaZTzGd4Ky@ww^=!uS^<5r8 zCodz%_)l)fu4^*hwEwB?yYuPqTL;g%|4HhfSUVi@*Ru#dpq14n4Dye^zJCEk>LVao z`3xd%sl!jCj)WZnKLFA|oQN-n-&QgtOA=@kiC*gGzna=FEGi7diZVZE_NCSHr$*fT zkdJ7f35+mXpChFI zW`LQ(&0SyCWEVN1KX?HL`4@C`Q(`t)j+EIk#Lj?jhv7^!kk zdZ)wYo{)g~6u8`@Qz~vALbdwb2Xu6*r5fVw%4Q~T_$KaIrGBl_MJZ@dcTSsp#+4;} zn4);-*L5L@Ao|^!#cM$HV8eMkAG_kcj%@OVsP5Caaz?{~S%;bN&p_o1^Zs{VO*@Pv z_s{NULtin}-k-u^nxN`%|6ZJ=s;v#1-~q1$4hMakb|Z#p&pc71Y%9p`#UzdOZE5+k zO-qtvzH74rP(zF#(rSZqZ^pY1PZv*!_J232v^zUHG?pyTaV@LK)S@Y8wPq2@O6IIC zc&%s9frxDIXojyR`_9$swBw}~9P;NrIpwql;&kywbml#piiTGWg`_kVu>4D zPMo1pGKqrnk_77#AaW0z@({l%*8jSx&a-9*wW>BGGWzJ%CnJhMY}Gtv0F37!pHcSp z^|`;2on7^YIqh>U|JAFPnDqigDD-DOQgV9Td68pYV;g~rJ#&u-W~M&|ans@`jg$fN z!7>`wCAi310#jxE-&IOSx0)wEYQB+5L^41`7sk9 z213nVMSa|HZ2XC98X!B$&qmnI>srQ6m*=|VM~w2sPa_6Umt~V*5^bDRGzcIIXXq5uH%zr6=g<#WVy)Cv~=v8D9jZOUV$iFnX zlt;2{(!cpG%-B(bY|)K3$JY|gOA>(}cZbM$-lYU=liJWky->;a01D(vK;MYntoLPQ zUXvkF=-JE$;$3T-V$`y*m4*cMnt!#4K=p8il6=DGQu{HGvQ;!y^*TfZwOgDC?+ld0 zw1l{~_2rOtyk`;}1m#9uf~DfpVGdO?{2VSBP6@xVuEf*OQ$*I{)$qSslku!kBXbh? zpHoW5Q{rkohw+P7ZDvBZydpjAI+bN-qpWz5a_yqUqHgZGq zEq3>ImeC}mRqbImAK;l$em^L?swE7Ex%+dg<2pZV>Aa{{BfCet@gCGJrSvh(exKu|7&INN_(@lURKDE zr)|R2kcqcV-vYdIK-ep>M#e!g2`WXjuG02*Y}(3S`Z#)(o`y1bIU&=3La2EB@l4$b zpW?d2${mVHWmoazru0IKO^Y^vmuSyW3XitDb&~A6vZNBD>}X(y&@5*&?_M&zX7%2? zhmuPRWCuawnfT~la_QPfe)G{{b>!l7PM`~2tIQegETvHFFoQ2)DU}6Il9hp@1syA{ z18w{=vZ9S!tV*p*ZUc%&p38bJlQNnCr$FIt@9nFXT0un$l9TnMKse%XYgnjo2vEo1 zJ*M&;ph^z6X4O@Y25taitU&nN(fKv%n%B>=enO<3a-E8@+(|GNLOAD2rO#~K1h2wHZ8NRmauEQeWX z4#=JrNynp%V5~3Z1DK82)S#sTHmA&0ELB|YSni_d&**cLSNuo_`p4Cvp|I+q6HK3T z+&6ay0tL%O=jl7UFqqG%Iz+1Z?)*m8?9A<@icM2wj@50=yowH zVyVnOt!MHI2|Wd}cAxm?${%&?RcAHcv7X#_M@JPPXAB!1^&jb|2338iB)p+o4kev# z2VfuNc?5!@NogSJ_4P^4FD@dvj@=wl!hDkX;60mPC1nj;+kuC=|l?d}INe!9tO|6ClU}g;-~^{Uj4S;K!Cz zUbxb^-E)aYvv!nPJ~t`U=~?-6^9Tfqj(*sj4~wDXXuC|}>S`5`d1ANJlROqhw+!J^ zs|`t7=h0nj^)Yf{82#|ZjX$T`bv*0+TknSv ziXZ8NK%Vh-F_7SUzx;`2A^U6(^DaaR>uU!f2qJ%DcO;8~ic=>&m#I z6c6Bv-8oq%&y%>~=I^flUkams#eYkT9ytPzlDj3E`DFi*AG;^G5+-_#+{~l_ZjtFm zY^=&1FnxI%C>~zFa4>rRIW~3(6WhBxEEnyKM#fU$;=*MWPW|do5a_Wpef;Br16+1-V)+ka&HUn~%=|1A>A zxVPtb`GvvfA992@?TcjQzT3}k^IrPv$v+$r(vE;P6g))`gdgRaia4Cwarjd2;jD^DTNhG*h&=#Jp>)8wMEd?bL%Rp45p9)xpMu zUGQA2im{_Uh_LO7jfD)2ADGB?0Ut*vOqa=erFn7-3CMq(BXl~pl(g}Leh3QU+)0k5 zO~Y_CG$0N5eJEqhQ+F`WYVv3IRsCdwiG#nLqlH`KdLhzr7&<(DjsCHhip0sj5=j!1 zcainzQ79#^11I=j@sttQ90Sj!m8}vyB4D(2x|%B`F^3$NKUgL&heP-pO$KOMTK4z8 zbDHN4+4NZz%KdzQ47#{ci3;sEmI#g>&vjKk6+>aizbdIU1sFSYjxjR7;N4%#vLTB$ z!;${I12vsK`CVKh+F5RGUY=v{jEHid?$-w7QU_VgFZ_~CRp|+7>pKf1FB~n=!?#os zg_6%A(j>Cai(GT7DqEnFb+cC^L$V$2KAPM}LSUGd>uynbQWdSK@t-K%E-0*B>mz94 zz;M1mNp;W0(u0iH*9o2~W<_$^E~dqS{WSORK%vC230tRnUwrnqwQ~5iWr19(lxZ28 zzF(8}hVuZFwd_dxgSBDB6Pnu;`wTs!Y|Zx4uk|yFW9!;OQUHeW5P=cEuA{2B<2`pS zrP--9`@0({cH!SIAIz&>X$JX0sA{mtv0JBd!AK~m(bONQ*DMgt-lzRN2MXK|NLLeH zf5_4Viftmv>8`@H;VYAG`d0HbJdt}^ACNst8l*>I=A|9smQGS+{4r2K6SS32A*$5q zqC|{!XJ$isyIZzl11}WTLp)ch=swt*-2-9?mqJ|=*9Kvdt`#}pq3~+?^^hF{hi`5} z)H@;NsKanp8bL;4gW8PUbt=~zhsC$zTJ;mkbiNC5IKQ^}S)SbbT?7b^<$M>pbTOQX zy+q8slcd#Y>+%rje#vKC3^ff&sJEWMrKh06yR3CLbl-0j1nC`@`0DjzbvADuelJfW zA#y&H<3W_q``JY9_vdDE&nT5n)t!bf&CjBE7K5J4N#ndEf(rn+bit@0%Zzfb zDW*BiEZ?W+{1g|!nUbiB#P!@p0}D@LZ~l7vW&x0^6c}VVRI9jWRTq=&V_(`2WHByu zEm~sl*p~HWh;QI4mNqsONbGB!jPTaY&>VAlbu*fwQLRR!{I8!F^ z72A`vvJZ&b_iFA5z?SR9%}IS_>ZPEEnJx*yxq<5kbL*OPrCB(x0Tj#yh_tFY?Kw#XJxlmpvPr1 zeV#L2*SK{;T#b#)DR&8^&nV*)0EFKyei?VCwOO<2USE+?SMyY!JN9QpikHc)@e^p} zyNk4!GLJFqXGvHEvFm3sfLJZ8Vc~W{2)dasdNsIJRU5Wk|c4 z%uP#PXT4o^sMVavb5sK#EH&CT9vZo;$)$$~|A3wh}q3BU*mF`pKdU9752o2yqr;LCuhBMo#8>fs;?y)uExPJ0r+Ko&QS?~r` zrPHzlJCjrV9wT~vO*2Hk&6IRr?NqR<7qj#MpUg1(m6bNN>R94ww+uhL^6Ug6#agQj zTkI%&1%E@#9=aVZv1)>n~A zugB{W3A4%4c;y{^!nBX#38RWPHL?ml-|&agv?99c7)CdDNTJfJuH=;9F=xK#W+7SP z8JC~$T-~&$YFnJh_#vA#8Zxx%FeNilz7zN_u7S3pj0=$dPz0Z$k*3s-x2huqOVv0T!TeMS zJBlFJr@6gNqLs+Vijj=0?k%XV`YE>`#|PJ?nOHx5#X#GyX9zpn3ci1uc|Q@v0*xhdOQh!~dYUbCQPGyI02f}nhDgw0kV$II4~AYmC#{KXyF zq38M}F~{5ummyAEoU)^W;`{cMbvAM`VwFeB>fP9g@{q6BMOgypHN*&>?;0-~q*MX^{I%9Qg4q4m@7b5bJ^(Fj-~oJD7~~gWyidSXRa=5lIPUEhGK{AKgOKnKCPCBNSgH2|~mlJm)#<>3^A0@HaJ zJ@55eZaw2VoXG;rLy23nY?vnzvoRN74fJqJ+Tz_R8W86e`ds3V-)5LCu%4P`>o8&k z?0aqb*s6E^8NwMJq2s|v{j|gy5{ns>&oD+@_+KiZyu6Hc&;xWr|6bB$#QTto47Y+m zWo@tqT-0E(oOw=Wum>%sRQs?iYgxxuDUXi&=tGg0AH+Q3au)C;V{i$EKg#Vlo z2Gk03c~c>L$8P?YBOBQ1*q0}KUu8=oAAJc+u%382hkSy?Fh>!y9|hs=>j42)$*Y`vAhG`jm}vG-MYm z^xuq~|7RFHI}2b70OUL)n*%WT(|^vu==zUr_vV=%UjLu3{Le7T-`n@fcW~@~qxKF| z{%_wUa18p2}4J+~tNE~4y?r-G7c)N{hD zLf412&BEEqdlAb1E>#lD)(ZeEK9?mwx@Jp7xWz7xXV!53%C5|(oLmjQ>jA6x+OA`h zN+jD?wnQ=OMJh{|PnJQQ>Lu}J6aXV@xrJDz=kI zXUF2LQW)^G{1Ju_+_Y<%^;)rkROwm}2QPXXXD{qCMubmjx&yJoif`Uh2Q8>N^} z!kJP<@7M1zgi)+dHta-4Oq)?`jZU9m1oFT*nK zROg;No=akhN<)dR$)T7gT?hmD7XlxUV3PEQv+L<4%UigrDUfRjXNI+=6+XNDxixGZ zpQ@B+O*;Omlv_(|@&hf*V|KIEBd7VOG4Q?0wZn54v4_m(5D`t5QLk398#DMadW!j< z;5fYiM8_{iEm}t1mFwW=(&xQ8w)&I1ZCb8^^6}c{g8OHi0kcquC%Ti z32x`UQUFl~wJh!y9eqQU#?e!BiwgH_9~~)`#>Qc&{D>VwYl%D6`^>&6WgWPj3$_XN zTnQ~5*cyOv%Nr?B(*BVVm;vfxbD$zN6F<^bJZ-uKbDnWcArV-KJi5U>fBEz`Mae8tz)y48y`Kz@2jV@?o@?vl(hmpc-7>%hq!?SVcVQ7P=8)uX_b}K(Pm7YZssRT zyqmeWzOQyNuyQbnXE88*PRQj|6|$yKFVQ6|aq}{(Vx_Ur?KSlWzA93d-?JNTdq?`uB{Y9+x%rnBRYg4QK7hR z)3JYoSU9bB*OzCX(<>M3ORDzb+ESmqOT52ERMGAE*IpE-Et-07+53edCLr&z>);@MWp#jN?h8Wf+Wi z+)~+;xccegsbg!Ls0mJ&=9sV|u3k@L@A;nCovt3cUyF_`YF44&e_-A1`VwdbZ5y~s zxkm_VlKbIodEb;g$3|={Dw#m8q>qUs5)lVq;5xYiYs1! zkrS&I5E&${@FUksNB}ph!#|6VYh5=#k59zR5fA$vJ1Vc{+%=Xz8ye-)DBZ`;IpgqNNuQdYX|$u@it0=aUjHI%Oq=nY=n%n$$SD4)l9#=7t)h@Gon#M z?0S?f4M~=*G(c@22Xf<|4-P7yc_oEza+-Nv9OWA1{TN?+VXYWx?CCRXQXx;1v+JDh zqlfB(fr5zm%L58P2Mu|i)VE{uDTU?LJG!6us!LMDpo+s7)Mm>lzj5~U3aQY^Ezo;z zehxz%$aC`GnRA`Z@NMT(Hj@*IUA_i4%W@otaf;yVudN_Wsgb%!$~sM>d(ls-8vy<- zRqj~c)u-3fOwPJcvAB+4z?}7ajqdb`QkeBb}duTIv`PdY@c*(SKcfb1x zY(Y`tOrPu0U7rlgrVM44xS~;3sW6pwZIgTRj~zK&^fMi{*(W)D7elDo(|T!g1>-0+ zI(A{3islLRyi($tcIS|pmVq*+I| z4RLkDrAFZBL0CxE%dEDneEuX6eAya>49to_Sp!v2*)78pJGt9|xPc$bvgT$fbrFvC zh=N}jjMMnCk3xp;T14RZ{A`IlE-6D!mO8df<5yy)AbKA;;$3Aw_c_J0jkx?PHSm%9 zl;~h<#}w?JRtYFKj4;}>P%4Ly51+Cukq^umz{ZT&?SKK;;6jw0ar#Vu6wcMZdgsDa0`~#1-W+yZ}w=yUJdJF*SOlbDU?7dlXki zv;1h9b@L@9q9350LYz~5VjpBWSH6R-%{;pYqw07hdH4q?n%vz~xn#u8|I z0YIH`+`f4ePIw~ypN0VLDeZD)gsy`Aewf(de_?y}9{+HaaXe_utw*Fl!JdI>2OX)Y zj6M*wt3L{3q$J=eX7Mu4%s|@g&0%zawhPSOU1DtN<2}CR;_qeB>)t}60IU_)x90fO zq4%4r|B~GNzZ7pa{vmk-4sT2=;acd_a!uz8W-=tj{*2e`F=oisgLZ&10deiFRU24j zyP^8x^mVXs;3;GJl;irIKW6|d|B-DEFs$Ca)BoY>|E;bGCm8$Pt}yl~f?kpPUaafBG&u>?~AXi&_D3caort@@=PxR`WRju$4d zPSt-23^&~D+(`t~*ry3;lalxtfKT?#j@``3C0G<`50g3V>JAkk-9}J{y0+YPOGrEt z#W{n6{pHH)@D+uqg2pw4b0K+3#eU61>EktD{qsZLC3)3`Rb^2o7ZqjFbE}@~8)=(` zg@%QY?}vZjeaQ4aB=KyXsJ8G(`>P|2FON)MNY+?zMY6F$xb;hp_Nkn-!m!3KU9v<^ zQQ2(mzH_m`l1^y0nIR1jy>tzjK6e2Q(pVYmuj8SZZv14F zujIj+e@B!$X9BAfb$FIX@boYU{n{U7W+A7L=;^1HXlJ0v?%5cziIDCF3_2hG2+%3k8DA41Y%>icCr3<)mSv<*xDbM zTs9tFjY?I%LjHwnSV7$zZz-pW4BADF(Yu!xN$$NlJyJx`(0^qhfYH*hs&D~EE#vMKTU)zI+uICR z^eo%VgoI`RdX0zdnpGL?@+%o>95(y0x!ZaiW=7$an3D_j19f5j>~{CeLU37cR*IeW zYt-VU`T*gGlx{VNvFd>{*Q~9uC+Npo?K1jjLw2Twm}XJYfqBaQMPoAOtw!Mp#4EA~ zG7p&%Ba`QB<>c(dRoRrT!!2Z4nVI)6VJ+=Z0}j1o=e$!DH!=(3W(vs?ieY-~v7|Wg z*N_+;w_5Uf62l$f7~1j?_iloZf^<>3w%{ZS&+$Vh8@T9<`qbN>4RxE{H6(+hOG}f}Ca!rH`-EsLSt%i-LC?BzapkvCE z62oEkU(F7AVK^l6o~p9nnT#5T%^ZrGQzbQDtBCAVRcy|_o;^`H(liV$%1zgz&^_%4 zJW1>`#R##$*Pqe^dvrZ8W}EyA%d2w}_`vcP zr^gVv3~J?ky{eZ*JahLcOJ`$e$dv)ILU}3O-fj~JGE@rCKY)T;Tn;dzeyo+&dVl3% zG7wvfei3^Td|$lLFai*eeRuYN-*9#T{SSN2sIp(==+-ZvJNH&KFoq;viQ{@q#dxmP zov21u^u#xN>xOr%^uznw9yCe;6uklKK2s=wSuq%B8Lml&!FTCPewY#I)y14 zB|Z>y6l<%B?p7#JSXf&ZYg)AWuxQY}pl?}r$1R&}&~+Bd>K`)mak8kaXvP{}iSqif zd@j%|H$U9P{@W0D=!#ya9L7W{P_<@3;!i%LETvdL`jxZc<+l9bYdOe=7XGh%Nb^&o zAR`}o{9pNy&4)b)fn<=ufd>XEtT#-fP4`Ee8bJ;^sGd}T?2%;KbKoT85VCYqiKHaf zPL^75zXHAhAj8>yt&2S1xa7&d()-=o0! zHJi0`quD>u?RNlq`FKYx(UjP+;KlONB4%m=L!I+sZbk=cSI8`pBF-1Ik%?T3gR8{5 z-lbsBP=>=HDyop+CQX@YjxC#W<4J=1jUg=PNnV$Y2a4ONH1~L0Qi+y-pRa3{44#Bg zzOp(00rD;E;uppk31eh}NpXY$o_V{QnSk}TVc)?jqa9{sFTfZ231rW|Q>ML4e2l#z zN~<2FoB0#_XdA0Vw7@Rx_oP?U{?UI613mjU%<7K~0XPCQW@`E!aP;2#+c~NK@*w~T z)}4!)kPyc9x5B56fSDB6wmqfLDY&(Wnb3|Fs)>W{w zvH(}89A$%r_NIFWuJ7&$Y_uZB|LAw_%KLCI7|0I+2X=4q?sg{L@FTz8e%Ay}&mk~S zE7o#_jzFw;xab=ZoL_<=mPy)Qq(%1z4vd;w4 zLH0mBC~ZHVlz#b3NA}_yx%-jF$Z|dsA9tW#`fKaw{pvHOh33;2HtWRAj3}#m>t;UL z{l&vkD@4RC;)>pyS&?NQF*T~X2jiBv^(d{lM-D~?8j-%Dw3FUg~e46qTvcquA6v4CZTQ2u|Y z`_8Z?*0tS$qNs=>qS9Sd1p(<&0_dVi6{%7Mq!W-XEuf-wSb)+Y2ud$fLuV-^0)Ysj zha$a(P(x>(H|W}D?{oHdzVH0puh$hO?_?%35;FHZ&s`jJ+PpZOMKyLOaAkh)C0VKa zCE;0K+U-w|fD0ZBhzG`?Fp*1k^D=cmU2zADCMrxLw}O2PYQ@l}Mh z(}jd9_ zzwKA!LnC|2yewt)^?K|F`YQ~pLXt?+nS5U{N-aU{L!t+F}vC>~y;2U%_J-UJI~bG(13V4-Cmt2^gXAGI7ZIQw?vUJEhc?~Ug) zd$L<~_^;;82oYhdcEvR|$n*zYotC6#IQm-FItQw|CAyJ38D+rjpTSCwC_+$4_a*msnM_Xw=)| zW6B0NPo;v;QbB$cb*P}=J=ML#1iIEuDI>?4C~=35l@gqP_U1+5DMWS>TR-AkD^A2D zr`beM$4$+Wna~s8W!kAfU2dYIi&5(mo{cO~bqnA#joQ>})SN>urS7EJh%;7qA)^bf zrw?T)U|oZPipMWZ}d=Uv+2S<6Yb&C@TYlWQ%C52Z~ArmM&5{*s+9s<63| z!49+_huE*qxD+==2P)o$ZRvXn=#rO0Znd@3Rfvr`ijskgj}yPv>E)E=9%2`sw{BQ| z7xd|N%2}dH%p&y0kMv@<3_XblC(x>_AnL3mr=(u(93F zjJrl6|~vMrW?im-Hmq9z`AQ8y&v(?WD6pJHF^21rJZt=BM z{lo2Q@EcL7rXSLGT094AYOXO27y{0Nf&y#Vf>U8vuk;-AYE=_!HTKeNWXZfm(m@Yv z)kh*~X5Amkt(6+NTe8&Mk(D*bl&+zV8raJBpsMfLo`wlym(sAaGw{Lw^mkt>N1raO zvhc=*&K)90fmwh);B6VlHf=?IJu54libZU^YeKw{5bIS($PKYd9c4+m4*SfE zeManR!SJ>$eL|*Bih7&sRI2Zt8g8TvPg~=|q{Dr?BAa2BA^fV37+~&=&N>6;l{-q@ z*cFaKEbp6mGXlRi#|W2HnZnIu`q^mtm2GYV_u|cuH4ZCo%Lxt%#;Nd4b#{KJpMQLb zN7kV>bzR;w-gXnfsf+~%Q{8wU#XQ9i)}Sk+RhB!4(AkjXEtqf2TsoiIcO$wFR9!a5 zE_TCwf^)p$DkkuaUCXi#*BrHTQm)xMu-F@E4DC-p3`xLaw;6{o^!T7Bb-cMGa?-gM zD>t_N+4=IVmOAHdw2|Yhwqvm+e13X+WTOE-A;^LC(@2zFUTX36+!@@}L1q`> zAfm>&t*-^ta;wb6&tQ4{di(6Aom9R;1>qo02IfCve=u=0jeU-q?wJkNO}{)K*gWeL zK()664d`bTmWhA9D_|0QyLt&aW}}RAIq+?@_N{ZBkI=!IF`$nwr6f;BiVLjvi*qL@ zZuJLw3;N@Qw{QmN{-X}Ie(7zs0Ckz$8$b4F`!o}s%9bOZRCm2i6Zq3QwAkb=h65*K zk9jsIHm!ngLCp>D(oPp(DjP+*?Pl?dLUB+J#|=dqO!z=`0HEx$e?l9V93U;- z`&rO%2G2cfYwyoK=dh(-m3Tlb?|jvIdfA*e6RAe-P|7m_lICKq6Bt7AMPGm zFJtvp)I z{O;pG8OiI!ph%FCj zGM&1XKJh`1rDw6R@(aRwKRiEE+?T0;_r*>Pd?04hxKWs;(+jnNvixShHK_Ro4gAt< zu*)84N{abmjWYUHT1d*n#-iS1CEYDk_;sLGV-*{Jz9-Z7EV|NB3)%ydT3$iU?i`zF zJ}eNx_f&p2p`p@cYPx)EiS+>t|Q!^fxA6AP-Y+{Cj4|#{X-5cf^o)* z?t}{k_&_xBqzNk>a7T5Tv;>A6(0PznlkF5lBD(_q*+o@cW1iV)cFADXi9SB)#DkRd zx?ZUd0D1gD+7>)}YV`@!F{CCr;3C*PK6a5x?A;uD;B*`$ga~02@$5?aC*}|3gO( z?%NIYl~;qT<>__FK)Q?;$9*}@r_Z!b-+!+g1d@w^qCW71RW@an=A2VriqgTm_AoLf z*+R%Ev_8s_j^gCxK+{MLLV40Z0v!_t5DGwALwY##fkw_ij5>?B^e2hXH|GPP|5(u>?QMW^m=b}oHA7lMbOAo{D1t>sm}fgsLTsHUC2c*=kWo$ zKnrC7W#5A=(sPo!T;Ky#GJ5_}PMQ%`cwY_Y9O_@`k6=jmGdn~wbs`rgR$av%UEA(? zwh2y9zibiS@JWlna7;!&o7CUvzl5mpxbAO4RzyWhw~-gNC*QL1mis-Gc83LsNVt(5 z%YP^Pd}ttgffux#$;)C3(QGX>9U`O-(Z%0E0$H)%%Um}_pc>aQ?_#i4@ZIc%j#E3l zS<(odz!@8*>SL-x@rl{?htjp4$FTaUXurAuYUAvqlqAC)02%AJ+sjO7!})aMn{1>M zcN0UGBTHu^EK3*si5OYdhOrfK(G4fDCnc|;&;*oS;W1h=4d-E4Y+K-`K|4ecbJq45 z6TdyCBad>Z!X?cT@8wW;z8`m7!@!y7H!KTxj$tsG>D%ffi^H^nBdzGP@bXA^ZJkZD z{N6-Yr|)cK*|UbSXBEp1BcRGUAvB$Y^4-F!Y2Q%%_WT_Tq(I+DQoF`9r~C1pKAWK% z;%aNI72Qie=bWLw`X!bDaBS2Aw7&#zbFiAjPmc8Z4UjQkKroYGtp_*ynsn zt1QdsV)JW66E(Vrd=Pond?&wbD@(3c?C<;v5)Gq`V7 zyBMwAAh&=C)<|9&SBk(*rP-B6G+lR~{R@&cyE%o}G*h}=Ft>qNG|p#FVY1w{xv}a8 z)qGnqrb>?<%FIhQzFV-n__cVa{zX6vLEDqY(AAgvdTNeM3YSTv8odqf)90BYcC&FQ ziu8NkJ!Q4F1!We#z+FeB>p0d<+;b#@QP_&zY4PY6Uih?i2OeoPePrCP3ujf1zIojbvwX4A4)Y)L>ZCuL+{aBS=C zY6^kR10jYJUvO)SIWQA-7M`R_u$`7pKtF?XI3w>7HQKi{Eip|h+qUgX6K6_1w}mwc zN|l-k=W>e8k4>asnPDwJ60}e_wf%RJvEQwmI}@MA?pMt1j?L#B-IryA)wTxo$9dzE zF(ZvUn4kgp7&NW%n-?`}cTXZxPlY&?h`3Zx?icVnb6xB~ebI>9o_`!Ii-3ZO_Go9+|=|pyg zyS(Q7JpaXKra3m*mT;JN}Dz=DGL++W7E3pTw&Aafv|4foFF` z@6zht75zg>n@&WKc3BO?!^O(0>ByZWmEZ%g^>3la&0O)(wiI7v$mgY zCI}(fYNae=&38A4FL-ylIn8)z-qDnX)^)9odgZ37`-JCgHKTu&#Cerh#Yk|KmNeHB zm6F+4akZ9Z{$p|C?~(b2yF^cY#%V;Rk9ST&SKr2y&RQrT0S!a`WF<|W^?x0hlYOjRILa0Zy-i5LBtk9s{<0aAnIgEFU{ZUB+J?*C3kV?5uen=1!D__#kPekq5!U7m2y5n*j-yJQD zghk^F)}wa!rE0dBxuj(o1*$@EL9Xs7B_-~ZO}peSQ-POB!^Vzn-agzpISH8MvnHPA z;8XTSPfLyj2v1D(FJC4dDu6V=Yx?IBM3Dq>$aS6p{3iEniiU$M=47@1(ll(->|YFr zu>WK@^pmR(Hgak}cc{WhzMiD<`AQa`Gd-XV>AaNzfqXxigOH7DidVlWlHhJ^!%7G`#85y8< zUvLMUK+(^Ma~v0SpS^!5|BgoI{$*0!FD3nxN2fu6IfWJEvX!|4XdymH>gDne`MhTB zk%Vw~(+#%c2`A?{*_{aKaRi*ruNpZ|I3$xaMN&qbNS(=lt>BfrKp94wyFh9PkOQUk zDP_{r|JZTr(Up@k{r4wuKI_5XE5Lb^k>`HR1=gN{z&Rt6akbs6n;Lo_p3MyC6GUV1`=nvNYwMrM|pfaV(gFD!B4rU zKZH)o?sBmUpChR%DZ!6d;pe0N_?_?TS4rI`2?lzGL5j=g(N*lvg+@gp|BRHULS`w0 z>@9i9QMpJSC~6^xQ%WNbgBlsJob~i7a=^F0wdAx}Dl{3Yw*Cu|%=Ywy}wjlE$qd;a`f9e#H(QR4bHh;87?>M*nB=`}rb z%tS!m^VAsHLRt1*S&ka{!Y9!oN~Ow!jxBbL{9Skyq;-k3WHz5t`&QU-=ch`zS%?%5 z9QcI~&@_h(+&BSjRMZWndvBMt`YibU=Lx45T|{im@XW4JQM{q`mjJ6g$+pHJVsmWQ zQsE#SwvqdW%S5Tdfrk+Y^2tq1A8dlE58-R;KHYO_np!`qzgG|)^U2p*&~!viv&zM4 zpvf5Xx_WuQu6x$D+h``T!ECF)yt3z>{gDscb?(8+N>W>T(|#UqXm7xTbK&m1o!*DH z;E=R*ldds+GL(FhV|IAtewCZED&hAey%!^lU%l5zlJHWZsNR~MzXa7~4pjc(; zV^3m=!*twLz`&S=mOnsi=Pp*X`nqJ>7L*SYA{$C(js@EFKP>n6J6O}Tj!4wL1mi?2fe=%+*Xj#WCzFV$?BQVxa`u^7XuCgdZu{2{0TL*=Ch`} zibFj8XhVH#lV`0(?$JW)q1QaT%1SqsaP3CS2VmK-O7|Y(HR6P1WbU5$C)z`azw^TZ zE}3d0FCL_hE+7QmYrYQC_6*IeZsWR}xRB7ptWbs9PwQbc&6+ON-}}=1xTg-MO;8(P zbF=6bO&TO%H@whwRi0y#jVb~?tfN_e-qTo3yf+cyT6F1Afq-j3rRm~vauc7asZ!T! z#MUGFc-^a)E&LQekZdx*&9@dsC35%2Lk1Yi%-2j5R` zc#AVSIEW(Zd^E>DO}FteBYxmPbKSna@>`8OKI%9Wu0~WDck0(GR%~CLOI!^84%KX4 zfvPMPH9cMv37HeCo|8Fi12hLXJmDZ8z5E0?9Mws^4d7EONC+qT@6K#uq0$qT-`z*Y zx~_{#IQ#`!L=$EfKk4BJBD+dnLVpEA6%f0}WVBP{e)2E%LcXBv1+(Ad8I8`kfQIF51oNpD?I zQO=50P9*I3_8J@=58QR;qoRi9gD3k$4!m*N3jT4OSBOp8?mNtbOvWDis`5rLA%8*O z!-_F}aR&IJ0_I`f<9EKk%&(zw$Xuhnh^B^4roSND-oVr*d+EA+-2`v)js$nCWB}EU zw<*wNCxu3GNpW%Zt$9WKPR6B17f(Wu)(Y0obiV8KP(9M&5V@a5cXExVz5j^m?RN+q z`Dwr07n^igT09@w1@n@UK(G*?T)suetgMdyP$}(_+xk%9MyMcm-mgeg1(}w^+~2mi zrKyy3K>cCSBwDs2J!|nv@srM?9VrG+Z~TN^QGnR`v>7Y)IB4|e+6`=q9Qsv_0_ASL zk4)T#$kF4u$4v=cj?M0yKGQjIT}x7W4#GzA1N~_y2_|a^28myAY%YMLz(x1uA<0&S z?7y%>{4dbRPfM2nDH^f==`x=2^I~=D7KuGg9Z?nwuGRlAUCH@0I7bOy1V9ydjG`Y4<}heTOQfVmfK`iTsQA zijun!IyVsV3z0x*#>-TdUjYgOkamXL%x4$s&Ab&0!htF}ARM4B|22&5blCc)k;>wM zHE;YvWC>l{EZC>+wbLYc2Kdk5uML#f{s&Cxr&kT`lkgtoCh21WvAax0+V($pkUjl> z5uyKgFc1X9GF_&)Ne4_OuYzo#s5Qs?iZPHY_bJ{eKnKF6*#?1X)rV^&;`9HOL;|WaNgDZ{?kT8K-3P6Eop@3-&<8-DR?K+lbjIk- zLtVum4?##o3rGz86vXhdHlp)+?kH8Q9J=x%bqqWIXFv5Wg%m zdjB>b4@d{y8vE@VJZ}kp;g1w=yVu@f!bZbUL=qudvG=IfpYS>{v(YY^YjM?Y%t&C9 zUbSj(F%?|Ty_)=&l^AzT3tAhC+)H@NQNB1_+|};ehwqEb^h59L3JaQzglqsh^rhEd zhNDB{lDU_3Wgg<@TbH2B-Z()A1%-{bytA~l9XHZ-1T}9}*PwYmetlY9p2=g&OG~0c z1Nt*I^((lvf6T1;hP`4@sABPX{uVa1m{0Iol0DO`pdL-OV>q=npHSHT_4L8QBlhVU z+aqyK?D&&W4B&C!-)9;*5=m_5p9Kj%{-3aJ{yNSp!_aXoW?Lk-rP^3aON#3$BEr!>KxWuiO#h|LGE)s}EBB9bc$~x~ zvN?^Y1onfodKM-&(DwzrJ_Wk2nqC~lX5`{`ON>D@ zY`qJ%rM19x4zV^`!Y7pw3VzMb;^U^7L%69+~q^7me)FJ4&O0W^Zod z6Z`9JVOFWv*PBN?oSIpdh*2Hg%g*~$Jv8`@LFSwZn;+ATh%eoT%D{w~WoQ^Wr0IZ% zzq3b(e(Va%87bGn9#s13>~v`j?b%^X(_{1J*~;0KUtOUT$|n~pvG9TQV|(lI>~8T6 zEv|0H(vdc`h>FgfRW4tDtN`+Zy%~4F2*RQ$ZXq2b#^2E5qluZFZ)P3MfkCCWfQ-`n zINv=2uslVX;!#XWG+pXtKQ@$xTT`02?qSQ=JT~>mhMBvae#62IcUm%`VZ?3CJ3f}g zd-u%r_Uc%vYmR3bxw9oegQs!{W$O9X>V43o`{9@SPGXrufMDh3=RE#bwBv${kZRh!&|)<5KR?RF%;iez&9noAj*slcJZ7se3T}?bQsesfE}ny1F)Svn?rV*ub34S{ z&ZXsjM>W5$w2JOSNjTD3;QjhNOZ|NA8Ny0_+PmqV#-zn4O>Xv{k=l=SRp$dQWJI3g zBMZ5e&z#X@sP>925Pbih3ACkZ56iU3+s;UP%g&ZeZp*uM#M^f;o-o5(`$agxF5aRJ zA787_C);YfhFF({BM>FG-C7xIED^*;>%43ujNw{;S?(C{$CwW;_38Xn<*$GmEc7vC z7jMgHnGt(2jW^S5cv0wO+LXouJv#ae;_&#JR&v&y>w(JzOM2sreNEGzZK)(F1b6cA z+YW1QiL5mY$A)(UyJT%$ZKiTa2IU#@Q?xu-a6LPBH#RSm2XZbmpZq3J^zSGa8}h1! z-8^-0B-`hE4E*=}iyFD8k`=0Zkz|h0;Ye4JJQIhnwx8b4A>THzP56mKQ^W6*k zVd*#!&i-M=$@0~-B*s#DN5imU#)5m@_hCrkOjUB1Giyq~vmMQq#&HL32U(@IQi3Z= z)=X2Ax8&L8pgRt6N^sRxQ(PYuIoz-{f-}vryJfvYWz$K;YM!CtdX|k`+%*F{*> z@mzr1`gOhU_w9Xb^xIEpLb^bMe%wjh?Ae)TS`doBUl-joEf7e|W$+%>zC8-0$wwso zL-A`Z#T&(-pYKm$$a~EjV>#!%HI!ZcE;>9qF>(f5 zk?IuUrZe$Yprgg`@+VG!NCVOT=@=z+=yry^j7((5{Wz4A!z^gA8fEAnSw z$B#Q;%A|g4)tTn^v7~gf$^h5`SO}1g^5=nrju&VM8IYcXnV0u}c85sEOac00bSKkb zUWW|4GZ-g81IUp6(_;wF{5Uxs(kcC4gUqtw?_U+EmnnBOQ0E~X_~q*=1cC(d7|7+z z_EPUbt5E9$11VmTf>Hh|a8(Gh1DdN0Ibf^sp5`gTZ`V%Sfe^yUE4t=DkEH{m2O0iJ za-{>j+t%dcTTWaTG8DflzK{R$&@sqfDp}zr^G$02IP6b@Y$`)Kt?DaAZ>)`8a()Ls z4G--pA9}oLC1sTN(#8LcbNQt=g~Ud?BC;(!wjuA43iWvDohL+J(mGCFKKe zkx#-nlu7rE%F2C#XeFmX*`{~p0gHI0V&)5Pn{YOp^iJy4@RgO-yanap$6kd--xVl& zbwu9D_bNO*;|`JpT`Zp3g$C)|?|y23BT?}~Xpn(h;zPTafNK~mp_mwxBlSS^q(A`L zW-VdpvSLsy*olNLFCf{2UEmpu>hrjf4PS3e^wk|ro3CAF+5MFP?3HV+3;9k~OJh2g z3+V*mto3-)e6|7mXrH8JKsjp{l+pj>4VMzX)Zr>^8n9gtpXR!N!_8E*7(%hkpO+<4 zgst&<^ZvqjSD&c0N`wQFmWLMYY=DsQB`lSyP@hC3C`+i^kx;2XhjplGxQ0`GD~v4^ z!d?lB8|5YC1pZkFN*TOYM5$DGg-J7{+-+WAwwf$W*{~U;v@B=oteDq^lP7&%3e~RK zfJd)CmN{Fu&h7KZ27WtN&sQ3H`EW;@_$V3zoU_!fQmy z(Xzd8y0T*Z)0~~mUdWnfH%F<4byxjt1D1xiU#dQ?{M#ZEcVfxy#JWG~8o8_`r{T;l zcqN@i?*uiU(|0>QW@Z*#yLN+QWu;@SOR8RYAKK7%xcROy*<3_9d7CP^$(S^v?81i2 z#{K&~s&z*hi8+}T-$JVO>uktd@>6x&ck7LgHW+KkJ11weu~(VSp*Aqf8YZa(_N>E( zbbGvWyK$-;?7f-5qL8^mBT8P)4v~+fpz<`$=rB;ZDZGW$Gzcx zAG0X1!D~WZ@AH!(yqOq~o_ISpRV7jBTi=%y$@gR}8QnZN=bBK~zsrvm!HA%+*J0o6 zpEw>hh5r=w+#_m=Y-tRxO(Y$d_HF&1*#2d|^1Bq;E7{M<>`>5?L$R^WXnYtcQlmNb0osA@yMoLbZIPy)f(cTM^q5omwlpGJWnxwnzANY~LQh#bu-GbzK9^ z-eJ#ItGr?1GPl=2%rfxqUQ8&`wXey{B?Wr;m->YFX}gBDfmq)ck3pcvD{4=If&FFh z9ZV{^aIlemxW=Ivco_%)$et<&iQ3vF$w9~ntSbA>R~2fdQYzgXy?X3j;!>(gB}6xW zR5hdd1Z%lz`&6(v;86 zN1-i*fa8k-hjpnjSC^W3r1Ig49s;LrRxFaxJ|HsOZt@k{KDM;tUvxn)@0{x!TwpUHa+~py1#*nKQ!GaW|@1lab+8Meh{dA&tNhj0yC-}7O zH@o%LfsV)=rq!v4284+QlnH5@bw>|JVVu7b@u?D$ zmRX3Du1yg>)9Qj*VJY6o7~#$ys5G{dS?cJ)vK#eKNOoW{S!RUVx4yePH^_l9ArM&H zo)0`F$&*0|iC?|O)D|bFpdR+OfHZx)0hjnWuq;?e$I__&`Z~o}2>Pm2~Zv7=0nO4;U8U*SRz;5ai zRive!RB#_uBhi~?I_20Pg<*j|6CQ5f{CP)=1pbrt6i4mlzs;;5-^qZn6$oMGRfKk`}(p8W+p=$_is{aPgL%0BNlU)D{C zC^X1Mt)bAUUtrG0*`86cSCyPODlzJ_wd=7zAvmKA1Do+nXZ{<=W(LI;`$(ndQ6RIR`icoaM{ko7lw*=S3VDTkDEmaBJ_~(j zcR3%s2udywvL+7I;PqQJaU*u?LTd?~qUn1jU)oL3n7xF=edaRMK_pkcw=JsH&(zNS z&ftNGXV@NZ^Iq1M`QQ&}>f;FtYKA>p?o^sQAg=8W`a-zyne*tcfEqM4f0vh*5-Utu z>~@Y%@NU@rU4R}$(3v$Vs*liN^X9p(@9cu?K#GC|NK_ytEN~dW!#_$y_d(UaZo~y} z@iop>ju|!om^orG+ky$;vghDt!V2BWX${(Cz6e>p4!`lov&By$(_E^gCJ&kncb)&- z7Na&|4!GZiUv@BLFQ0xIf_edhxY`AZTK1fS6T@R_s|k^DW3MOItlg$&x%vp1zWF%j z-3C$qiq#Vo^sP`ulcmPy`jP^tC zO65?S0w<$6jk(3p#HF<3hhKe7PK9l3&kBo`6Ok<~n#N8WZ6X*Q=*13~gLLjc#@ADT zjf@o4;Fn}+>Ap14X!o7wTvF<}@ptQu$?ox}DaXabS7{s_u<`>89X(=>xM4CRnSuM?Ky^SC%|9F*99_-6jgYZL~fU8SPPb>QjUN zl39*1YhIdQ!w(6+8`ExU1UTcnjh5NrRrdq>+c42yYc>Izor0mg~X#p84c;fC6fB3xEk0h!EjCdP#D+tyI9dMT)lQ()Q?BGGqFD94gxzw`nto ziH*nb57W14vul;6N|)_+T{s z<1D|}MT`9fNge)yqMazROS!YSZRz91I2z`DD6t%}iTUt@^OB>mbBhLnQfyt+3dS~zWvXae8 zlc}n>p5C^&-30S`=cU%%XSv-5`CY!*(sAw3Xy^TcuP})y*{J2?D>D3pzTwQ?w+lTN zVeHpbm4Z;C$i5Xnh4{>)tMhzLi4p#^3+brGla6?A-^v*Q$NVJ3rEFOd&xQ;9=>)a> zQ1-OC0fr#(wS7hYjIKKAmel0_hbubrTA)sA@bcPyG7pN&X9~oM3hdDX{fWsVQYV(c zsMCp|5u961nj2EA+WXpWUtD*>HjNktyAYa{b5UsDWYmf&J5l=kYK`ia{jgo7+eDO^ zsA<#4rr)vYTySbQu?brchmqe~Jc>@+(-8M=-e4>i4gipj=#^}h6I{hdJ59@63R2nz zS9C2%DQ)Hp5{_N;Dej}ldsrREeedzB_LFWruL5tqEz4Yb%8>W6@PPiR!r=e~#x3bjW-{bOSF3Kn@I{b@s zHs8aKds!4EIJ!Zkq0y$z6461_UwC$DH~y%7^(eLNP2pj`?D^Hs3ILE<5@(~vOAH&? zO9Mj+!HrWQ)j~c%M&vh6@jxJ4AzZIAxB|m+UyH3>yTNe6Q|6#&?VYND?Od!!H4Is& zKCv72IfgAy8=)dpx2(!VXP3hk(i-8&`7Wzp@m+I^!Bt+q{Jeeq{NB_ux69|NDnq)W z+y`tlI-VgIx)IhBJCj4JBbE7v>pf*N{&&-(>^xNUOKf)ego}ciDqVqG2 zApOTLd~`yk)(t$_4nn5bCiim*e9QspxC$XVifq&jjpBlDc^WOklX==$V`pXPJzekp zdGfk{f=K_COHB@n5~Mqv%Ma-;-`6!K1#?|de0Hs2CRPY?v*T-+v@~&G++ejNpm(y^ zxK9yv#)!0A3N3(fNDF5I!2_crxZ{um3nU;Hc!J=_Po9G+2ju?WE40jkDjAHE`qWJT zvOss{KY2X*8>;@BlK}kazh^<2?D6GCXRLH7v?zW;q$~HyKmqA*h(sc#-zVAYM6Lg{ zvY?YMtI7zPx0`;L@I%bEVLRBrE zsP~|TL{t5WruR34_#dRO0Mq>~8$R(m)4U(TI1sxf(%^8AGO$~wfspSX*>%b-PN~Xq zM-_8_U#K@%8!2wx_iDj-(kXpfSV=5-&95fG-Wf-iolsKdAgLzVpwlHRC>@1YcLBt? zMdcu4!w~vbIk__m4_~^tCDMfk*#XndZg4fRGR9MaxYs@j^aX0ySS)3s;h7KJS~(I7 zZtvp3f_XUmqj`3<%+hBD7QSy2(`WR*r>Xu0X&8@LXX=B;`G4`dH;VSeZMp6G)gJFl zBNJRP0rkBLb=$ekEEsG5D+>(HM@@z`HcO)@>Iu;OvGZHzPZD@wo}@3q@D}WI>|3A2 zMIn{Xv4xspqEzS6;HNL&??T~}R9CPQb<`6SB(v(u@8t88@)QC?G@-)tq3rF$*4cm@f{876 zd?9Sv9$QKyELxOl&Bm>1(W9fSqqd|T|8c5s>W73@gy*OwPU?2F zG*L2oDZN}nQzf-t6AAYd+_g*0ui4Z-z>NFNc|>F#9;Ir`h z!-6tGcw=a4c6GsRFPNxha5hwMWRXe#kNh#6`NEa_r0DCj>0Q{K*ZokyTrt}WrtEyXDBkqpksMAP7WDYBZ*a zeJ7MXwLqD4&mNf0ldnPvc#3E8pWYM^zZ{FMU{fxPrR0fJs#lDlIZ8j9JifKVTRH0~ zh7}u`a9}zbeTQgJ^(~_IBhhb$YBY8U3n%Ow*Dk#RAee0z?At*aKTqMWS?nq?crLn| zGFHVZW~{~P%*C)gkFt%%v`Q{+?+~R-^WFo`$TsW22AbI@gXLhw9$}+7vN@^onn`67sG|U&0d#v#(RXR*U8Xj`*FcnjvbE-JumV; z%C?*(z_L9RWt{be^OkFMwe-7YiTWDD%?SjL%}rFmj8Ess9Vp+o?t9@@(_X@2(>vPJ zEFx8iG_zrX-;vU9dXMK=^}IB*inf8vWa?3∓puk7Z_n<$Ae5>H*aP56I#M*%u*a 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

      >H|r`D0DwA9_yZ~kZc{d4LJ+N1txDIT$oB035E zf+tFEXSS2p^cqjUH6=A`c__Wzkkt@8Fr&t~;YINWB%zVJyL)DyMD5s{*IpaG&f=oq z5N8C%@uNr=FKD60pAe0X8HW1OqoqA#JGKM;#7DINE#a4`r?^*eWLA7o%NBqFzDN#l z2sKHKNdsxqQFJpt%O2V3??EhPXcm8goaK=y z>$w>v89oVT(c&te+$x8j%jIg)@eYsG@;t@3FUeZVGkIhcD zc$~V_t?>0jOA5W-r4w>yT#w|*AUqLp{u&fz&tn|*lFyj#Yt#rK7&&jCAa@!8W7mN{CYc#6W804tozLxNrjb*!0 z8aZ6_-BVU$Eyd*HI?EY>uyH5xo#_T|d{^Y!kop_cayfT}?6T|yB$tZ>EKi*C>9)JN zN7FW_YmCSWY3%F#t_xhh__gF4+Z)`2M^;&|+@Dr5G>G)o?d4rUBVt&)qC{zYR`Ig8 zrh}lq`I0_{sE*UJ-gDtf$`H2->qVC1fmzIytmGy%9eS6KBN&>VF7#~iwPmwY$|>5% z5SX>RuH0!D?PGnQ-z*3D!%7iFKeY(2O_hZIhAeBnSILZ2C>}Zx5&{MuF&EUtG3BNP z>SK4u8ew6*8uXuq1Rd6gq=8Cy!fvWKi$VMVp*78g9Wm%N#Ildv%&)x#>$@KjT&pFMbLBX8c_{xsk+6*%==veE z@H4KVxGcx`|2YuGL`M%c@&35Nu?X3*6xazqY7ChAk=yxT2n~=f0gZ)Jp+A6RJpgkaC+PX9 zdLTbzU20I5_;J#46ig1If8HNB`oFZDm;a$2@xO2XU!&l&(DeLJp7)#&k0&v`yyU43 zfDVFb0dE8cH97JX3C=sAJ$zlRmsd6T{dubQoT{L=mqR3{mnx5{cr@d2hyWE(Q~=Tn zpKf9@0O*icoGSWjM3eGyhMu3(S^!9%eTx9ch&&WM&-oaTI@|5Ts3Ttw1I*!^HVXKe zF6)xX79W64^Wz>dPHhe{fPgykkNk22->0V!`U7sXNH@mGYbCfx; zv(U6ywm4&Pjq4ulb}GWU>rVB@SnC*!L|&SR^n<)2N&DS5A4sRqB;3__bQ-2ZPi8_W zd<=PG7m{M64+4?Sr+|!U*ZI``+8YCj*Ew#{##Tl^XEq2QaQnbuLRw)`f{$S8D|<0@ zgRC`?u%<6lqcQSZkibqUoq;Hn7_pb9DvSleThxo&LBR&%eKO1N(TxJ zZ!DQb^JLwQ=q_%F8zy^~fg3h-SB%!ST)L>_bMd2RA(3W~qb`mhGw7MZ0pnZC*m7;y zK0mT*%OTUNj_|us+_D=G_6KTTRQ|{UcaUx27+~NTukBRU!|mg{8D#@!f(0MM`%9Y> zK6MOduUJnF&H0&8{|Wj0WiW5KIpAXHtp9xr(akZG0${D8m@K)-25Kt$zmPQ?U<$7k zY`6^5Xf3}up|~vLo~kIkx@mXwnu_jg%Vn4N$cNrUqZ)ScB-NSWnZZHsngF_rj#nH= z>(6UKD}D{k)!%yswA8V2w^$`NDY2iwmI`&K>m7*d7`$C9N_GkwJ5(8i_eI?P^8A_< zeyKIcwW^>_)JDyM?Zt^{7udomz?#lUOOpyKl@r zo8U2@n+UT@SzYlkpvTkeRNN8@x&`2B0Cr?~Q&$e6xvQtka9uGLqQ^kbl_^gT!ogr# zE5<8|=quXi8BPUj7tqpc6J3(T2r_`3adW(@vemT8P07zirN5M2zDd_WM2}vl#Ms2tXa`xC!ywbUuTJq7*^!C-9S~#627#<0xexQlZH-F;=G!> zojY{&Yy-RG!75f$R`4*t-hEN;o{!(ahL#I-CWZC(EcI~;^&C3G_-tqnz$I9v{-UmN zsl|hiP62pVoFIQ`K)P?Xh$ys3y$yYK=XSbu(VT1+GVSqhoW=@*mk)Irz4;CBMbS`W4f=vNYhFh6v#I=<@KoUrF!E#UveNd$!h~mOT-{+2G|q zb`<1z?=b#q$>7?s*I<%#WIO%yC9iK2sy%NaIBqO?IcdX!(ZQb*!a44*62d~P{aWf2MQU8b|^Ttl)oe9ssk>k56{+G1T{w`~{Q&5BpqXV|Nc-bHxMm79Jm zih<)BShZf2mQT6p{n1!rW!pq(XVqCza*_P%LcFte;=5KtCsUnEjy`cBQ&9$P`J1O* zdP zxsrpF>Kvtaf#D+h>|H(vV8A+k8lbFyl?Sr7Hsl;92;>w1PA=)v`ww3)c6$(Hld^ZI zo%ss3sy(u{Px^a`u0;7E$M#DY2TLlYOk*0@WqVJ|)e ze+!GG^&8fy5%6Dpy<8d9IOoS|!KIGHnQYqz6jgTaBJTL-pxVs_^dxH~Bqi>%mHVD~ zDh~k;TI9j_qzVAG{}`1|g3mUYX95T)5b_$i0i~>;yZ@tB2jrMy3eGVEUK$=Z{<f@sXqmtuu{*F_gbQh$O8g!KM1%S6dt7zh4;{0$I#mJ>S4 zgT5I8)I0bh9s63C;G;-T((??(e5~O~OvBYLAvFr_D4YD)L7@);UJ{^@?-lac?(eKx1~S-{j41^RN&s#>1!P73yW43r`PcF< zjm(riehB0}z-jguipM8WU-cCr+Q9Ldf{cXucb4;~e!W8W6Jwx2(*n~~vcW3-zjvH> zJf_pypLBd_X9PSp9sn3Ay|$$a08cmr#x2mtie-NJV=G?42FM1`b9Eazn2*y|#YLOE zgz2(!=%JkH<5j;z4+4gX+L7K)QQy)3!`*v_v(^89!07I+Llvb~DO!qJRU>GvmY}J< zi;CJcQ(LE1+^AjBqCu?Mo3=!1rUa>(+I!C!>GKKwj^B8$-}CSH`Sj}9Iaf~F=ZtsSjx%xfZUD`bh2j)Y*3Js;hMq0;kVsep+r1}j-iIvij^xsrMp|-1I z=97M$I|VX8d!^k%K7wa)uy+(}UmY+l&1M(Jnk0uLZYdY)u6iWx-MTrIu(87)zGE7@ zT~!`AZ;bY_Iqln{zDEr4P+eEABZ~jR1j= z17&*frTeDFofKvGV-w~?sBTCK>>=>cNbI%^i84q8)>qa%sH^%i_qwG(NElb4t;)wO z;pQ#o@v$9ZQmMzD%9u?NCcx$^3K}0-FiKdJLC_j+I_cv?*tJ%k#m`RKT&}d2?F3b> z2;IKuE~MY=_J(S{Z0=KXj7QU4JHz`u_j&vL+WPQX&tkgFYJn*`f*kw9@pX%dz8TN_ zQ!RTP#c`QQ^-Rl31d{o9Zq3lX0mX_m9eSU?G5x_e0nt$MlG;)|NaH+GOK3HbnU`k_ zaIwcYliz~4P=Y@re8{9nHHNLA0d26|r(WWQmovGAsP~vN!!8dQzC_S%N}Y)iXs<^^ z^kPLw0{TBk!^~K_bvLsk=B>K7-!lhbqm$&?wa4G{^{&rX4U~gCH!&{YecA%L_~LD$ zEoz@b+dvr6X|O&}0lY~P-^E%-T{Qp?-XQLf$1uubS6EZ>Hx+vS?zF$EsX+16_I#zR z#3#hQ$V_RO|@io%-<@`pKYg5iho=kN*AU zs@_#lfd}|}l5*}gRc&xBb{2x5W@9Rlq#Ui78-DI3^-d`XBwq}Z6qgly9)5678l^p1 zR4(Y+E*50Az4Ue7*?1fI%|i$u`^g>CwqS(|a5AlXSH459Ixw1B|5A*J+rx!;S@x&& z)-iY;@53DJy3lI$z|;yvP$+*98qF=5d-^KKg>1>WmIXw5ib<`CfR6xhycb*_If45E zwk?szbBdWNNCRV zL9}OyKeu-_Ri{KfI@#BKUY&8*VT5wR@O|mYMPP?f4amgvIU7O*d7%*r&`b z+(2WZ*7KyKF%KUfFF(J6uiw0u5?Y?|`sKI<+4O99LJa2eI{?Q|93A}vJavO7%hObO z3f-P3yZ;XPAVDJ@{o;($wX_?6VtP8O>d0N8P)PBN)&p|EgzHnEWRP*?`kQK&Yp7>X z$uj^+H?iaHdFF`Ba=r#SvoB|--Z{JHcBa;LujRhT0<3%=CWgQHs$L z!n%=Hu((%NHMpO@skl4}I@6c!D&^zq#j({gRymt;sUcaulSWCIK*j?C?47p8#eE6A zPn0{M`UkpNsQw)hQ>xf68nnkK8DskQj@$#cX7T45ob*Z}8uUl#6^|)>2~dACQoetu z)n!kZ>5bbG=|<1jG7Q@=fZa07)p}*%zTBm_xK=_!r3RXt1^xaCsW`FKOI^aO`nERI zN?y}zh)sB%m?5niIqj4*=Is{IwNjotKD_AO)wjhIyq)L>+-Fo@DXG33au1gtRutAq zl9I&9uHx|S7Uw2wjrFS0@VPdVi9Whb+wkrk(iHQAfA|K6EET;n`}lfh_UBPt#SFWV zef--=%btEbpQDxFSgV8fVzU`8bH+DZTllSVKcWc~QHohEn#sC4O-{Wn)5IWgr_?H& z>g?^aB{Oe_1UeR<4cI&80oWM}N8%d1kV17kGZIK&DN(}c0-e6Fz|xccSgE}llbr!{ zgk8PUw!g*>hwiF;yU;h@TDE4rDyZg`BZ!TeTXw!jm@UTLUM1{Ekgu&lz0C@CtOA@Y zfnN{#2~u%fkllSFqw~1?MP>M-O9?DWtV>58Oy<#_6cwPS3C{X{geH*ldp2-KPNNdz z0#e4%BR}`gbzds%-t;?jp8~QeFt^D_a6ONl+8_k97a^i%=wq5%n`FPB>1navACyNam1pec? zd)pp-;aOdYL&D64`kL049ZulKO1ZZJJxd^E4*qkaIl+`hEf_#zlqJdlPH5kXJ{&Cm zpDrke@D%0P{~G%Wz!yqC_8zxd2$+F!M=^l8HJRbyWv;K`9D$^_f?>h^c*K+3>C9AO`)L zgOh2)GS^9^*J{|pJX?}68;vSPT3u2G!^^4=eTKn4shKbxNl zBoDMw0J+lui38Sa>37A0ffw5cp#G%*a_7TNi&J{g!5N_IjOGUmKR|~W4dz{Gxo2_& zPD%sWFr~YESDYKf7j&NjJX&DArVhYS#e01xDb45HRy9c-xbgGLI_|IGIx0PER}5oA z=qh6GJHz4{?RXxVa$0A_s@{uA4BFY6VPe>c$Fslrso@(R!R=hpss-2R37~tnlNW6| z$F2GTL)Xc+Yu@Z@m_$l37IOnK;;ea;ugK6jD|zh#IZjf;ME(6Adpv?$_O(POf!!HQ z*hMmC$j7u`Ff-q*XGb}`QceTTbFRfgA6aI8+mt#F) z*|>fvz0`$qK+kSEbvsCDC(Y0uq!l=SA5XhM#3*bAV@ zXrYD9iZ_1GZA+_c3kTu#{VE@u0Llh@M@~qw1bq5UC9r1>SVL;JWU>q5yy{fF>K0a3 zhi?_i#~i79x?g`>?~k!d&@7x{?4k{NBFf?v;;76tV!&%{;x|>Ykp8k+(){+$0Q5ah zq#R>skE&Q6Yfi#1b@k-@a$&=rHM%~9hKR1?x^jV9*{-r#x$>WCWmAUzi|wCcgCuO< zSeuO7(E&43w`2`RM&JNx2*gLtA)8;%SiFU7&GE%Yjd)8UGgOk_>#Z5dSX#M6vK#qS zi^o45bzbZ%_Li~&yxbXgvvW-yRw9;Od^>Pkq~a7o3o*&8N0HOM;YkEpRj9`X@Q1qZ z^Z*CwjdiSRQ8{hsH??%|kS6{Ot#(87rKkXEzy(CM4lI7|Nc8Npjla0LX%xc zNoG95gyUdj=~T#uJhJ{?zDA1XerS1nq#fYz}jz^NQhSgTHga{4- z+s}q6TX*b-G_{PPo7bX2yocBzx`m&!y*k+7Q7qlVJFz-Zu%idj^l@2I)jCTpXAe9SNLlTMS+8@RP z7LqV}2$&nfsh?sek~$(R3Xx(>9+_rgd+^!P>O=LRco|Dix#zRK231oZJyY(K zV(GuTl)mqCA=DKctS-9jv!y=SQt~mamxtOhU#o@s=q&uE68AR!3yOBHRmrUdaY)5` zG1Ck2xWcokOFz-+Ml_A5!i-L)2|W*;&We773amOVFhNh>a;e}QsC6{xM8tI)SKnNp zpw(_^20#@EX)pL(XIRA|5a~xq-jlam^NTz(xt#0iB&Ld&x8xhLNqedpUz9uKvSqu6 zpI)sA+u$>9vi&}QtTms=TnqSXc5f|TLwvW8jx3qpSvm2}>1k)#SM!*;vn9X0IYR3} zkx|FMXS8tZ9VmR5xz|Lr4SIciY^r4895UKHH*7cScxGlJj53qBXI{?QvfQ%Ksa?+1 zj+EUuvP!j?5&OO!lm~I2Gt0syGqKe+<4u&>n%Lr+)}XxwL6||6_(Xi2K!#7MF51P( zO;QKLpiw22O&rksO~reDGw<>XQDzoPCv7Gt*LK)jPwnc~x9hcDn2mCSr`3b3kxbo# zsW_kVn#Y)=+4$*v3fW*BvzOdhBWZrjp8Zndd+^KTnY~l(*I)Gn8_h9?Nuc;ZKmn_(&gAx$juGjDaT~niuTe$tM`V>X14LHTa68Q z`bwQTc)jKzhjQ2CcNm=x5h2<#ntK340@kzFa{tsnRMCeU_$lj@U6es_gbh4cI#+Ar zSZ7ZPB-cS4$f+BAtEiDG#O+z4@I$QI)3y@MKMhC9vC^t9Zu#^yZxP1{}3U+5b1v@n-*%uN$i1^^VJx(slj z!&WgxF@1=c9Vo^b=>SAT^GEp&Tpa-@1m5w%`oF2EsUPY7QBxnIoaH241{I3}<;ef& zVet18h5vB@$6o&nGc!UOOUxM6~zP_qkfOcxzg zOTR05A-7HPLe`q+W$56WU7ODX*krj~IY`~fO`>30?0%xr^&}LRl!@db9zLYcKLo-R zbyS2mTkXp+#RHC;2?7&eOEJ*f_Vb^(1Pu26Uca4r@*78!q?1O=WL0@v8_xbatMi)v zWKQf}09v~!%-)PXq~B5SUh4O<`*o8xS`JN5_Jg#0b5_h7lDG*o0V?EpYk$V5vENi} zmAYooYkNhcDxOudx7~*HC+hvw_azn9*=M=cjL#B_e8xr{?VkYHxYXXPR}*7OM^yi~ zOf1fZXV2tRWqbdnuZJk@z9~U_M)Al4MLG#(xI@@Wdahzo0kLcOZrsqev?77n47)2G z)-1pm?w#GGDDyeor}z4^=96Gs9IND^Eq7@#XbD-kY<_xg%(c#ON^#kv40+=0nqO)vG0fpvA+Be6 zaaLB#&9O>)s(sgNWJfXf+uL^1M3QYp8{Bt!JEeQLZR%RL2v@@eK&eZ=e@*0S$r$(3 zttB8Tw)ejN%~@`J#p@;}v#BtQXS47()$6lk$>hyQr-EXUAu+{|;{gM6Ti147AS(a}aR7jnPnstYR86mu2cD5ZVL4aGgnZRH<>%mPfTC_1a9P!0$m+S0yp6>=2` z?6Yn}{-$~+r|0dHi0m@A$F7ri1*_%SmrRU(wn!dbeJC03P4-xzd{R!UvwMOR_cq6| zULoVc7W=01Hy}}?Xqjvb*}0~}yc4*qJg1l*)7&hYn;)o-ybr&7 zt&5v06f!VPxE{KjYK4+aGPiGe^#14PfvVnIFHyoCTFZIKH2qC6orHco(2_)^`4&#P z*WGM|!kooaYn4VKeYJo^FKTkTrbbw}*~QStcwUkT!-VX})#@uJ>2{eSBrF|F(IC6) zYyYZYLfg-@dA}zi8`#J7@Aj6uu65H~3qE;+rsazgCpz%-4Fz$ol5m7txFRh&?0j_S z86|#+^W1l@-bJG&&T|EK-wi`$MLzXb?;tpSck&K!1G4h#hRtPp)pZc=1^vFw8IHp9 z^Ct31%O=SZPB{qkg-Ee%7c*6?9pEXZKPGeZ$$9zn<=$qVSq$*Q_7-2ZEpPhSwms6E zOV}Ik-`7gan(#N;*Kq|-GdquVrB!^UM7sx5b~E!ONr=sQiSv8HpFr8x`$8yG=mk(} z5Z;MsTok|K{`XUBQY8q*(#*YXjki+?7oDyKYAl!Z zt0MJ;6^rAuyfR3gjBUoSJ%`;UzG<@;zZ75dc(r80q0=s%E!H#T#y~6> z&d*NGe=-}~cXkuV@*`#v6Z|e&N^%x7dlVSDK+b%1lB&}qKgpclH0Ezp(P**_Ssg>w z4M`*}hg+|eYH0Q%Eu9AEDK(#5@|6vDNA}I^gs@vxlU~;|<7_%{G8|Kqh8~d;y?ed> zHc9Q1wRKH+TMd6kB4ZVST^i@E`gW^rv$b&pqPh9e+i55@YaAt&K2y4XCVhrcyqXT) z<}i_Jl$q+EEUCEaE$22Xax=PDIMe?@)t1|j)Uu~6+?cZ6};=ZxqF{#Qj2Y>Tw=sxK>`wXF-1KNmy*jx#~s=h%qkO;3gw31r) z_@@TSi}O?OuWK#%rq7{zCFSBhBp-VLMceE42%B%VRhWVu>4r%c-Fo(9MEWW66K~{E z(`CC&Z(rC1sz7~j`Wb%bd;(~A8Y%;OJ?g~gCcLt`&9onY3l2Y&6QJwj!6$(NJ>$hG z{#*dF2a8^#rO2PjK}^j~&%!r}0i|V$H;oMoUeC#U7cVBb{;bzc8m&S!fQ+H;Nx}B2 zaxFYlVO4$jz*>zN5xt$Y2DOUBK9re^>dS5P_mrAPB7W?8$A-Ewj)^!YJL5kRO5S4( zjq$P7xZ;8y*%XMgj`Uhd;E@Bk>i?_I{Qt($DA5E5W5_2l&bsXH!xd^uO?6PoP{+R3 zr90S24Y~=3PB8%2`qzG)Kd-QWeLP$`sGn@<6#h|2v8xESuWV}dXD-<6Y2Zy7BC1`q zcMMkXH~bP8R&uxMl^K-kC3G}ohDOR54$p8uGP_FCr89PqO{J#t| zMFw*?09=^#g2LlFO>^rmRX0rKSvK?YpG4IB=7sbx)0BJ*zeV8V(G->7D{El^w`?J|l ztGK66C!H~2x`Qd*co5zZw*RRih@E)$#wFWJ%fCLkjAGe(@~rMfqOZ(GT~awumdvlr z&qgCU2)Y(zYhS!;%y;j?>ON9w#JTW3hmuXN8JPm|@U)4d8zw1XSA=e6y&gOWLq+RP zsG#ciT4r;a<<5O4eY0Lp4WT^)&_C!wzcY;1$cN6NNw>VdN{ftN_d#!JZ{~fjo7~7O zs+fs%qvtSDudpQ!cR6)#x-14~|JX2}w~rIpHDf0wamcA>%B+iB%MJZ1C~_nBrdrW~ zXgG|5qZL~+vOadadL_;pWC}3=2P6hM;KRc}4qu6ZsIDSX3&ngEZnF)V6%sjeBohT$ zW+wLr>Eu-lXKvNkf6!8<-;0sUTx){MX+?0O7Uaos!Lt)Nd*)L|+IjXba02|Y&*;rV z-6)u98H5=GLmumu=|QaPxAf@&)`bt4|5gT$u1dhr`)Cvh zp}D_!LTZV{;Gr%ZFmmjl=`h=4lEJKY6Exzyi8oYz$B@O*^`^WQJEDdmtwhwgs}@4o zZDm&KUc2>Nsl1U4NoKfx0~vx6G7g_ATVed#=D3&Ws$V7;L#q-;Agb$ePx~$MwPGY~ zYc*%n>*V3=sz$%&yL;f(49;mjnVVx1-ljc67#+h!zzzHRc%v3z=TiX|$?-QMhSVqk z#VOx8fa5^xkCJp~36MI=BaE-Sj3FI<5p#~U17q?->)6U)x|&~>TH*7kz?ONcqI}p+Y|uX>`N`eD%k}hs-tYJ9A&x{4hRai~ z+Y;^vr|`_t)sDa}wUVl&h@bX`jbnd4^>x~cpO9qecer&a^VS?>H?43!k~wicIHE80 z`_oA=#?{T)O4p~TgeL19(MsdQoRa?1OFcRxbn8o#L8RtcRkKz04{jtcL2R;f(?Thx zVFfSU#45ejkrLwraMk?jpy0VAOuO11LFRh+JFK|(6v)B-xQ)15nqi$bBx9das*97$ z8e%tH6E>?8TPprgQGBy4XOJAY5J2=M* ztb^g^cHvli=unI?!7W0NejR%IcC@AYKrw6QR8Y}VU3UU{Vix!}Cnk`Y1Cr^_T?$Ys z3IvGTXMVu_fOOrs-Nxx1;G^^u!(jOBlCcl#Pac6`P* zorBh-s{>R2iYax`3!ttd@OF^D@6FopChmu`vP5W2EIMr2AaV+K+~5DEYVU9Io9>gV zBTSe>HmL41Qfj7u3t2x1l{y9zr>HI{9NuTC6hJ5%hEisM@qg-Wsg4I897uJU5-g=o z`v=cEsNTT67+`#(pVNX5j=73^q1JFM@4p;!5TBTHcm|-p)t;9wa@!^~w2MoEie-GkeoHXxfMe>?8rvSg&#iun;|b!8s_#gU12^)^w6WIRoRLVGtDWMZnCusPGSP?&1RjN`(nP%m-j{{3D$L zg#-u&wI20dz*VCx>QW{KK#1}Wmq*I_f9hcAz6ty9@15~@<3Bc?d2pWU30OIK>@qX; zBOdSp7{HXM?|`BlpmfJro- zFfv?zWlh1^KBHU)JQo5h+vy1@I03@AbxY>@d}AUV>DWp6 z_HrE|s-a}rPPxn^G8$fYHVSa%+bT66QQ`jH7UcM9H&X5B65?6eWx?TH*_oHtLA<{B z-M1de#+z68(bwNvH^aM!Dm5-r9>UA5_F%)#VjxhWcGGLkW*FX#l&CFlwk@rPn|bM) zT~AEa-*ikC?@vp*J_J=#g=0^~8GpUAl%Id4~Fst^+uqJ<{pfafs)yA_^w z<9;y3eP8tZl&AzPG_5v$8p*IT*5ee^@8!D^7M;J@If7~_8}j^3)gu=X18g1gu$poj zbwP$>vV_(reMzKgP&%?=I1|-PByE`h!1)kK&tX+P8+nKEwTVC@E zD^gHa5|lWLkmH3&vQ3#|5Q8WDvXP&WBlD_Xv_E~0y9F|@#gMP1WXyoENc z(g;>zp}Ry>ktbH<7mrN+rb-pDTvaU}vuceX{)%LJIuf~PRBNBgUB}Bt|2Cl1N7yIH zrpnUK8EI4J;XdVWsSK*rIM7@L?#u6DEf^9RnWGHvACU3F#jbq@5jSD9_p$_zqQOru zh~fTCr7C9@u=R3+fZo2}wW99kYaUboo9cEyfj6Z}b+5j3#zbm=pT9aF0(rw~CP3Ez zLqN%>4^#b)?r*9y2L7s~x;4J_d$gyg_`5`N`2)#Vja7NH^vgHnlfy<1TM4e#NK!?O z*VtTsK~GfuvT&zcQdVl4=axKsdOYcEX={L8V#MGrL~Y7k{N>9|8Dk_Cf|{$(wY;f; zm}977`N{r*dQ6-wbEy5U&K7q5Yi|Xg$XH8{lYgFRk7@x^#*oGkbJT;QRF5e#SJ(+D zy{K4VRD4wTaqK~fM#lqa9`L)DRt#)E9%a@&uf(A+j+{bdFx1S&2jGqDGaaxaGJNJ7 z8%(`^i(~Rj?(h9e>p@2rTE!s0x$k_YduZ=B)keeAlva?R9o65;bWvH9G#3Wt!#?MS zyE;Z7zmFS6Ljlqx&R>C``NPh0tA#6_>) zHT#vf4D%w}hb9aB9Lc(H9>Ur!UQA0~$9BA3^Q3KCA8G+O%=o$V$#8T8Kb2Pz1aBdX zf}^3Y@dj4iqgbCPu=qT8-{NOcJ01=Gq)yN)>2%%{5x)saEq!8uPzq!x{eyjrb!NO< zw@+?z{?9I}v)8w8r%&(RD)A@Hv9iT%O9_X_%q6CN?_*C~cqTu~_;HOT{#$r&cBqd{ zKT=lJYPfRu`g%vikmlCCbf0f!u^}aGdR!8TsnbDM=iO8YUsKDxQ=AINr=E|LbL;_IK49=19ox==}+$F8Xe5A8_2M^9!u z3%CuJj-}KLv!tIJLi_A+j4QShdmY+1gTb#A&1V6oMdhF?WpFwJiV3upQmhhigH8nS z*ZKQ*-aWXWYsdho{$KeyY1DE+oEFvAIfi5oWA|PsKE$(qN34=2YwuEGFv$6?uXb*k zPxMZgk5BgSS>NaKyD%$-=7Y9l`nh*KoFiqut-f!tJ4ktwTz|C#<;odUq6>~9Yqd0W z1*zBxASv}7MYf{yGydw60TI0+Xv-f2ZH& z1Pe6KjGSv9KnCNrK(GeJ8OmSEE}FmpU}XPB7Ne9rpDAGke?TOl_3Q1;oij{GSb4#B z94_LOuoV~47Bv|;pz0HsT--8(ZgZ9Ghht+F`+5CRg`S{!8g%I|59v}ak5bwl&zZk} z-;o&z2M%nQsi=7^x!^YUHb0&_yIbQvUoe0~ASNuG8l|#JMOQ?fTqnYLhmFX+tP=X7 z6R5$5zZxhf0&URq;4`}efVh8aR4Pz*9HZ1p)E0DL7w4avQy^&7mCsjsZSv+iXV6TolD4{-pSS@Gs zW3LQgSy6FmN={dSA|T{~MMbQ2RuqTZUXqJ;rs*0YvRMB4&xM7heW2m|O%*twbc}u9 z6gKrNe(tzENUws+?Q8E9awKjE6xQ6IGdHL-@2-pY=-q9f3sw*DusvD@kvO|T?kG60R%><{3 z&~_Vx?QJd_B3%;SrfIoM`TbG?d%Q9}{fy_94q5->h6kS);O`$cCBMpk`_++E!HeRS zPW$x&^`WulhN9Rt{QC}cZi`x>Xt*Lh;I0>-$lBWlSnt^CaY0j;f=s8r#rZc*`WLk&w60oCwHhRE*_LbWptxjgPHZEq2Cavj#1@N(U2O)( z%S;HVyJl;*O7`7^uK|BOxJ~SSvfZFD>UyTT3SG}RX4YIa0s3p*H$&Uf05~_sKPbl4 zFvR|5(Vyets*hm`w+q&2WvNWIViyD(_TPS3BgUYO(@L`HovCqjX3b-8(+89-h(-rs z7oBKdyR0D&*yJuj_m@{6m->;hrtO`-YE5N(pk6%vMUry7W<$Q~csYZhRgP5iJfOdV z8@&M(Gf;RbgO20LKTNa6v~;d}z@0=4I1a02gq?L258>YbizG;FGE1EE7qT(`=IZ0v zO=!^QV9qSZ{_=|JP+JL+4)H}^q4au#hQ)yXbX6%~Wkx5T6%o=L}^OK~3 zh+&)l{^IE2&FPG^2+CtRds$GLMzk$y$Yk$gsyX;ah03<_Ml6Gqvv#>fQx{P4tEk%jQuxw4|U&LO--nypf%B=7@?VU8q7c@s8t2=5SJ#bdSAT|Y0QPiq#EUoGK;7Fl&j zomq6R6KTaYlqY2Ri3P zKrNWtCS#^0!W<@U8kt8YJXOK*@v08>@nGfG=l`Y#zXTLMgDoA4-YX{=SlsB*CxDlx zdyJyAWC_-><5U?vrQAuE#{j@PvOeFbwv{~;#AZ3s(zQ!ohOMqcZQmm?Xr_6RPuMd# zsu?m^i^C#Yn(Q#1nQ;{Gu5-gG1mm;fcfX`-Te4#8xNq!Y$;=ccARws<+jFk6k@;C7 zYF{SvF=?!__nE$g2*X4U5jw_hmtN$%q%l3GIoul>nl{aafkO2x9{gaU^fwRVJpo${ zs&&oMOY!0l6AhlD_`y>j3izyx23;=?Wpb2eHV!!#TMaA}k_UK=l?6CVT0QgHTSh|> zZH=lX6-#EQ_Nsi{q9jYWce+D;PbyRB*RRWa=4VRh2Ud)sGA7!nB*Gc4BwU?)uh~jm zA)}zS6Q#!)&C%-B)?=8nF`VP)p`kr+yC%GCvsczqVy}Rp7%?#EZ0@I0ehM2PR^f+@ ziJe&Ssx;|FmcF!g!d-!CJm>A)7X8Ii1#Y$6h>)W5B?*}>*0sDh+(ccpq z7uqX-qw+>Sdc(aFY9#?x@@NecNk|uV%8Bi`h^H5W(3O%?*Xxgz&G@H|-adnh2?`s~ zrX3H)8x+SgCE?OyAdDwY%`)Kw*W+8eW*+$h~t|1NEU z9=iW*6>3ph$Ivy~>T-tVb&X|`E!wWZy+;oFCV)Xg!_*xl4Dm@Cn+!mj{7|DYk#Yk( zg_9ZEM#UL55fk*v+8V}VRy(MkekW}PybMqThuv(A0%2jw3h+m^P5WaHrf!CF0)y>B zkq=qXxmSdHh*=kAnAc4qXxwgLF zw>7;}Rc0m-+y<*c?C|~APGYx1^MkR`_!Ua`Z)k(SSyF@=q8lz%#M}!7cd| zKj#Mk^?)VH;JSCOYDhGvMkU4w^4NLOIWICBHA3U-L@ubLt%(Z(uM+nVCu^Of5Bb`PD8@gcY`oB#T{6 z)o@mCDlIXdcH-s1iip&fDjYar$&7V?Ze?)qBKCoxdQ(YI`$XM z%X@*8JqK{zNs4NLQpAGsUwpSILV~|e9`2yYy7u`6xJb|o`~W6@(eTr}pe+2y51|iL z6cNb3jn91_|v}pckk^#{&u-1yMVo&!t)~!vVpgq z_}v@VeuM!_ZLYt=@1|t|M>}rI8~nh~?i;rf7wBmIGrPSDxO3l4YxyQ|0c4EXh2Kqo za24c!aDim^K_D`?p_Wml&)d7u+F2Rg;7t)rt^s`3IOFQen;db?B&ChxTukWx&?ijw??#BZ5 zl+ci_*VFVh^}UV|_pSAaGj>N?5+E}jxZhMTe<1zq0?%PVDgA2!d&+h78k$j{eKS?y z&!H@=JUd%aT{LTXh@4rnWaNWXX@2m1`_=fpLJTb+#-9rfZER780m!T+B~}$7v znQ8XeIlY~}7TlQ`Ra0lK;rq>)@jgto%vM=G0ZWcu+b~9+6L9suxjMgIt$N(r-^Q>N z)^4J^cZs6s)M;(!=%xMsxvg1Hs)YiWQRJn~MvwH1{Wu4G*{jA@<}yb=JGnqTH)lfo z^8VV& z+{I^N@m9cvqkn(rn7{1n#N9%6jntqqo;42ZSFx7X3@?lxgV^{tkM%%j&~m8lTf@7Y z2NYpvI)7W}A6zeu794J;JNXW9r$8CpHJ_1FzILBO({A>Om5EG-OnJr6>eEh15oh}q*>aKE;g#N6KGr?9CZF*PFTS!W<&sXq#$P3-ZG-udo@kU6 z+J?#d$Ldy5-(QT*0olq`wmD8RwkR&oO?e*Srk&4ImMm|MM?bLEy?P~4+3y&>YArR) zZO=c-;XPz+fK|(((V|o`2|JO1phfP6b4_sAu+Iy)3o7pC*V;|-JVT5*cavuD*2JF| zsgFj%ROmA9Ge*il<3K`hY_$GZGXzQ(dJz0oYExus_03d^mTi)cUcrtNY7~5v zNf`<_Z;FgHX_j@mP<_QC4EVuE3HgCfE+rk974xQ!e|6EI1sxd6uxD+g z>r?&9w^v;a_fs8QE;bA-yp7MR%X~Zn&BWsHVwbOlX)6%iX=MCBfSm`-6jb2jKegqu%xDo)v<( zA_N@cy=pM#IMm`ws6B8X6=KHE^h^z!W@)_dNwS)4Y$LCakj!$vcV*@1}Dt6qorvBNvvvZ$Ff})P)?llWs_=U*w2svae`@T8i zew(t3l=qhA64cw&#som+Xt!INP>aYkzYBZ9Vi@>Hr67(Yx$NnHiJ^FxaDY z_#G}CW~LOF|E4NH8V6+7-rviva8;SM%v;?MM@Y~fRBZ>AWt79uer^-Z<2-!fVI&Hm zF;Shma^yf28go4qRC-hg62Ze`4qo_~60CA4nFRCC6tdI7pn!kkpj@E&v;GGKq!VK+ zl-4R?o2zU$$E~Rr4dr2)-|!BJt_sv5ahZe*gQin1?Wwk&`Af80Z3K{)6OQ?A>8N{l zqd9`;xq-~9K=Xv4tfDB4JL;aeJ5OjTyo zw}E+=EqiqK!lGR}CZd!+k4-x0Y^gJ@Z#(?GdYOzS!vG zrV>a69#FygDT6|-V+jNR*uUVvqdEtBo`5OvI{~`@L`WI`Q{8Y!;b6!AqHg&A1u_UO zxtr<1*8?>4;6lL!XcWN5a=8aC1%c(*EljXo>{cpj<^-FH5ccBXqSsTZWcVfwh+L*5@A2-@wPo+Cq`@8hi+fk zM&2qt0MsHeY!B_`CbPST@;v%vb|21spJEvj~toLbc8Xcr@y z|5Y_C>|}b!L+9&KYI=s%x(&*nK38+>OtoLxb}w?d+R5`~m!JpsQ>Qx#Yg*eQA3KeB zi1^S*tI$Y&Ug9_$)On&pr_ch@Suub)7WVS}_g-26rip@TuaNePJpNp41pjT&i1pkh z-cVYrNnP`rT-pPdLYV%v#m=7R8C4GxmKwpRSW-cmZz zWy(3B&cVz1i?>CPg|V%_bHae*f|e7Y?^Y!4aQ&S7lXP3*)&pp55aIO#ffWz0%1yx@ zNU?}kQg%R6^mOF(B+O(ImSqj{W#KTBJh{KlC|(e6Oslt<=>;x!^_q_fTDJhZ|2I`j zZ#O9AW}n1vyOm94p1bjAdrwg{Qmd8&!Ev>*K67^Q+)ILQ-g=kh?ae-`>fcoKYFdc8 zg3dlzR3=x zGLjXvLfFBJyU(s8X7}c-M5nl}c*i!P8o^ZsEPzGA-lT3mb*5KJ5D|ZQ*!s95HI++XyGR#g?o3Ud96m^TznqJ zGF}kV{CeQg5&14D-S4uGluy~Ftn-5k=N>k#+Ewk=^6>!TEi$ePN*bH3(XuI4WiO21 zmI`U`Ft#cW@QG3A@NIhd9)X|7!58N_LW6zF`|Yl1GXO-8pO-h(vWiP0Eg=c$NU1+0 z0Np6CG$ScqTz$j$PDG0zc$--!agFZkPb6plraFZmB*LswiBjQ1p4GOaeXo zNuTG~?r~f$u5WV9Wk}w(Y^zn?h8JY=l`iiy*tD`YC(E|JE!B$j7hTsXb`H=mUtgTV zEXq=+s~8JPp~nU)tJ8vkHg;h))LcfxRB+k=_=HK*@SY|UG}gDS^vDv~zO1}kTO`pI zMhJ?CnYb_2sn3u~a-ps3<3$KDM0TmlPG&O>5{b#0Wn5+UUK&Ee6R`PST+(n)#r+#I z!$%@#BIqN2J!|vVK(f67cF$V{PP^k}$P^!Fzu)TSVBEvEpOPG5RS6B7n@a(=XPI{s z=P`&ytx}z_o_4xUx+0Fg&K+bp@3Da7x_q~&Zn+N|>}za$yMAS3%QA+`tB#f;P%Kc! z49q<%KR-#ffw*Q3(T_w9^-cAYLq=rdn`h#lq^z-DpUdfA3<;hOaLy33n)QzxuQEnF zOX=u}kr5cEyDm0~b$0$)|9BU5Wv65|T`~@hF&;ytH$!lk9GDdA1T$JvlU!$h1F_)k zCdZoW+xHZnG1mHG6B`!;#L4an$TW-IIh1W;2=VNQvWuyRj#ElLJ#AUz7l6VQg^oee z9iXS1fsfGr8*iZk(9pI9uG1h+C;IbSH0M3h(9=_b{HMR9(VV0OmaH<4YZLub4V7QL zfD_;tuK?E9s5n>sz^G4U+j8O}0gBiAnG$Kg!A@(ck2f~^*w-b0xiF(?iNVLFm19nT z4BgM#@)K%ENfS$aR;yKed0$RrUo$V0AVu2)s>%LxZ@zMbakpm0LZBEB9JHmS1%kUD z7>9Tq#m0l0Gmx?YjDP7z5AnF1$s;?Yjp7}@Ze&YxJdaF54uIq6(?0iq00&bd><-3^ z*`#%%ZN{Iq1Ij;0VWm2?c+%S9t^(D4q@`trD5dy2V#RrQ&_R_3SonY7D6sMWoykTM zM)QZ#egtN(zu0dz9hU~bV9C=ZHW@J=vq2Gs__}o<&!)o15UKLge6w%rc%XayM&Xm@ z);7Szpst=#`&U~XC3jt4Chs8ati04Gi1jsz_|?5V=RCQzg4QF__b%FkKO zACI~S+TAdPV+JfLpz=~UsN5du9?DNI!We*9s_QE?Y>f4%f&H$l2NFCrXOH-HO0j7pddL2LjFsI?2r=76N!&%s`3i(2mpE92M>luL6Y93hGquFU>jeR+E|wVSfEWa9G%VS%lOX2+5q93^ zXxWuYUc+gK^u5KU#y51$YT3gd8@O3#ykn*aUs*pHJ<_vg0ls5mnnbj;o4EasoR+N^ z9Z_T@C)e-kzPE=N@E_P+Cyi`NsL6V%cjA=IZ2fn8=V6h#H_gO>YIN-BcnYLX6kona z=o>{pZEsw|vwH=7`&CtA$Q)reDU;?WtSQ}H?IQ+M3?LL(w55RyXc=CKwp1GFRy@|@ zVPL*MG0vra6?-438BXc()y674xWv$*n_;c3`~@`Tl=U9#m-$^J`qSq>eMGo7Ugi^C zmP!<~0$y!)p6ra(zd9QI&~SOlk3F|Lu#Nc1f?{1UQh?a1|A+Z{{f*3r3u&^2GV_%= z=8tWVVRR%RQa`5P_4{hA;l$O2^}77$K4Xt>^lVwm2lcJXvyuuv10fr__zG=kH0AaJ zXuGs6xndc>`xD&}oOKU8kw<5NNCSS(ESh_5p){P=x{na+lG@yc7<&AK{e?}PlT;U7tq60T`{(vMG#AYftDa3A+wOAQk?(Ln+f^14$ny)U_}h?EA|hh+EKo#4 zmdpT6?$yw&pKsA=e*w=Ov^e*@u+tKdMlPjmgIp3c5^SO2!Gm{;iWCaZ08mU?38d&brGp%=DNC%L(_s-7{etEmNX6V#g-+O4)~ zRqrf3o4eSqtc0m}38Vx%;>UvN8EZa<8C~KP_y~w@*Fmh;AIL22e&~}+s6b_pgy0ZB zTnoNwVm|YmO7W=(p6v>LkSV@7-l7O=+O3Mf*7!p49GdDzW+R^_%at-yPS~ zx^@{GqJoHY5KvH1s&u6U3r#@~A@m|af`EYZPV96dB2^#=2%(GgF4Aj+&|9SU-U;Bm z33~4R=KFp#^XJ_6aI*VOayab0_IlQ{7M}*=#!}p#am((o$5d{i?J7)jWZTqCw)xyx z&yadRVu^CpRQ5#7fPu(^U|tpPP`hx?$n+Fcf2{cs&9yZ1#4F)h>r1|U+r?6ZPd^5SS2w{I4dT6A<(FXor>BhxBB4a}AaCG3S|2iVIN8?WM8dzzuDiasl7>fewC z{I+-sK~rr7wpjvFsdJmQLi0+Ls9K!RGO7_XMlNxAHO9gHMg-Tm-k41Sqm`_xvKD*5 zqt?A-y$L+vWVaN(sZtWh&1GWpO&4H{2do=NKIOfN@=OoCt-Rr_sQe|1ZiIOO0%1fa zB66d77tX$9!hmd9(J{1c}2lmz}A=(@+q?kW>HqMUBkenXZ%g*rB~@P+QGp;M6jHJ?sO40$_ii28w7Q^{f5|P zuDROYT;Xd?E1#9d&Bn$lW=yhE_c2Av!yjw$4+h;0{NAC$QQSf)!q@Z-7(&*hCGe8R z3thz>4fH+5kqdg!c~Y+m-}mJ>1>D$P9NQW?(OOp>Qpi-C=Y8g5N3{N8kAxGljgY$m ztq6(Uc7d`QEf^sOikI^TBWm+ku5Dq~>~|z~jB97J=v|@4(BUwg)u;6Vfc`(_Vf%nN ziwAqe!=}CRzLXEn^%|QNZrJD?Isovvvo|Zn_tX+TfUx5K*X~is>m_ZLkTtcIlN)Pu zwukz!catz9fAX{ohUC zsKZV45HKam;{TqHmIx~UycI+NFgJe=Ir8`+Km}lsKGXl)KtRfZxCj_D68A&g`9FU= z6nk$73?sgG9~XOJcnd=Lm`3NA`g1V~`YReIx{m+-ewI=p5Eu!Gs>?lna|8pR=!v)Y z9v)EwA~yh?AmF+CmO81S0FYct%)t}46ykxGE%g@?IQsHNhx*HHpn&@flx{FEO`rxn z1@y-qUq(HACjVBRT8j**<$!009_S|k6c}hD0E#zO4kEvmKn;go`6BN}_6D$DCSMdb zsNsO|s_~F&kK^6Ir^TN9y4pH-p$_j99tV6jwm;Pn%8I76=W)}-d||YBkKPzXPt){H zI(pYh(b~Jl1(XlqLmPYVj_n~g3M2NNX6ub?J%`=LChX^Dp2othzWMgoh0fz>KF>-> zyZHk?hpT?0@WcdEU!kdeiz9msJSm8DwVRJQd!Bm#y^{?n4N_O#mD_0x`^vvP%hbbq z_AD2dA`z^WT76%7QPumx(|VUpGZE$q*|T4!Sq*RFuao|B15ew#$24iwH6B)hn1WdO zs*g4IVlV2L!Yrb~pTM73k;x;>=q6SOd}ZOkA*S_@7qFFs@BtG*e-(zW+&^f^mlrWq zSFw$%s*NnCx9+mf?5t_o1U@CDRt5jNPYEwwhPRS?zG$rw^##-zZz0!&gQ5N;!aRSR zHwZL-cCS`u$Y?bJtC9=sbh&-~C39cCxov6mjfgOf{45Hd3J~)Vm2>wJoRRGq%&ux5 zt=wx4gN^?{HSHvuEgQX`5)R@3b=q9vfU^!foi`hB!v0OXO=I6Y1r$vp)Fi40M++lL z4Fzcu!&{A5K4L}dV{0Q*YArESerqy~a|JRt+ZY5YktUWFguw#z!Ogzyf*3({S(lF4 z3sl+!kC3f$>RERl!+S%$A4yFHaCP8XdjhaxQI|}b6rw=8fu@;mhz<-S5j+GHQiTtX z6sSKRe~*AW>b!mDXuv@G@th`Lpk5lMPd}LYCE1+pB00mJaUEVp;Eiq%#`P`cReFcG zj7%=Twi2XEWdy^rbhnFHI`ujZfW zDpItc2KQp~Y5Y|>ECanp5QDKuhSyeT@vKwr@~mL=n+pn^^oDJ-t0&372n$ot(gfE!@YhIu#<4tp z<+08y^(2LOW?u`Imk~-#qB=miWCsT{yvSKePvs!P?f0{49SMJQSE4TZleLL9yTVJ|cw3PeIMqOL|m)wO_ zYlq1J^XyP@{FNNDly99;eyHZNIfgV3G*p&?f+yq~idA5$Gl8c0zHcnx$E}*UxLyW; zK!E9lNRAmE!Em`+&(D4n6onRsH7Ho~)AfH>&_sweAaHaOA`{IUJ=qUe7IM595YsHs6D_NBH%zb#AmRU3MF; z+_g=1wH|EkVzJz`m<`HzGbi8gY05q8zd@lB9S|TwjuV0GhW=c-&n>fAZrkZ$Exw&B z>pUr+CIt8Tk%051-@~{nJ+!B2u_?|iL)$f<82cRF7@0ad{ zF34OH__p{A7@+;&4NLrPc_E|#C>XAow5jVx$^$a}CGl^SNUFcPtSK*ditMsQ$Ro|$ zIx@$=IPd^)Rm>J zKBeqA+&Y@i+DVFibAEjQZC^fAS{9l!ds5%|CllTI|8v9>Af`j)4{vkFLHocUD%$(8 zEUBb8L@FubN-j9rMx>hPo_nYhR(st7-1z=L3Fd6~`^ry*)BfBeMZuKVd3gjVR8Ol+ z=W3WBqU+gFqOR!QBxHX#9{mn>AjUBL zW6sgZ!$Uj>FkbP*Q=SH!NQ;o;Ae71f1#zC(t^hs|P^kUc^iOChQLF~uE9fEwL)-`G zzS0g&aDlvu^ldsW0`s=RP5-=J1yRPYrvIn|z%x(sOTVO-@fZKu{+~DVHIYailE$%z z7hfIzwh~P*@)0S;JHSU4XtI2Jf%7ik)sBnA6sBALAh+q^-`J)j|HJ^o{Moc!m4T!{KDxioQN@0RZ%MOMXW zKA`>x%;Tsz6m)fb>s0cmO7VWQjqZkKnBpIZWgn|qk_d4Ng7b$q=KK0BM+L4C1am&O zkG7b$(m+wlt+KFO2smbTT#YmsBV1mSz2HRr(nmP3QL9@ZBs95h|{nmwn_2xF- z^jgi9)yn*Do7ZwIKRGTYb8x0{p7cq(849a0R8e8SB(8U!!Oq)UspVKdkr9G=XL3Z$8nFV#DolJG^o#= z0KrXM3ZMN#o&((zm%47J=IwdBd{K6fQM#i*lhst_O%?rSjS8;PtFfJPY^_4h74O3S z)iS9!#s^v^ccKr*aeLnNlgO;>`$%q5w5I7qrJ;LbkH>UjTxI4K%QNT2?oZ0zY@r7> zH`*uNzhM2Mi)GzS8*_gi6pc`%G+QuP%C67E_3sxirOsW8z&gv_BbsqU$vZ?b!#mP} z*9BkN{dCC|=b9Ozp{tL#rm|KTupI-@_0wy=25SY!BvpAW7UtKad>E`h!R%GkKDXas zHT@l^&QbQvQ#qgg)bVGE*VJ~&*E^Db9ERYOZ6MkIwyPBbtk(PTE<6q<7kkQ1) zab{vOlJUb=A+xvd$f7>#+))6R%|*~?=`=7^F<|%F4z-WKU$NJiNvf&eruU!pPr!`F z=oHHleNL0Fdo1;oi8U6@*l08K*Ov{L*E4KAvKubJR*tI1W{uRY*K}Eq+eD(}b`2R` zT18t_TDstbpayVHESgma-wrygv@WY(Mt~lJbLU9i1~AAI#7|&9mL|d@3^{fkWW|#U zrvb~at3Oe5%NKlRvmE@!^E*oUhxv+S-Sq3@pe3{WOj3BV4Z1ZIgQV%r4` zp@Da8Te)7AV`H}1mAx?DFE{y9!n-%etE{<@t@*|t{(RfEI0G+B&~E>D&XXl_Wg@*$ zRx4|^@|iO3;hey)1aSbM{6T73TF|W^4zbhM$TK+~zWQ-r6j;u5-T?y1Cd|w^5q>#K z&gYoHTYxCyve1*Z2w=0tTxk2!j}IVE)eM*8g2t%I|O z7#CHn;6l}k*j{0MW7oS~FU&lCD4=D7+kfA%lMvXM73n6a?SxWY65WppS>H()*(eq( zWv3DnY1G0Sd-(W>7_(fXZQGSWYdg2q|4LxLv}I>=u}a90`HkppIBhKk6Pcfo%>NXC z8GmpsJ>{2DL^2sOcyNsNr;wNJYBR3g!0>L@O^eNMdNGKmHP)`Is9eA}#2`cP+q~T0 zCU*9OrqFkrkdK@w5Z%B)x%eO&DG|1z^{lsG+kR1GSjePG`AKW|P>5c)SRS^7gLRRZ zO&t4kb@poXETDEkeQmFNj?F_*b3^eab|UIGB(G4r@m((7Kxp%NH_{_G-^bUIDYX^B zTPmyPQ7nbVNh&A^GbuZB&f=(LJZ9ti>Wm{Jy(K!#<+KndYS$x@*aF8VvI}Q}GyC<~ zY3^mI3i>uPtIm4Nh4PypDEG0)67c22MON>;#hC(IJXmIuy$e8jXrcvcsS?z3>-U_|$9K9N?d|&@=DGm;44z^GSvm4Sr7tEPVcKVM5Jh0L? z>h|x>5wTL4p{B-*aNXdOYZ;+h)9AEGiOZg2vx?449#Ed#zVOUdVSuW)UWkqDDN2+u zX~dl|RpBCLIIQvMzvfTo019o!JuH z&Bk0GX|xs}O!8&{PVJLOMcFB5FWdCQNpH$+zacHGHtx%c(_Tt_^8@vYpz@gV0S~s5 z2G8-SyRY4X!&VmxL$@=tV%rTup_cXSPa}6PxF_rXGL8(w6-Xhi&~j~_ZF*6$>+^Bg zzSk?*=-v4ij$-{X%L~cWMF@G5FhC!j0-l2RZu@CP5mR+PhJ+-aU^>TG=-LUa#)ub+ z4;&B?KpH`)1|8YOq|Jp4v-EeIW8xyeSq&M)R-VO&JMQ8&?zMXIRxk}|wGAuQ_6Q@{ z>iuPAoj2`w32Y~Ip08A|>8^~XL|ByULwow@^7hl}m&|o`MeQtgZC|>>B~*JIESRuS zIW!=u6>V&_iv7MD*nnvX1ob}B;2@!w|EkgQyGY?rL>ORPMwJ`bD7MO8XYavgR^k?u z4m1aES`3|)ENt$4p8>E&jwFv*R+|6+L6cwa3eXdcY*O+ELaxI_NE*oz11u1658tsn01Ey24*#UU zlPZ;b9K@6V-E@wUoOt}960C#c#n%_aMR1Z=Z!Z3PL7W5M5!5(2;vs*)AaM}_5gnaZzj?t|~GRA2fqiJ5eE@UiNR3#)`F?Ni0l@Q24)ASe~&BzFTlKozd zMti&_w&|R!J#u)a|G3wGRX72g_uo4#iKRK9ntEdidQnfPC*77Oc2u1s18%Uux`LMZ zoO;nY9fcYTYR#weIzUVH22|rdgXYT5)L-N;f)u4AMG9I+^j-qWD9=m_9EAyCdCB~e z84yo?nwF&Y$#XqMT?z>>=1vwrh3CMd2!iW9}fEt=^=d z0$mtWY+qM7-rje^Jt)7ci|X9|lhzSctr~|O%}o>9omsExdF&Z?eD_)X4fZcXZVlZy zm9UXQo$JF=bD<9Rs)9|8&A!Q1a(Pb?lQCrotO0NA(PHTnnX8`n5$>sI+O4~LHeEm2 zdzvxKsjucBTR;(mUfg52`>bLq;;eD5aq%vn4)1SBy|a`LjR!rSM!QV=*|${(!=@s} zDlV-W)9xp5L(7n3)YP}cjuT^&!~k%5ZXc!f6|hHQw?poIWCU(vULvcpwRME93#D_~ z^UGz>IR|AA!4JKgE9@#g{IR5rOPw_hkx76gD`6tWXO#Ro=LVCdK=QrJbr3AYy0G_a zd53b5P0F-WtK28k#LwUc&uWOun4D>a?%#ylYD_h;(|a1u!37 zn>h^Rbn2MV0gPm{zmaY*sCL%|&XHe0S(m@k!zELmxOaA>7TT3g=cwlSXgY>zez*mP zW5sDq^#MZ)fYa`Q@>&$#3Ap+rAli~i>lEfa#S`eqk;8fK;*a}D09w6Comg17OP}{s zLEZ!wMRy(s3?6?14eS#gvnb7v+CL9~J$OGf(vh8aYbjW~Xcb?1uQ4AjTbSF5Qtfjw zbRm@37)^~VrPz8(6MSTI(QtJl9i0J#j%1a#Zk>BqsbO{#yT1y zmHE1x`1`wC)2O?S#>oYfCCYCKnvr#@`uesz;5WAO&Db^q`_4)zd^1CCc%6_Ry!2)0 zM)o^lH&)rviRm9{mVxF>Q9ta0b*CZ+*Mg6aJ-DmU<$cy>%0C*DUag{`A_rrH1vmH& z(b-0M3as`N%53%YuX%r3Pm$VMv#y|Yq2E8aS^oh!ckL`b{WqlOPjhD=cLgiM9boF4 zhR`6*Vp$0o6^AJaGDsgMJ9vuA;{b?;^E;`0?$+5#lJQiQQi@Q z-E&mX_tjAtB{M4`dPNgOT;Zd1EWVmiHkWjr>a9%6g-xR}XM`;EfGvB$6*z*M-qJVn zhtcxfp3{`O+Ur>Z7z%ndX$rSy6_>-{x4(G5MoJ-@T_`MJ&w2Bp=iX1tm@MZ-JvY1R zEf+V7{`JuGUyDH&3!0)`Dti8Y0d_~>C8q+^kNEG%)n@bYz$+fs;077NMVLnIIXwE3 zKWLg<4G7r3yk7d^zHrpMz4OX4{a=)LfmN0irq!{#o!ij zBU~<^6`lbYh}V2z;SzDadgYXI)xrGZ{xAA5hTo z2Ji6enPv=cMP^>p0X4C292`;&eo;S8rEv(wVl&El*P*4l15WIE3kifsoFF@Hhf{BC zF&gi{Cca1_WSJ)@=(jjF9(+84@c9le&g zrT68jQ=T}>x!kRkZv1p3tEoDsI!IUE-KF~=XL0?VJ9AXujHF)C67y7< zi<+5~*k(VggTEM6SYxXYw9C82$;)EZZDe4Z_x{fOKHySoD=pm*GTfXu3Os1 zbjU>bMs7)QC9;csOxUvxI0zJ&E=Pohh9;^0 znF{&l5+{4xVo-HMHz)VCnz@?^(DhahPCjIqpAe&{5_%5J6)~!hbJdVh^QDrEe&BkznAL&>xbwI5>Nq~6+9N_g26uSBq1NbS@h$k^pzW+2@9y#{>&z7%8!4AYz z{5|MTwD=*d)eoZ2PlFx60KJI-fq_9nR>atzS1%5i{o{!y8(@4To#VeURRC7;z`Nf8 zX!R>He_{*N=qC&)w3{ABW`{i&GQRc-UZDYiR@N!MiR(hrabw458Xm*lR4CN0y&8?v z{9Y@aOm=PJx`9ShBxCO3RNz{|V|dH=qGaEq$|?Ks4)zEPIT;whAuP`xgON0?W}IbmWn~>FGA< zr8bG~iow@*bKpVGqGW{ z6k6<19UeIqiBkJK!~R8AEhtkSx#I}ajyNqVwO87OW5+2*fn>?59!hTUXF67W&k8en z*ZUnUqYkJdM`>X%oMMNML@6NsfPEMb4G*3ou)tt``+z5+q+mt$rNHq5!~wd9|)u z)p`Y&ObHq_>zm~a=udAK+t<&x4-^>mVfl zAPLr|SSZ^8Dh$K$gTi|snG_OIeWHYNvA>SxZlnA-^33 zyGQ;+^P|>f9kVO9?va7$@rRm-+hnkZ@6B{0kJDXw%w2pOaQ-0=sZXdA@X9-=PH4iq zHm_Biw7!w41CJ~^56 zPzTAZPyx3tDEr3JmvX229nYW4~p^093I zSgFHC9oXS+4l$?$pp@AUG6Gn)+h^UWJ6UHi)Zm)WETgP*JeN^;jx*_2o1mMc;=!_`>`hz` z8fslwlQmq?&`c9b`y0}&W!CRlxy2+ozgl<0c_Db~UUy}`CH)$8$@BVLGvnsh9Y(r- zk+^%o`-Ub%LRRwTbiNdNKmwJJ03WLMll5${i)*Bjk2xACt1T2 z$x+oSs!bk~>@z75stt?5(;oUeg$%W5VT0e0G564bnR#8Y>L1qL;*%jGMMEHGwmmp6 za(}J0s99pHMFYWYCPY-bUtcW`U7x$O{4IZyOMEb$d`}c~;)#rV_J}!7CBoNS+j!qk z77loe`1g(DZMU>m9}mETtSvSP9Gn#h56;?FQ$hQEJNcsMwAl8u7uqbl^#%t^H8nuF zeb)urz24m3CYzY<6FFJI&fS^IW~s;7>SK}pj^DK4U;x{0C^gmT$i`e4@?&C?{j5*&Y zTL$tLFQ`ofHw^R$ukTf7l{zZN0DJl$fX$LC&zY%Mq9<6jthX(C_PV%cM$nn}J>7PL zi|twgXXCR0_5vD){)H;0)9AZtD|D&(hGnfRqtDUO?ndeOXRGrPpE848apE}soF}^$ zl2+`>zYGh-=c3I$RnNA=Hzb}Wm$<0Fm-&0E<1Qemi%g;bQZsp(OsyM9&&UiO#U8?8 z$&X-uW)GQ|A8S4_gMHMb4P&~Z^HK8&gzf_XDC`yMgz%sUej8b_%Aw->I~?34!ac^^ z6AP$@-Cd~Z$k4LtY}p>_b@l|5AMM97y=K3QubTDday2q{$;)&c==T=D9r*9(u#a!{ z%zCRF=>IZ`c9W>r#+h!-L{&!RJn$?{$&&HFqa((=H?M?85p~jF93dr$ABiGDq(6#j z$no2kHUDfrZf5LpeP9wDN%e1T5_yY0L_e_`heGWWIt;Md>xL%knxqr5WP_OQg1;$9 zL~2SzEjJN`fSuMKrMZ%V6=|I`dyL zBRS%MY4YKSFCpWX6FB8xBLJR^U{ykvJdY#u=?uU{A^jD+6ZRZDI5BeZ%M&>*fWXEL zXuy;)`~CNtRe@8Z((g|Cu5z96cLS}(4UdabLaqxTo<1(h6;)xNjZQuj0M!7UL}_4! zmcg$Oq-fM0E~P%+GgeJV7-Hk3l{0{+aWbL8VAhxId;O_4OUuUi@8GbZ14#I$3k$ zcub5c|3bQ?qRp;#N!*gRwl~gtTewqE0cuzgvC6;#LVxsHwOj2i4ya65%d_^gGPX^p z)WZE2B&l9~0pWRtrF-i=r6WD`d=4p>@NQ4^`+z!2&)zg5d-fB8FFfYawF($ZSRq0qYGKGmIxs8S#z0<12L6sRC}e4xQV*TR;n+? zZc|iI-k{GAf#q_pq%jC5D%JS*@GMT}{Q!YvuX{w)E(1{MTgXEc$geeiGbZ@@Ive8)|DgL)8h zT{d+S@3E{~$Qp1`|YnSN`9bcLFuTh91i zj;pgbLl)0=L5gFIS{yg_EV@qf0Xx~cZ8E5Ivst*`wR=UduJbBT!f^o+(>ThD3y%Cg z+jA|NC))gjVaE`ur7N<&shaZgE1vh9a^P<|AN(bE^6>FU90k#{o#fyj9&yZ9%pi}% z>EL|E2&K1Xw>vH|0fr0wa2axd$#F+tCd*4n9uggGcbCiMy<#(yp=!47^2jNngAcho z93Ufxa_Pix2vvXZ_Q0G|*43O9;R>jpd5N<-I%alJYQy-EJwYiug1tVb2riWnmDi|) zO5jgio)!0|hnKk9tuA=6atp1j7R*glpPCDb^Osmo%`oRN^OQUXk zEt9$6eKJL4V&asL$}_q*8qKVGQRymj8>`r7V}iViyX(0*_Fn|{NqH^l;3 z+_6Cm3+U7J&knSqpS~D(3b^tswCRqcQpC6Dvok01nvJAz1uhzF8^BL7_9r3qvzOE_ zcN){>qCKSFcy2c*vUwuI(;yc=k-cy&+sSmU+rua`X}Umk_IiR)noF0|R2M7N`R?u4 zLTQ6_<0En&d3DnpShY}c?}bfvN>REaO(r{f^4gi@TC>~Ji^1a(k@jvkRqt?{)yS!a z2lm088rj#Ky88)m&e|2HeZ}!_VKBB0qgEM*<~|lf)Z0At&V>zH6%Seh%t?`ZNtL<_ zC9*dgx6@N-%n&RaKjQbsq77XBz#pKQanH=~eOGVW;Bo0;16TW67xr~+0_Y}DKp3Z7 zLH-&}u270CH^^?pm{phy8dm5A#o84};ZrxHg0cppYa2$gr`=T4CGuQ64cxWx;T5`G ztPX;|O6lrINfA_0)w*a_ze1_$xS9Q;axEZ?rC3G7-aZ z)pb7TA#^VhXTr41i|Ilh$-h&-1!8o~Og@0CMVO{MgluKJg70H>tMMdm1SNok+^P z0NVjp{gWPkRlpzKdHWFZ>HB9@eSZKC!HkgQ)o!rK^tu|2deHMf zFUFLf*G8>IJW!`bq35?XYAVT><2XmyXll@4=JK}D_;R)%lxf76MkMIEF%1pz<#0}} z$`0`~Qh@IP4OtGHG;@d-yZIgvXF&Hk+=PL)oq_%q_^AJ3gZVA#afI}#K`7?G%k59d zL5}{di~@^Va*(@n0t90MO5mZ6Cir+sbWp203t7FHL>1ot19bN_}g??&^pNl#!1y*uI+g69U8Ew)k? zM<)7akha~F*t)q2HFi(y=Lq0yA5Y3D?l)7*Phlz7b^O%&O z(wW^BXnu)#YmSufYO+49N~{Hi*JLbn$-M=LjUa?}o3Fm?~H>(g^+akhv;ZtB`} zlJ5j<;AY{GbX@WX^VM=|jeo9JqQAWH$!bJ&VAL-N zT4*!MRLvWalDJy^c{#&0t`&CS!2QeGT1x2}sDU(qWV<(vOzsqL3*U$ehCvzWbE@!T=xa}vxs+_)f zj3X)GTN=15liyD~4>_uonh=O}#aw+&b~^A?(5HhRga)xEUz^ja~o?VMu9kW}Wz>?W>F38oV{G1vcFp_?&v1#eI zw7hE^HhhYfRf!EG6}#9w#w;hlH5_-kR{hTs>VM=Z~fm)s|oXFy>l)outi$1E9B+XcdQ@KG<))) zgI#(+z}YwHjukeUwmmP!k(&8J6~$)+jVa%GZ&Wv%$4({ay}TJ75#teeKcwE8i~HW1 zjd$xh`kCn(wsSv5K6=M9%zCRW5X74z6v8IhD z3p+;Uqjs!P)`H3{7DaT;2V$`u6iP(cBb6Z6o%Jq616m>4_qfqXOD z{kd;lkm2ZBtgN%tbFZ-K=P|}=E4??e*v(L;IRkZ(%VWViaRfc{f^IZZT%WrQ;HLR) z`1?~%n~d$WEX+^zmAa>W#OiZk9%$PgzGLoM1j?o@}qOo|ol_7Gj6TV}}c zvfW#mjfpI9tKdFWwNp@L6PjtSZ`?77!uNA87-y2RQqA|{QbhOlK<&Brz#8?SuWMrPQj-bu zyDQ8f59E!G31Iz_5hvcAvhb5fJcKKJ{s=6`*F@-Q$;(0R(Ve&j zIhngJGdwz|5jrz8xbxN4Zh(tNEjVYqQD@im-Y(ihp_EQu%W_EQKp;1}FPbZ`mSrXe zq@OQc$!V@z+VY^l&xsdX2b&L2%Y^Ta<*(TGe}c8rGzwHjlrv=F3~VB6_XsXU=!Cxw ziPR*N7DmiqI`;=E96v(#MEw?N;mC1$ulZ`*|FIhY)5ZLf)EY-BsCF`F(46S9yDs*c z_Mv6@cv8V#o_OLZxN;VNu(_3ti(+T0H!|x~2G)P{F{opn0pJQ0Hc9&sQPn>NvqZk| z|0-o8fiQ6VKYkWO#0EM5{#9>1O3bn(jx&&pU=y79X2eCvQU5=+)A)F>1cY%f{#A(m z%JBlMI|Pbnj*7lGO56pEe=;v2JTJf^AE2#>=<@WLbBy`tin#b|1P*bZzJLDf8-;)c zWKc@@)g}<4@YS3+*U~w|*k8q!qEx?Vd`3hg32ybHrE?H&dDkbsAJ?{@-KjY$O#bf1iZ*Dk?h@w zYhQw<4-#Ul2&#ltQY;Aa7&ze0A{qRHH)uFeePbaGYm*@{JxQ(ljz1thxy z#wx|~vFHnPUvjLonN}6e3yLP$a}TpPO-rpZSDdXT90R-BjD0i}4b?}2caXWeT@lF4|TN>I+#?Jr?;kX|tq+d23{$K7TU*yJm}=D(1(1 zCiSl=Jgx=j=pEF^ApGHxMC5Eemv2}MbFu|-1X<2y;W4&rf|Iz2px=-*r(Uggv0vLk z$=#i(GZQhNqN2819ke%DPx{$x=Nhr+swk#(9DLa4Y4YS}um25+vQI1JJT1N6Jb5a@ z$oF47jvNrxq>}c{zoj9gB_T&x)EC@#=h%NkUdNsRCI-j@)3*cLp#ZR%rnjH< z`N2-ez#1o~U>yWvmKu1^^C)E`fl_i!Q^s}CANN5LL55PtQ8|^ySBtjaICGLgw*%}R zLW|Ml(H+K+WHVUEBV7=X^hE1~9H`^oUbp@1uu>FU-mgF3-75|ZE|7(6FvWf0WvZ^hl-Dw#SUFHAy4ikXC*22gV0!~uwE^Hrb4RFw0ha3i z@UFAI_<+FufqPqzI-S7(JJOY}rR3Z0W0sQ5+pjO6lZq?-k_U68ri-EX6S$;CQ`&|Y zO7~}W~zAng8 zb<<;$(Wt&(ts)E2J2}YB!k?r1-WP^tEhEv2pI2`vETK3@2x2PUw#r?o7Yo3QiRe20 z9SAabL~jl9^74XSuR9#ygMK7h1_8nmP>t_}2gN9W#qj}5~E|f5fd}JT`D`~<_>5PoPpxQ$uZ$ImZy05sDr*;e&0mL^EL|< zzr9f?yQLNL3{BsFOlV(H%lHCk-J{wtoEv75547btKFLxk6s74 zRnz9?oT(=r*47-NJxaJfs?Vwo&vC_Ah3H!kXm9J}-N;e{Qi^K7l+Rvv8^?AEL2t0c zjg|u=+n9Qxxb=eY0c-AW-SdkDs{K7flW1}$)vH|xdOcNz&>_3RMciC$`@qj71DbeG zkOUH03L>nfpc|e;noDsFQ=anI*G}fu0NaS0{nVIuf?aL!~Vu0l6`+_~!!E-K!QPFWnF>6>8&uQDv-iA>=S zDRvaYbGS2PICnuwg`pMNopW6pw;-fKB}z~^e4#Y&hZk|>F5Cip5*^A;ya5T6kP{CN z4?GdP0`9z|K~mV!68W4Xf8m9C&ig;RfeAC|z`w^?{Jot6D0*mdL9#ys3rES~ZhQPp`pEUc&SOYj={bS`yPBab!``;qIf|$%B;Ik43-DBD#NwSVYw76JoVd{!X~Sb5Epok6nFQbL zqmwD+id%K7FyUOOuXS>+0|u~#W3=h-FO2ww{v!qu$^HGDAW`73?S+&m@Gmvq_YPrD z^97auhaB;uzyj$g&%Y7{Udvrfgr6br4dUPlB2Rk-as)teSoCYaDb6H{4@dnIYJ3Ml zNvVT4z0Z-xrzDCYMg;_Bm0Z0FW@dfU{rQxxg5FcH^IViXVi+FInaYpAMFW*icrX=i zeSwOhVtA)K)Lq*G1gKHve^wuD89Qt+MZ$88Ps*jC_L`L;lbQNDOQ0e0?$xE`bnBSDU+{U7p;FpC-j?EQ$Bl}~~G^DY4br8)PE!x_+xMs6j zznJ@^;NIqTbE}Q^Sej*=ZtZ^Q$L2btR{BII(OTJRM%mbOs-GpPFQ`0rDf8FX28Xv) zTPuDPIc-fg>x28B^$3eAJ}b-e`6_na(MGcLozc*R4byQy;LU-%kTth5m~y4O$GFZW z*Su$7MG$}rmJEb|r*aq!D+1MZxsaLt7U2(V6=GAW`gJ2_l>7xG9>VCC#we7QMb2aS z3i#2ATrCp5N`-J2sr4@1(D*FQ29l^Fs!AHwti>IqKFJaCY9%YZ54%r?{Z_4k**_zq zLSM0^=QkupbhBq(aYMG3Aw~8B1c~y_2fdG3``UA@>&By6F$LDKg4xkrrTpUgk-+pa zQO%*n$qG#)Veh?3bpGF{Co_X;1FsQqB03~{p={@d)s&Q!$kkL#1}Pu`5ONKvM4wzR z1GIYwMHVQtcE-f{o$EH0@7)qIVi4T}D979CSqyy4(^wcklvI z@WxQO^)+~2N56}eZik^bX1R^(b}}Z7!!+!TMHCsx8H`)OIK-`6oWFHm{s~jaZMl#m zVd}@9K!D4h@o^?Pt|K5&^vW%8m0~y8Lp!j)owG?Cu?=lRMT|macx7WFETZFdP{>fR zsabcbnPJnaPsLUX>L_awHvcam#XUVr%`c^|oVp+&(pj5kCOP6;g6(cM4i;u~= z5bGlYJvh^I1sdI!b8s@WUHcu}G-OGvoen38<$Jv4lNo8{1!75c2o@y+llAmlk1X7O zL)H{6Mx*W0y6l>1rqRkt%Z3iL!-Z0#aL=Op&(rl9F3vC|GGAgA+#7{(qD79vue-JC zx04ip5y`!`2t6I}l-BX}a^V?@=I0sB&pDHLl)sqhMCdR@=zVViYk}5JQjYgL5L^P9 zPk75%4m)S#JIhAz-ECk@e_b(m6xWK{muxA8hVActX*S3~c|KcmY_;02_-wg#c?3k# zFGjjsUh0nh0c>%@6T~!YJ1%L^kCNHh@T3N)s{_TrEAvN3$$oqgi8g!~Ll$8sv zf5H^U>HE%}RW{!(eAT=7d~wu8U97Pr&?TVOZft3FK&@O-A-2C%!6zPHZXb|e|IRlu zwo?D>)AbTH8apj*e#E5FkP&ab9BzIwg|V6`&UG@-oOK&I*gj*+0RIg^6cm1w)}j}0 z-dWV1en5*bfrZ?%kJ~!o5SUL@?^Lg|GDKZvb2DhY&H$GMl`^IIQphw3ZRPBv##=0- zyhCI~G&(cK`C6Mcv6mgNIFI?K(egtYLiA7jSZ2|=YO-lJ&6@x&+G#U=Kg*`=(Xv`R zWmkb8kBR!`BIhb^#YUGQC#U#E8Yvc)E#jOW!Off&v3^#W+lm|UNj&kiMIh%4R%&9; zXUe{R%biMGNF}ad#M&~CFhduI$ z0@)$zCQW*lO!w4@zWxu1YLJhRBVk0VQMTUEsh#?t18tJ{q+vV5NX`np>B1;(Cg>?) z2f3wtGjUF%6w8(ZYgKHVr5)VOUs~vc7N%b58OjW~MY@$84QIR;)+hl>UPnu?PrqACLi zjq>M(0BV&g+<3PPx3uBltkSK$_2+F!ljG4f+Z>}4&(viaMf2%y=u;K@eJRTP(Ocf~ zKtL(=M{i%WzJCnA0vC&ajI{!S#qSVLee8;10dyF^Q#se$&IHhqck`(n)`b84-2b1? zCxM#w-_ddLbbLHmNcbK^ehgqH$eGjkeL-VG;vLb8zzro)=@obuChxci^pUU9L@)kn zY5*-~cSxyBul{K22%qq}06dOVkgR!z&a4)(K#cQ`nW+V--hs?q(8lY)-O2O`i2^osG;+Kv^g z&|VjC!Nls7m{vv;E1PMI%G0 z`CutRZ`o6I&1DLw6Yyl!IzbHBl5`OEBy8)W>*sMI)9Yn;kTtdJXnXR&tjS{4)OZ4! zym)Y6YTqDbADndmjd)t!Y`k$*=b*tdOic2y8u~iBgx%1J$Oo$J`1bjmeRd`ycttE2hK%KgkFg%DrwcHgfUII!W0ed z)Y(5%`FYM0p;RhgI?&Xe0|`y(py?sw^hKh|4)}#o_@9^AUnP7n#oQd!b2dh0=I<}+ z0WR*s;sq92d@;LA$8?OB8o^3qYoBJ;T_Uu8xme&XeTD7Y;$}68!sh?Q+-yI6ci}}(tA-r6oP>CE+8NvAiaZ%(u;tU(4wJ--aDw200~685Xz?a9!e}roi+pq z`$|!f!}9gYse9w+nEf{6@{XRge-nkjLF%SHhGp#`OvTroiITu4D>xxS&y*u_BmwCc zcY8My6L?{NyoWI}acXOBGRwB@*{(MOJ}hS2w0tbLRo5>(V{|U-Y+cONUDNgP-n=>V zlB+{X>|Rdlu;m3%y^mF0xAIey++GwuSj#%1YTq5^tVDSn4H#BbM54oS<&CS)?;0$w zW$lRZoCjSHPcg%X>eIP9_2;+|Yi!7(Uu~k`+DHy~>TrMH`;eyU|3HYZ_tC<|TX}Av zhcu#yZ-kQzC}a6X&Tto>lRX~=Ry}L30hQ0`>`K7<#0iJ!V)us()Nb>H#}&2x}1qzSQ^%{|{9IRwtf;?iFn4^z81X9{pm zaS2nqyjGjU*2t*D^7S=M6#?|h^qRLmwKn*zz_B4!ObGLyo4PGM9C?@;`G-I~2kIm( zzxqdOyxtk!I(O?!%Kp*|Ae#$`#=LiVO_R} zWcCB~5@~z0zZORxNB5eV&gcy8SmCtoh3zin*6?(v#xF>}uNyUs@Jc{sr1{jOdrP=R zj5?UW%58wbv>0ya-ddvl`I*fGP3=l!iPebgeI>MD>b=gztKHB;aqqsap+imk)a-9! zjH9ln)MZ{_#ne@BN*eZ#YV{NIGfsT3k(e)e9F6b$7=A)%dL^{x5@v;YD~49m8XI=& zjz-*<2m_Vx{DQZfU}z70C)eo-D*QJwQn1!U$zRWM6;xNAeiRX47UsK3`z_< zQSm9bUcu$Ck?gEzk-+Q4g0r#8&!3W-4~k^z7ZisbG>GlU*+snA-a?O+Nzx6(n{ugD zSlVhj_Df|?M?9%B4l0wfS!u3@vZywf6irEet#VAD3lx29+hr1$JVVnp+SVuexu0nV z`*3}v*(a~o_?BhkTBCf-kyulaX#F1|2T17uF?kn7Qr4Sf%XE-P_%}^?97W-pQcrh!++qKamDPfP`X`QlX zBI$r{A?!}Yul+jpkpg-k5HimCg>C@;`sdySng6AH2_Zp0z+3&sS`;QHV}DHwfxG|< zKz#%lqTj~zkdtXuzwr}<;uC;2*(AWHN`^ULuYcgKVP%%4Ep*6wm$u_dwG0H(1m8?avB1`5J7Xdk0>b1n5Wu5ME@INQPn5G*mJ= zGUWCDhSfR^I>zas`a$4Qh65zc{9?3hv=CQeuK6U`1)x@tL#GP!KM+?E330U-@Ypyg zg;=|WGz(xlkiRDXr&~&8=BFmvIp6jY0JIttEcQxBG>B41RS2;%fV=Xm36AnlgwpuW zHCGMiK?N_(2tonWN+1;-P3{@!B$#LZKHh(t@;`Zz;?eIwc+x@Ay^{gtAy}XWD4Yzh zNqRJ(JR>`GkP_0hDAbB+FRIZze0Lh?P}FEC5Es>oPyF`k(4e-yO;vpQBfW-TH_)1? zfhwZjX;5CIlhgS?t}k8#MMe3+`=>#`Ih705XWCm}k2Gpc`95lSa($8b$vee?=?%Wt zt9`iU`J8Bdm!2^$^rVCiCzIxaU&pHFiN^Cr)^o6JX&_9a@*J?-{VMVG%`D|* z%vI1Uiot}w1tt8%x7Hzv31N$&{;Mi6jGP83Ze3%=`8Fj#Y}asw!@!FKRr)Pr;#);y zUm;RrZ=dnbeoNv|Trrbx&T5Ds|0?R0yVpQNvEz7-B-c{c1Fq@1R|hE#^ap%)xqF^a zugRgCdxA=hAn&rUmKTWNT%|5{cn=iD0ku;O6syTUnL6(mVb2x6Jq745UNTu!)ciNu z6vJE+!$FMvGjeLn;Nki9Fx+UpK&9JoyUvQ^jMat_LUb`wd~1$lU8h=GkbgG5!p99= zsP3TS<&0|8Iy!>e3+VuVg4;jbOA2?X6-M!BY)C|adShAXM-pKkSYt}1?Fggl|sghP=W^3x20_StY za7E5>W1dFhr7h#5WsrpUW3{VbO3T%AcKYF`fSqnHKj37P#9D1g zvK4B=DEbcZJyU=Lc2?=lzR5?8j|}-|`#=Ts)~9xkXpXaF-5KK14WK(ad+9B65FZlr z?KBeTB`z$k8)QDYoIFvTr~U%nY+rFOqHcuts36!x3+ygw3q3vj0ZJR=%4*ut4!#CE zdi=Uxah5L5{VE%Bs0?D;w)VBioEn8}_b^|BzB%`lfx#2ClYUfh`!mv(%AnF|Kwd5w zTWu$_H=nTCL^!2{=~5E6#xEzivBQpr5#~g$g>;O{bCkDqV#ZO#E|!aUFkg59{u5Ho z*E>oql!7u%xh|u21w8L0n$=juKLkvNjZw9Vgo+QZ`uCE>C-~!!{AJC!fP-52Md7n( zz$~i<^_}4Y4r# zZe+TNh6|`Pr6r~umD_JV+dW}Loo}VsVxtq3Z&t$00!-LK?ggsBS{-5`Uz8~(E#c)< z2gVzfvWekXriUY8*)gZHIrk*x`y^D9HarM+mM(?`y_8nQ^wV|C7&DY{SJ}c4(Mw|6+9Z!~A_$#Jdd#yLT4Q=yz zpZbZ7SJc;8E=HiDtoO@1AIyd1e?--)2(Qe=*Srv;N#Vc-q?BXpweRjDL|J;aw?A(h z``+$S%XUnl54`rynqlR1pQxhXdDj5_Kz88HNYgRaY{&S0;lhD_24U=yWoHai;w!*0 z4(hpj6)GG0Ly0?jGlh5TR`*;|^p6_s`d6PAwc|#4)S*_~H7lyk>18uOIH7o#ucH`X zIPh*x4wt=z$z|tg-V5hbEC!O(qS<^tP|y1&a08Pa4LXxvla28q(PAdp7+d)HsdIJJ zuZ*gBaUhwjSh}d6rjtfqt>IchPysB{4fi$P3e%=3N5!uT()&q${^$RFl1;Ff}9vvKSH5mr&i z1E5116ecHhNJcGNBNpV@op>*QLgR%Du-XSO3s`jnR7_=} z_DL)18Qr^wQM9-2XVcyyDY#;3ZtUdO&K<}YCKge|iB)GPE%bMaz1ovnEdAM5Rvc1y&op%Q?H>SY$)MCjk z=wD9ol{Tj3Haxif9@JHV{ znZA3^wU=vTdsj=A>icXx^&^4L-p}}=;sN_MHfJWWa1k%pDav{EXeoxk{u3hMBDvM%UAce1>1iUq zap@&K{Ekc8D!*ltkI3P63xVxGsO)Y^V@{+2hS)Xtu*(-=;{k)Oxw9mOn5G`G7S8%^ z*(|`b#MvUh;jgHelxd?kI9qMKx9FDAhaHxr4I0fwDeJ}adk=XRy*cY1BMo;;wZWxr zmu6rLt*~$WzHLLOFXtyuuiN?QPmKF(t-*m>6w$qxe=qfi4zV9pVraBUmW>N7+h6_TrAB`W+RU4*uSxpI|gho{? zOYZz3b?TDgy7|2Wby6HC3%-zjqdcJyBs7O0HzyS4{NlHGB>bR%wIW_8ewyP)mc@X~ z(hvZQN!%hPcl-KVu>y;t#rPn2w<%|;_{8G&d^kea6{b$2xTpnFuL!J^XGpT*O6 zMr|gHDStalzrO_WS<{jxGNM9M1r7{EpP&D{t{k132t`jDk^9KfVZrd=F(H7MhPB zRKPtCJW{4T@fvdMKCyXU1x>8S4}K^ZBQEx9EIA z2o^!80+ustftz<|K;c^xgPRVGg}P`;v8^Wf#TtFyp!(u6r?b9Y7*E@jFlL5pP4o?& z(sOu{x(}70*FhgPxNbLCFE-^~Pr)v7Gj$%0rNq~xHNm@kJb z@me5g#0`k%ltAUxX_;J!1y*z#aZ}a0&Tp>)U>u}l-a`}r=>W&c zDf0o&PZ+erpKpa}v@8sZP1@t|Euq&-rrTc>NVo(i>5;A9K+6^k`6_%_(?IeuK4dBU@t5cC&aCwUOWya|k|CbJXL*WLBu#s3&M4F#KGbudClr{_&+Ts8O5M7jTAF3Lrurk@%hGvnDXCtC|R8@{qS>m#MeWFm(*E!kbZvr#-!mB$3W}aI!RpEC% z_IzDkd!;RX-r|Ff`lUuxrh|QKY1aZkw8x6VinpOJHj-!ZfdBe|qzZbQ7QN0eey2RB zr)rnBLS*OZPl#P(@x4P)obmZ>XFOr2Ar$OP8ibVg91ja|=N$o8nFhU;3pBjv z?u9h(g;Mf!-2+|y-^ws0vX}CC+42<2!d~;Ua|GqwXa^lyug@@l26FyrKF(o-D@T>x z$?;dD?H!7?yw8F-<0%KCzFbog5KxRfU#vs}hSW2~Op-V#EkCAMNyw@_<5^(nG5iai z(vW*8Za)Ml7o3U7g936NMi!TWM>0J=Z$b#qzqD)vmFQ`49#8Oac z6u`=}LcmXsJU)R5$;k?5f3INs@%lA+u?XCfTu=V?AO2r^XJyD%c)#}*3OfCFTLpw8 z^cWj?x=-NtEI5d}H^>hmpfX85Bv74v4WRnjh~ksrGWtO&-;!P>C8ky@znPbBO-~S@ z=eEq>xLMjMnjJ8c+zH81N&(1JWt)p*=S7qCek1Z<)Be*fLw>}aYFGdwE7bdmXa-tY ze?+@I+}+FwYX;H`{gpUw;oQ)0a8*!)$SI^>SWfVyLck_7uqi(XU5H0nOzR;H&j#RMf1P&FkfEf z`M#!I?J2+Go4O^Kk*0@psZ7Z%UWsh(k~FRe=jS(Ca>A8%E$J2rb@Oe#_sI3Dm6D#{ zkk&Mg{RuH-Wj6bq^*G$jNGUA%Fs9bY@7pX9!9e;X4c2aVXXQa2h#mqouY1xzKF zKtkl*Mk%}9FQta<`(;3Gf2F40Yh3Ga@I*`Rqs%6A@9sy-AzfYs=fi~0!y+}S!uhxe zMTbr75jX5h1?ycyV3403IT7Z^|9!Y7jvIdi{Do5F9qWlldz!W=J#UZhHgI3MEL5K9 z925k^?Xf|q=eIEGSG(E*aYi4!^KfpVHho5!y{weF%+;XRe=@x2zTZpxz@KOwVI&P4X1&dViPBgytx zTGw%R8SF0?;WmlC0sO*ACApmgyiWvET1#prPU=zo*U8Y-b7H{4Vg`A2Tg7QFwQg>$pu8o9 zmJU@qF@e%ON{BHoM5R;@F+O@f5$bzRtk0<#8)sou=WY3nWOA(qeDY%%S_7Vg=#bQn ztViKDGc7da?nh;6s-2`#muu09%A`@f225)1KUFo?e5-jC_~`?gp>_k&*zfT6Y~#TY zX!IzqbvyMFvdVb~+@Fo4fD1J4&^OpqKk+AI0mbzbk_oP|X5(DKu>0ji_O04DrK7Xb zlpgR7U$;fMYq45XpCJshG?~w@QOkpd6dJV;GNj_%AHcc)kH@OVPL^prSG{o2FLRv3 zpmB*w(cvX)x6ogr%ClYUg)g;l4Z2*;DzTKPuYA45bXhq>szp;Fe)teOi|xOg^>x6a z@vwtEw>_LGnu+c3yTj#{{pyZY(*`}KBrf>P2np$aU&dZ0&-M0gI!#oxf3-&+`Rg33E6z?Z)dxIF-HF~Gxy%ya?z?-i;%Yq}ff z8FT!bp z`pibG+giw!UVl8V@lWy1; zjpni%R(uXA=`QA5+NukU5Kxo8G$&veQB&#qkRR*6xEh6@%J3BW*m$idY$Qw@n%po4 zO$vp!#>|wpehl7udUL$&h@LAt(lpunK)u4x(&ED1{;E*X9B9jMQQC5Aho8M2&uByL zM8WHr^PDklvSK11zn`NxVY)SwkyT?VerK%DUe6Wi7%k@?zc%gF8?dz@8Qs|Orz`Xb zQt?;MKWW@94f|_K`by7MX#C8Sp82@XO2L_3s9#>07t8X2Wy5tP?a3q$Z`&W=kOX3$ z=UgpjP4B`DZV{&pxehLK zdjmI8*Tm{fhHGeJ+D>PuW`YM3a+}F&-6NSkJF>J6H`pnKn}X#LQL%VIv@dLnM36jQ2%h;pkOXh`~LRqaQ+X8xXj_Mn(gG6AIE2X~=yzDNkl#dn~Ky zLR2D6LFYS7WCrla>tU%%prSZc=^RM^()){_u~fxRh)PWiLH*Tqmh)}kFeoVVyTL>A z@5pwFba^rx3to#&LH@Q+0_OVS?}Jv;_~$Ts5G#07ZJ?-%pL-h#VDK*zxhf#AF>5*Dsqz$Ad4wJXM-(A1RM_Vbk}#R*L{9 z>4Ua7qD9*lz?Yn$Rs}JIaW%tcH6=$L2H_)^2|IC*n}g-VJH2=%Uy0GS;FP}B;l;(Q zUJ-SMl7sP24Np8d{lmn&D#vG+&OfZta}_znDZl3$67#UK4~=;oL8y~M`CL!qY}(0R zsg`2jR481io)BAG-0>3(zs6zO$*}d_?GBoe&WqVXl*32;E1=!*UBf~?;$L5iNCL_B z#E+GYze261>;rYSR2saD?fMhB9#X4QUB9?_xSElO)t%aN&#g;{ld+k%jVv z$U^F+HIK1ECsb0kq=<)*biv*Q&@s)Zmn_^pNfZT;hQD_$CA1>(E$Eq!S`cR1M-}YZ z+RUO#l56W4*4{^W#}K{yclKOSEnVH6SFzFH#5qSZD|J4_DK(FMvukWwXInq&$ZXJi z1~EJ}Y|Plp;3ajAQy)bjKA)r?zas9GcrWsn=Z4MulAn-MPbwKo!;M=+P_7pY8(4}? z-Z16PWWM?)=xP9>@jEu2=|RyeeaXP=>&B&fDfesBEfcXyndJGe6c3hLfRTW9y6JDmKAu0;kAv+ zl7=bM4}lJn^me(hb!T=h?$8Y>ZYNd&5B&BD_mVcNl+|V$Yqh@=-551@sN&X=7~ zyAY3uF9?B)ipx%MGaXqa%C-jrDMOOQaPMaDAdSu>_@h=XqjXgE1)cLVAvviSR*B7-qZ^%5HvFa@tchv62rKwP#zLX;+?2DWzHQb@ z^JHfM4^xkAK2vGh#607G60eHfZZG#lvr(5Hmp0T*^MZVhe{K0OMSp;Bzwv=wUb4*e zLFj40>ytux71<+{dF+`gK<5kXxvU(x^?3PoUzVEd=`G7^^({Pybalk6 zMvOn)MfJPnRU|2dZ0lRP@UE$7cv_k*5d-k?nPLhP_QE=iMou4lx*JEHN-=UO*v~sa zG1|Mm`Smdu6nge-c%r}M>@3ZtKFOY58rxL1583jJ5KxysKRy(UlMeCltWc00p^AiYDOq^G8p5nIAFyonfV&ksGvf$Lh?f!X>n6s4nXL`jB8f}lL4b|?foGP}mZB?<1 ziyCD-fGX5)m7i1RiprvowVe*aY3z``qlH9PGu7NbHI`?PK0j9Q4+q&y4vpBMCd*%J+urCe9 zebpyt`jEGMuzoQo(8x6*o*u*(%-n0Pm;vlj$9FWq!QoA@pX?Yi;*v=!2p~G0xhH)7 zDFDZ8Kog<#YKEhSdTldc8NRIgEw;e?NI$?4YM&1@d)6bss_11zgy)(q2Hx8pv83Ja*Nv{~Jzy&4NF z?&Yq1jD06h@g6uOsFJ<1|M+-O8-}u5DH>nija|c8WIhhs2%sB^s!JR;tN~oCD7A+ ziA9YgB&bjEY&K|eX3+~m2qF<2yk{u zY$S^#oDZ(LESDe5)uaj)j`oy!V1OatY=`*bQ3?;o6t>UCQ%KYxlg7fs(nn~Yur!Bhr`^%Vu zl*FT~*wN|@PT(d6gL57@-Hr>ZFd9u5l?P%B-it(|0tw?B7hqkb@SV|rc_GrJua4-$ z9vC^SeyTZPy`4Y)R`Wp`wGF;D@bqvHa%Hhn{i=s67WTbr7T+(QM7@U0fwQ&|vk-)H zvriQK8m9SvLh{G$_*VId2VApT2Yice1)al-1#TD&!El_%;w}y-ax z^n?rDV&Wn!RokmlP7SI~kGSW)#fD?+Q4B+rGMDlrI4`qhnCbq6oNd0$9nQxJ%K4W# zIMO>PnWLlgK-bUll&o@KxTbl+LRDT%{vmMZkf%BcrM{0hMo()crRI%}37{%*E2aeJ zLG)!&Ti%tGP2Z-PSI#Dy!&%WRy^9`eOwdkRw(u=MPf7daOp9KjGR$yq9%dJV&cICK zMZ&0JEi_FqYOx?GK@PNKQ=8MAc&>JfT=!R_j+mjLx~274<2mq`0)bLqG$skBdW<WbCp<4FFxMa|NU-zTao3$^`E^X=Plv(vUtL22Xg9KeZ3eP%~H8y)=5Qhb~d7iFB?Y$ zZE0*raD?$+^O$b+#@An6JiiPgk-`-m(_VCZ3%?kSdJB@g6&%AK+$uk&q&7zK=l+YY zPe4qAq=|*u(ZK9Z1Ip9oeSjgU*nczFPJCG5h1Tt!B7W}gy_c3Q0$ZIvey%2H&A>_X zl?G7M@tF5T4DaHuOmYFwleU5G13}m8Qr^0pAGZl9DjGY2e`-2S%q4iX7W4B`(P4Jv zWdC|NXaVz~T3AEq7iitv95pmZ_PhQf^sh-4Jv)AdchjkdF1tPpM_8|#7b9Gn%iI7tW!pyyYl|K`jjbPbS_jn6=Fa5$@b>Ry)#h)zF`<@4@-wdo(wDWA46OjS?}{d! zd>bY?cWl^RJ#9;_>x&SsW_jNB3wJRV+{OiV21sk98>VhAkn^pcoZ%lD^jk(OYfw3_ zo>$PDf{iQr1Y@|#JG$|mUV?JKMH@ey{$>*8&ENqq3m44*d0*q~{doTc41d+E$6b96 zc^6bjZ-EkV>$*#ML$7*)2Xc1PJsf0>x~4imKbm{ndQ@m3 zCw`^*^W_d*aVwv_Qq&5rc1DBhc zbxCR*>Ss??tmmEBYU-zTnX?WQrDa$Sm%Tg^E_*spQC78i_fk=FDF?8q#*`GbgL`OO z5x60#-oLTERpO)!InDvX!TF9s`0|;Lonih2+3^FSGaKhCOmzoC?nCL%;n&&u16=k^ zO$`Hij}G4pI`#&-qI7}&yRy$ZEjrKZsPM9djK0SJKr$0!KJ4bl>6FrQ&Y zyoM}XokJCyeoRbZF24SKfD)7a=Jk!lV=s_FkmIVU;)~RCZ4xWCOE09H`OyZowv4jugHxsL0=*1D9z(E^BmT$;9RM~6=SxAoDKP_aho|?t_;}LyaxT)9N}^R$1w->J>o!Q7c+yt zZ0Lu(is2l06~RWSFoGlA+DCJ-)~?!HJ0g6c)~vI0nAK)4Ic~tgmi@)bfv1f}#E+~n z{De5TT}@j>aXDRQ(oQXK5B4ia@@Y7i zNl9;5Kxeyyd+E|r`89&MEQ6g&Z=gJ)Ehwnx=C~;{%W1zm2GyD!naHebuvQB~#yu}#+M+J#Pd z_4?*6$3f|=D>qGt_gH>hdAl$>3VG++YOr6(a9#V+#~Q@5nt(sEBhzYt%+R&|(kwyr zh;a&DVLbuwO2AsLFtg0(+rBs~Sd0D%u}af+imUTFiZrO(QUzkTLR@77*F@y%fv@+? zt(f#lJnwN;!4Kqr$5s6@joE#qLqqYcBZDzVb2$XARxk5}wU&y?i5#6>`QkC(YR^;W zbVEo16PaEWp5vX3$RR>wt~aBShMa5v3WmT6XIZ@R%;Puoxvx}S*Kzmy<>8KuXgmbsB&NPss~q>;lR|B zH7T3UmGQOs4+ho39En-pT~gXRUHUvvjQVMFMwNM?E^;Opj+qC}o2ltWnWSify0a>f zOWu!Cqk(}i-_(?!kRjjrZ4}S0qh)y4U7?Kwde4EFp@X{URWae6GTg4{#@5TVc$vuy zYl{RMgQyAEO76AQK0?|ES~B;)7A;UnU7I?!*-98 z&l~d^%el!v-Rct9+0xbb;U5=3ectj)ucx_as+nz0egD=qnp+wWDw<#&9dpgAu6|WKZP_C_i4!MK-ml|{CnHTu%1uquo<$d~_wd>xU9 z5AZ=BX%HMDM!hfzAi>;hMpHq-4sI{9L46`^zKyTph)Yev$xlH*A$ zsW`;?OkL&`?g`DVMb8>f?}+$j1AQmy@Z77tHU#9-Y(ylFfLHnOb*}7pkL{~kb*%-B z8PfDR_Gak)CvWoqn5uSqmQrwmA!pcqS}+F1LQ`)~Wj)NLyIS_7_=micc!tHjF+5Wq z<0mH{;rgLy|h1d6lCzKcmmf^l~;L)G-ee?PUhDj%QBP_G-P9t2sYqA|N8jQ z5sh@7JGWOr*^*Fj1snWA_~U|NyfQ#VkBKXxaScgkJ7NQ+N69U@X0> z^(`XOUZlve`oC9m0SA^?iSDz0{SRs5>tD0|zepRu{CeuYjflJZd)uGD1?AVN_YX1; z#tdM?_ut#nUc4qR9s6<`+c?MO{wo>eE!gAF)8O>{e`WEK3A1BCJ&?0t7t-K( z`}(&e^2>O-ey$)Zp6Vhl z#6062-LFahr`xOb%->_KmS6V&+8*Ab$qj&!TUv-or?Ltyi2^evQ()1zTfdW~jR2B6 zQI@s+PjmeTuIC`}jK2p6hRY-Us*b%DKHY}+Leis#%e;o<9)A=dx}*ns~H86Y8qFWq2KyMYWrEVBNg7~&5Y zG3I9fqawV*r=oqQg~}(d_}^AlLvfyKgo9?E+%-4eD`;9cQy`sL@QxN^WR|%ZmuaG? z8`j|Hp5N7t%v!Bd<-a}5Ru(~Up zDO-M>_MCR&-3^xZO3Ie7anNNwsFNZkV8=y=su#}P(7#8s%h!?o`Kq9*wOYT^yuE|h=Md%Ole%i_-L5;tb@ng8HLWdt!vfGM+>ML zmQ!6~HL~6J41Fe_*{o5LBI5jyV@Q5CLc5_Ce?oMn^qovP=PTvA=mw%9YL`9Ob%T4h z$L%C~#oUw|b_eh&CruqSOnT?yHwza9Y19iXcxTpCEZ@R~R#A21hCMRBexcr=hlX=t z&r`aGXl4WLHqy@Jv}1~BDI89;3>OyeZB(4tde~Tzcwl_RsIw(3Uk$BYdcF1_WeYzg zpR3lt($BlBOPn!uK8V6;U610~bka_2M80~iuIdEq*OP0}h5aG_I7;^q*kj3&Q|An_lK}oeiDGwz?Fg{%ch&Qh*z5{jrXznySYA+q4Y*4>V!-VehTp zYgqi^mgFg@j1@d>h;s{fvO!6!_GNK>laj*oC3-P=%gQ0q>r)SQ1oB$EiEKoj?Ygxf z(36~RZoB1fNto*+)OXL!=dj5p^zeP+=U@gO-0$8}?jlPi-{szAgWL*vm;2}0?{6tX zZoIxxl=kQ~KS%CgK~-zsZUu^ZR^Cpu8EGY^W)-ZotY$B1H0Q(5?bd5pgu8|Bi-I|WfrfNHD;E$^d_Qv4OT(7Qb!t-(%$M(NQr3eM}>O3>a2>8 zBD{3h1*Hm6_fC}Y25in?#22dnvNscML%C`t35QD91m<<-U~nn;2}TuaX@p4Xp>Y6*}FGWK5Gz zSwrHFGR+6l_?FHB1QYBMdBVal?W<0_UM}C#pOi}JZi19GgY~-cyET4qX2jw@;v5(r z4!enWVs;cl=m2H{ctMS}N>Lg05V+Fbm%VtnB*S)_|jy#rDFtgthqykNEwl z&9C3R-R|QOhbHP)2~T9LLhrD*VW9GJG{jDJUD)P8gGXfm=+A7S(QAp)Oq=>`2o@kK*txEPtRS3jv352=u6Jp|c7VQhXSd?vn&{6F0mZ z&dbwnQAk6Lm5@bQwJlJVa><0B9(i!9EGT-iz%_DWOH%0zo+urRajf-;v?y=!vWe?H zNOl?6+5fy(DvA?zZ=F$N^kdy!X&drLca8rm~7;_smj9`-DPMIvR=W}hg z+l^T-Zr+2M<#pyWLHh@t4AkVs@AgJQmm^t$l%aCkopDCriKd0O^U2U=SKFGWWy<#P z-2DjKP!F^@s95th9_ciUDK4icklB zhH@|U@!HZ;LnBN~4BCG-J0x03_+n3v4ZC+qIOxI)Oct)`8=vi`c9K(wW)w}uczd^? z;nq3uyA6Wd`X7$W2MuN>$6k7g_gY2>4ywF)ls|O{4zOz*H-1IbSl}fPvs@`!uQ2{= zVP`5Xo1}h@SY|9QH@^O3(!iFo^3nuQ-CYYX{|&QD^#kc2D7~6^9yig|)+d5%iJSP= zHX^D+u1IFp13zd0zPzHcUzLd7>{81TXHh+x%Mv9r305`n4^<809v$`D>PG(P-w{w; zujd6ee%~hPc#CPAH0R@|M3b2UW;`V89!3SaB*sQM8#x~ZVldr*)f!6lO1b@LADk+c zH^8G{hp^RG()yP|&%fwRRC>%-G)sbFmnQ`&({oSfwG}+gFJ>!x7j}*>B&;oFB&6*V zzvNccM=VKZMp_~bs#_Gyti3}7t(y*Chs%O?vE=}k=vk4sQILphFaM6o z7R*M&GwDLOzF*epq=Gc#t66Ytp8(q#JM`pH8!pmcUCQAw{G*DX6TTjb6Ao0@S$y zh-)yn{9k2CO;VW>odJ}092s+FtuvVnf*PAkJNjQ+#0{xl(_{n5;Qu!M0o1;4FHj*2`0aAL81~VnJxSjg!{3rQ)_-v~g{UW~BWYlKSR0`}x5$y_lqbsKx z<@wPX9^)5+oz!D{wuG(5m65Yzhx~zFM?Icqd!)ZVaEz0)6&0H(7cXM`?Rzr_20hyi z>8>nQGaSD0k#jxIzOQ<8d%JnQWi2h1dNQcYi_5mP_+Z>A&p~oNR6~CThH7UjUmj1> zJyR&`C&*h8!W=O?$2gx>PjnWuSQAF&K=lkeLKva{xF_bVDZT{D?Ph%GWt84OFq$vJ zd;B8l|23GV-)Fx&k|u#}z4iCIuWdHlyN3@hNd}0f;#S;v^`3{IN*NWKv1=2fRmOre z`pCYu;8w9Lkc|X-(HD23H0%2FR(O{ORo)haO6Lp;bAYyF46@<SvHa7Z_AqP>$?h>`e=zdc4qi$%3hiI;9+}6=oAwkHHSv9adz>SO?Zzik0Rnj| z48xZV0TMR0JY+?5@D0$l2)TPnAn5qn{0GebM^OAJQskTPP$^_fvUGhF&iilNx7@k}`b-Vxej+;UliF!shwa7#}M&fCC@^m}WC zkj~hsMb9j)@cF9>@eMP7OH(ZpKF-|M^FV;bVT9#XQFI?C*-mHaI2Y<|$-?zT^s8GW z1ZYA+fR`4|qVwEQ+d1GLwi13t&^ik!a?y(pz_)wCgU$Dw{qA01KO zpQm73=&_z}R$;zh0#kzJ7F&;)X&mvU22Nt-0F^b&MQQ3xQ?yR?Lk^cKKvql1W)P!%v>Xd=A@l@h5DLqG^cr1ugabl(wl?d$CG zoqfLd$M<7@Sn9~enj_PmPuA>swc7`i z7^7vF4?y8CBexgsMMj?ZrKszmx{1u5@b* z;qu#y&3tXPVz&z*Y~`pW=f+1WFjS^~j{mDa^?5b*F;q0-1B(EhYOVZ%Bah}!%i<+3 z=!;S=hPN&6|2J%So|^gl`XB)f%$I)e0a-b*Af7g51IE)Kj1TE*(+p zaHr0k_=EUB+3xTYa2<7g1wV&DIs`z(ewf3S^{|Z76{`#N1LUr58QgH;tpN7_tDgAHIo3l9HL!aL7 zeO22v8;bWeiux{`V@H|{3&+wC!!w0virt=4T1v!3wc6l?lZDM~S8XZU5^D`FB?~V? za^RSDxWMPUA%z4rK0W+(?fLYQ8+%S`Sg^pQp;1ccB&Vrqxu;?g>Ekz6kQOZ&LA?}r zH(?P^PFNMYYRuSXk_r0S~*~Y75;n5D-tA(T-L;QNWYr)9I!hGe3p{1IH z4_<98^T@+9^(?%QBPf(RCW^-AJaDArw82+nX^^!?6zJ*2bwCr~@9@@=o}C|wkDjS0wZjTxT$LGweK>O9o*D>&H4(l;Fv$T_aNT zwV&8RXtgl=MBVYQF!Il}`~vwD*lVg&Pg)y>r(CPQuYd3_jciy>n-C)qaKy_U0TIJI zrPsb47QfQQeH>?wY)4CPc`OISOEt6V%A&+e`_1zFtpt$MgL`Gv$C^> zvcox|w3kj#RC2UwU?28IgH=LUvEhbwU{(sZbPc52?5$mn)lDEmHn6>S?!_&X{xOhD z2dr~wfe2aUnFGU>bKr~Vo{_PN?OmNX3kw3GZe$`Fi*ri#&#*E2^f><*&xKS&H6WS2~tt)ZXM#K8Tc8ZhogZ%vzw_v_E$& zceUPTZF0BEU;#Cv=?9!K17?zQW0= zdNZJ`uQ~=wPe6?JOttAG`{j!ad5a8Hi$->N%fR3a2#SpW7Dl-OK`~!1rlUs9PAdmy6HHXnvO*+uM)#X0LZk_Q~inM0Kp*Uebo`DGqo^GjOw%;qh)WrXIE57YHpk#xhSC z;x-7R`LOlEv#Pn;<&`dN^)qW~%Dzi}mgk+;XOlLZ%e8B{Qvwh*Ql4Y;--9Ym19`vA z!MqKwg?|$+?_}f}{*t)@4Su^H>nyj#*di;tdvBLwU?9{pxTfqMGE%CQK14zF%>_pl zZ|kk!rp)NZ-0vHWg={i=wo}^e+pQISiNU#Rcy%q!ax(sE8=-XFwbz%FS%nJ(J!&HSKdo=((r=u3*@*&IV>pb&KqUb()RUt;xn9_&HLGiD@pA z)-ppmokEfuwhhA#4aS5a`nb$KPuV(aM5DGu00OyH!xf8u*sIO^v>7V6Pc%iw)hO(V zelpp_o(z7h7 zjf`)~}1lluW0rV{gN06bp2>&nrcE4z5tkt^hM(hpAs1BY~8 zt|dCsG`XeW{Zt!qv|f1)m;Na|8)sbwC^x~GJxHaq>CN$49Xl|ez7dxCkWc6KwkKpP z!>7=SqN$DLV@b)A806RW@lCA!Qi*`DthOKFd`B5r2B+neHBqukpgfHyf%#5zm?K9* z4uHIDs>#NB50nj50D1N<$f-Pch)+Keq*a2tUh+ctH=7#0Ku9s~N}A=Nwx*E6+=0w( zM+4yO@I!S3JnDbBr*ORxYR zQbka-vY4c_Vp|6!3uBJ~biN1RTjS)VM<*UAwq^rd`!6+5*YvLm2gE&^-}E@9zdagR z&N&=>-GJvF0|mf;YhB3#SaekI10WE1NeAO!g6{rX63ai`!XJUzfu0#q`~EzOg=!s6 z9mlBTK9EuSU-*6?N9Ewm!IJ<$`Xer;{+&itXH4)U>ITpY?;T~L?ty)i-`HgH~O}F?1Sj!8{9Ce9CoB`Z!ST^xJsO*9xRW9p&`8Cwjyq{@pzP zagU!m%>ZrwB<9x6e==fAagtVOJl5f{wg07$%?jw#5e~Gp{4X9@+aLT%x%>F1gTSLl zU~MA!k-Ew_cS`a^MBWkmM_}oZlLr5@(8*TMdi}dD3W6Shii79;oAYN_!Ow};HK2iLzjtVz_xQWu)aAiM z*m`T%ip*TgIv1yRo$EsbAvU=DTBoKc<4{3|pGJ3C-8kG?#nMDd+j3!eUuLX}Ghdk~ zVj8wj^c<^H$Y8Hl@(IfLl3`dgqC%kl`~N>nrOTO}+{G7>7d0tpMeh12QfF6HK*Os> z7pG8e?+U##-+`fi{;MCLI3%f^=)GVd5MJWygRfT@@$DO*rJN;j(PC<5ddOa*Fqd-J zDxR-(I`$nN+B+Q;g7?)9oXHabIW7EW-vURG>fuloI26!>F}al#%c%5_ZT6TIrFkzi zX?;&}NcUOU*qzvOo&=}Wke$28{`{9QdHeX{p3?eNOugj9 zFB;RemYpBFmcst@@)DXGwHQNlp;WGtqLi+9MwZxPs}vX zzOp0f8x?!bj?D1P^GANJukH472z2H6OhzucqYn;MEDEq8#Wt$~+`poxJH2b{j=;gb zdl*V_ltlUi7;Aox6A2k_WIfU5f{UmQi}C-y$7c3+p6Kq{$!w^%stYP}msf%J@h-_rRI5)4 zpYw2hPUL=xWYNzI=ZmLIfkWQx)= zoSYn1k~F(!rArfRJbXOVuJ{D;EvB5Mvz5>YrYmHHEn$5649zXVK(Zs7X1?u*>ix@Ww##5<7JpAt4^!*+*5$K`h7VhjsvVgpV6XXM*Qn?qb~I6N=qnu)kQg^)2Q1H%Xe!oWa+WM>K|Rwq{j`w~fg`7G{K`Sg;PrTTO0%}l`J5Km}jsPN|w z-bSp(eRB7E=nBCBt`PAQ5`(Y}TCDe(J zDK5Pz5K}#3=;d8^FdEG5DM^%1#F8D$p^y;y_^OJJVYc=2_?xuS!!?nre zPInjbyg2EK1rM^ul3zim0B1YHAU2sE;Ko7}Q}OdK!628aKe1u5Ei02!-lJ=H9`;vY zTvb6`9qrW5=~;`|VqdOYe{u(8Y2o~+!P1haPkfEI(+#pnZ${%h8imfBAEc}KE2rir zAUos>fBpb6c*=nwMm{0Qe(^HOCC_d^ff?nU*HrVlRAl8x0iZgR)3wiMswhgwoVAI? zY^7t<@Vv1W@@_BXeQE=7!-UUUyp<&8`IRz7$a4wpq%6n<8xlrJdCw%sbBME;dko66 zl^>r_szgEuy^Ae0#AIxdTF<^7B@NMU=e^a-t^{PLzH%Ha@_qz z^C7=TVR_#T6f8FNyFz9l`zJhXf6;X3zT5V4+e^phPUipE6W_kSFRIj&CJl4WeKA>C zHej_7rI#^?a^b|9dBu>lyVp0AxIE<%0%|b}Mrz1)HK7e#iMg%0O!`g;WQY@@5Sti) z>xFveAw=4rk(bRh%L}%I(R0FxjV&RHbx^|gr1^2(pQin34(0PYyM#W4be)N$+!>C` zNv)&i^CD*ZMzb*%)vLFA^cT|Y`ZzyWs4(M1c`{CoCEa>K6C^w>%FXA zInE97xnQ`PTf3>KXzFwC`>Y8hnPHqXz4FKoFHrLU@Mn?(VY2aB;}o1 z{$;7;8*#5ij&$W0&0FT+BEH(ub`>SZyhYM%FxRP)v98V#IBKMom z5do1q4@*Je*$D!6ss?5H!(F))QAt+-F9EPU0r-YqZ+|!jxC$+;!i~|jaaHcXBWRu~ zmIlRY-!_ex9B=vZJXF)Bs`>I@zG=n|FB<|mv${t~j2MCpOr5A5!7n?ETNjU$kKuLa zEJ>nQZ!TMk7$_at*Ijh#UeGaA&?eOP`MDOuClm-=nYtkBe12YCLrZs9qKQ%}3~YcV zqs0`b3yfJ<`OpkTmHxnoGam+|GIZIn^Lbw`ef&z-29mg5QVrz`N(DOrD!ZhZ3d#t< zYfFffK$ntwNs7O?*0sGz`C}uC4r_Sn;^U^JdxctgJ4O^-mXxCZ(R}ni?EoO17GL!BOYY#n|w-pYx1p6;hh)nnX7|tJHb>I*L z3YrIi8{F_8@Aw0^pF_$H2fp*v>HZ{5J6^tT&cni%Qw*JkpJ}4u4N3vQP#68uG6R| zJChU|P&LWXEz15CRF##hOxTjH0No65V{I3{^gm7TpZD17660+;I+NAEek2#ganYWP zpu%Tx?}zOL51#_J>u`eM=%?@;G%e48Tj}A*!xDed9Pma!T=e0*Z@{twT#b&BCdqEDKI*0skh}8>4Z%i!~kk=^L}sng3~Z)Fv49N(m_3a(vBz=h*Va#qRmPPe>`_e zsrciHvH!4BLiqy0}VC| zkC8{%3~|-2ejf|@9LiT$FaItIS?LSyDO+pEy;w#xkP=cfV&L6SqgVufvysmQ|}d=G_|9;!T#V_u0M9 z6rmYRGHO13rC-z;6fq=%OXrEwfQaPauI%RdW$(R>SbN?G)&r`(tgi1o_$q3&krnXr)#*#p?QXKs6Sb7U`7LQS#BN<;*?#+^S-p8{OAQ)< zcK4|((rPh?J(ePnmEmYD0GbE;u2D+rmmcT#JYc^Axltv=f9ew6QQ*x#A|Y$6LX58q zrrYnnwr-jgnhsGDu;515;4!PcJW`vJ$;ECUt+Uy=FKlBAy}lbW(Wtk}Q9s|bs}HC5V#=5*`RQ7l(rm^=kr5*@}+mbwNkO z$AXTm@;kjFw@!+b3X6AuQ1C|`2b2&Y2+xOWkDiD}e8vEUct=Fol~TcvStmgr<(Joa zXJ;O!iuNk>G2k2~cY`Tz6$H|Xhe1kkd!~TXm_=4>xt?0$!(iuyr6<-C_)-}DCBMZq zXcx3-<&0K{$+Zw-HcPqM;q88eRhv-9G5M;=YuPDj$Wmyo){l!&j>5LBxyDUvMYqhU zdcx3p;w@%ARpSJ>3e_3IMpMxb@|HFMW?ZbaD&)Vb~PvpufRiGj+-#9EBQU0R5@Cvv2mJ z-LZ)eSyvZJY=*pJg`QVT`782_oHZBTG=q@Pa@t7TNHQ7t%LpwhNH?xI__!yxEa)s~ zOAp0_Ev46e4-r}^W;O3Cg)nurScGo~Ozo@(&5ZAeeUOC*P0q)>II`96GTG{|ya-nF zFsrlO;Ad*l{TEG}+E&PqP)TMFC6$_LF7Es)I8?9RAX7s3XKyu+i)n|0c^449@VO{r z&3U}OU0s5ymU14Cn(MbzsZ-dmls*ai9}_WZ*@&zC#Tho4AR69Bsc9;zp)`fz!QVA< zBbJjY$}Uz1Me^cfPaO-dPz6%d6wCuwi8zo@73zn3#Z1@@oPe7e0j$jqH+LF75K5K# z37w~CXLBC6D4d##8-KX9DRPR~UR9VqKZRGUTHfK8SLmhq1bdb*7sZk*_xarSYNYV6 zRW&p+tthocZfZB!bd;32IM~nalVMWNK&XtPC{XIP-nCfpynkALBKAQ55K@l%H10<# zfwofV@~qM{9+AE*1Abxc49)yUcZY!{Y&ky-{6Zpj&yBZ&u8p?t+Vsede2{i#4JZx= zi{=Q$$Bg|<%e~hD3%+RX?lKveE13nPjqaS-A$jhL#y?N{U$@U5sP1g#3@(OXrxk<) zb&{(+*@ZnJ@9>=rKbM8zdUP3oCp^;QGE^IG!E{5|9u4gH~ch|GoB z?Ih8+K}Qm8ItgpBqP|J))w%ohMy^HNU-0|fK^7k}uJybd@~z3#-P|cwmE(3V{!DV+ z2-qAQH1Pud9-FavOFCQ35F@AVT=VvVd(0cvEp$-5eLZcmn_ zGahq`sbgsYK~Tf4`cG@x+rIpAV_ch!9Xo8U@h*r{S2;a-B)^s+hm2oIeCL= zV%c!t(8?{+ZM#;*Lz`&qJ>Pd0KEDuw)S>uLoHM2nt?uyKVjmorwTJshDl#bf6jo1{ z)e+h;=4Cie&bIMosi^^A|K~K0_QAlK!b+smwZe zRMJZU^7PP`L76rXZUw|_A0*GRgSLXl%N|)?Ezd#lAAE$whOcFCYUoUTUr0(kN%0p= z4o)K^oU$J4*oncWT5~%6wc$3Lo7*YAe!I9<y|$tZOtf+CD81u^1X5EUf<&VarlR$xn4dVZcwbkVj*w=*{Nf@zOZWu8fX=2?Zt zUXg<~z;B85%Pas7|Exr=D-U=*<~@%%9&gfYGcqP(6vd${Q>M<#D-LKLR4jP{bC~8M z4UHl`JG}kL*2oR+K73&VVKHZ4Z%|TeS{*3WTmXvvG2*a~XJq%1QnwS%s$X4DY3bb5!yR)m!Pn;Gg;k z2<-+BfpPdVb^HAhI7Qt7XMjHZ5q0N)hYhr7muP6NQIEm3|CauIxQrSb@He{!Za#NL z8PHlZ1qW}(*iG8xCthyWYj_h86JWJ9oAh$r{SlaKhOt2W3s1q3n_&Nc87J*~8LS`r zvDyE`0K)U9Rzs%743u9|egsv(Ur48Mpiir$*QG0`qjG!xVWHxCT>585_54^&?;86|)i zDh3*TV5AS?tPbV9&{OVHVFGbfdLRh&?M-&#D<+Uqbu65kYZcBQ>Bww-D=&_j;g&ap zvbmm<4tL%RSJ`aF(}@yt(A7>?84ES8IOk+IKgx-*I9^0vnZW10OHyvk6h&2A7c*CX zwuBgTe+VcF|$&~9%Qr?gx(m0E!a!STrSi{f1xV+sy zWe4u$Pci(||Do>g#bR9&SMk6Kr|+6c6{=XPo{`&na=&dRx}KH5DGAM-`9)({&oOIa zQ_0=8Ye3@H)~)Eb0t(}(k{{8`8HIZ?&Lq8d3+wd!0d{-THaSQ zQ=PB-%qKs525p0<59}(KafOz;{Gz$PV#?m6f+j^z(&;cja;34_hu!ZLZ zGsf*C;r^l`jAN#Rq7xq36aXQ7Ukd88bSLffEsp+NaQzE7L2LC^3$1rF1&+il7A90; zt1=3)2%9hanRC^xpVJDx*827u<~}1|Y?T&4eX6$m`1@YV8A{DvcVe25t&TFv8Y(Gp zd2i8M=hsp#1f6PaXzC$+AhO~WE%MeIyUVn@153pWf_IgJQUej2vteQL=%UKzJ9j-pJURTN;%MWk4}Kp`U4srcbeEonhqcKnwOMaJh6 z3+%D<_j`09*ur(Zxo%~tuY}T}{1xoR>AYkS&=^AV4nvGA zYjlty4k>QF(&^axmFEpMOhI}Dw|_Xw7Na^0eKUN#U1O%;-#+NXw~qchQXp; zbD}NVtYG=<2o!|0)MZpWNcw*B*fA39Idg|CsjBdeNcv!wyP+JwQLF6?&bV zv*CBDC87%b_-9IB)KM5SKOHTcjye6jAq!mbO96}r9ae>XG2x&nI&H{VUgj^Yc-L7M zG6cDp7GKq;y)CF>KCq`GkVViI?odiWS`t_lmV}fPn_>ZqbCrMRiDrEK?ri`ahTZkw%1v7 zR8P}uC!T!Yf9b4bwEcuoHCZ!8nrN+Qh2lYyi_rcnWoX}7lTFl)dnW{X2Su(~VjkI) zv+JKo4%-(9BU{hS@o!6G-*{s0_OZ18aB<(ss<+(-!=(r zF+qzZkqx)wiLBp2 zQ`qKzIO&do`Ge-jyN%wbZo9{ zAPX~>CV=LL`)5fvbYsJ2f-2R#`nW&+SRD~Lh1A^mS+Za09z2+|Ejb_SrL2h4Aj}X} z%LbxXE+R7CjX;Y+$t~sYi0|O}4F)s)44p97SW7L@UZvX;1win~`<*K#WYhfpFPbd; zFPe^mUAfq8NdFX)9#ok7_4~N|key`4*`cb8;#mvSOjP%FTWYG!_?AgmLuf@@k%9%I z-(uOmoA2=AtV!`XEsH^;(xuS~{~F%h-1uVOoc+v)IdE|UPub*+8z2I#54JaKKQTM9 zf*jrwc1DRxw+3n!2Wpi<6iXqH5%C#D2qdaLwvmBVb;=~Fz1}XDqZYt=f9AyGq<}AD z$-d!4qvYV7oISZ&u7Yxi%X0AXNYoAzJ;`5|yt3)NRJX^O(H~0u;&6c+Xni9$BZ%V{ zjb`yP%nH4sc9dWya|m2|gY3V}w-&0ot^X}uiIr?SuwOMoxSKw_%CjCB=n%PRI8*?` zl@E#saG8o$*fbj|Y*#AG>HLhEbYqREVmm;c6ZY;te@Ira;2fWM3+eFp)TLBA zf$~`cztd$KNmg_8)!d}^`ZaMmG=k4S$|)s4_G-~pn<=j1HTf6c`$Q;jeOV@ah`qgI z5PzrYg5aM+39V~B+NFk?Ju)T}b&l;Ipbz+Jjb|+Oy_r#Pahz{v%UjkSi1n?I#v#2G zk5o0Lx}@@-X%YH?e@*~>T?40p0eOC5<8RhhJs7k@8vl)CUy?V$TudLr$XH|J*_1KK z5hMOLM~4@9rVh#iHhRnOwLux}2x)o)K+fU#X5yJKen3&rEv+eDOTR#nt=%oD%;})a zEnl_Vy)e?_Grpj0i0WM{Mkoa+U04t9!yuabhTeAF*Y65!Nlvsw+p%y=uv_aGWinVj zO-#;YGL$t)Yk8?-^}>$b^RCWO72A7k2_T>jnDn35H%in8_3Lw79c!yLQuLlS4)g6W zPoupx3*g+!xHMh*6J)H7&Uj-l#hx+9pG2)`^n%wSCYFP-8J4+|ixbz*EqZN>Ltqf0|J2n?GNnBB8)u*{}lv-qGym|LAaBrbGUc=#v zAP4_fdb!DO|Ez(VfJ<}0bph7yHxDKT)>nU~9|2 z2=%2NW5}VQwh^d<<=8#iIQB3-;GA_2WL~j@7J!Q2AVA>eg1?F7%p7HnkKg$dqc3+} z!Nz>e}Fc8?v@VCHasu1kowm+`#8~o&?cT>+Uen4v6$~Z%^bK z8(;n&z%U`EQ!NEqa9COI{l7kHq5aq921#$ zjix5dkrl+X&ZOt={|pey^i;~4kSn$fEw*bIo|{0YY-~Iz7*JeXaoZos?pVZ3O@gc( zG5_+BouYcCr7Zk7NeM6G4YenBXS{HveO>d9yyve|BDyf_5l$!A^Rh&{X%FwgPXxC` zRGrRA<`=MqwRc_keyT@?60c%mU6iei&N84{-@Yykaw3{hMGd9eNIZt`>*g;Su^(-wl^glE56PLZ#&1I!U-m0z z>D}VP$!eDy23>{3NL*$pVaJ)puq4wii_N~d>J1EPwY}P*KP0K$w0y$>tq^y1ROxzy zeZ41}Z%TTDt+}@SroRTi+5UY9f7m0tDl$!qiLz=Lbn}BRoM~EBiGGXI=I+^0*O2tH(dUh4A z*^?f_@V<(rt0@Gzjt;Gq4t)8P>^8cf*;8S4gHt>?SICujzHyV7G!fkDTabT#$=Hyi zR=J!`qukCY**_3zT*+4QgY*-N+$v;h4&{XRmgm;+@K(T0sM0kaF_gO*CPg3xlg1-! zw>EWaTk(kltG`7N&b({ZTJ*`YzRpPQC@qJWcKo8v{EqkXVv6Ni6;`tjmkf1(-r~%B zU(-(SVG+!v)Q9+I3gxT#(aD(fJ?)Thb^7cV(9 z+&z6^7V;Q|X~+!pFO=HA+azAbGd#UP(DLMI6qo40RP{&3e*q2OaI~$Fr$I*joSRk^ zw2U;owbIg_T7OT9{Y$xib8=Z!b;P-A*Pr zenzdBPN02#Jhi{MBkhQa!W~|*yus2*q+NNf3X-cs!B701-Cdt=k`x@$udYuqcer(M z*(~PWct&oCL(1FezxtZW72VrmWLS{cc(94(bIbc2!arXE+`}Hq26Rr90h07AE2^WP zkvdhLAE@@BvTf>(ud>|`o+H#GtHZSq0arBJ?;&F<^XCbN~!qN`-iqQXg{CO>4Z!LMU`6!>1ivdp+;rWKGK98z#(yJMeq{!oAju1#|&rb zC9=SsoWLopS&0@sdoD}IxudtPRy_-qqymJGfVO++ism5+m79kaLocFsN0QIZP4$k< zQ0|8ay0WBy?fk=w_<`)0fiyIu15!k7FBK30PDGeHtggfRfROxl zkHh<$q^Is#yk1S&mn`t@PIE**^Jt=7&Q0d`2b2EW&5=4TE)(CX*-**z`@!l}{M=b6 zKi^P}MgWCOI6Nl8AC>|7Jn$2}ed6`Mo#Q{`#GnB(kma%%kY`pG0Jm1^IC@V1GRq&) z-68&CH*eiEV#v99j0U`oG!GqP0)SLs7LeGKv^+wC`#F6oD{FbGc6Viy=!fMwk9u#Qs zyY#3;gNd2#lG0)?HRm52_@cpKg}Mf2!bRB#7a8F?ODVw(WxGy>iK5JEoXO12j1Rp~ zr}7ZGSw1gjYh9JgQ2z(=6~Vf$GkCqVpLlVqq5v6tTP{OnjS9#9t~l|Ze(Z>*efQ{f zpMB)HDqa(jlaV_5pTrym`GxISiz1SX6JddmiN z?{J95Z)r+(GGZN8w9PI0d}MqSeQ#`jmp`hJMr3b}{Odu9i02Wb>UQBX zH}X0*KqkB3rFc-)x)hdm;t5cBHBoC^*G`H*5fJ9(fjt4|uU$Lw=*dj1y3#y1tcLt< zfeTihEu~nWOU`wB0yD?r!&9t={X+Jz>A}Bfu8)P<0)x=h744mRQ=!E1DE^Ru!iIK@ z$&=}J-?$Q^FzR7K;*U>VI((-f;;{IME11`p#IMn5TT8U%-@O(F-n2ruXU-;C-meHc z(#KW>yb;WE4-vnw%u`Zp@kv}~y5wOCAI3AL3p5w*q87>iXlowx$|vOk9&FWF#5l^eABEvf#2`k{az4s9rO-3vv+HvF{5;m);fqOS z4aqbi^1^lf!cflcb=jGy%i97`m&YdBW9hG>N^Og-8|6#4Cz6>94-yC!;}|$sOT`$X z7Cm%fL@@@|4(#Q1{G^ggybE@EL|Zz9ixfdRE=n|Vc`I~x9xI%ljYZUWsM)Fw_8FD= zhcd0CLo|(@)5c=j@?#~rCs#djF9E90(JwNthWz3w+=G{0B2Dc8pk;@TW();$>(t5NeXm*OcKIY{2qg-i#qo8RZ0 zc)+ZaqZ-Hlj6rp*9%c9T;^oBbY8{{%v&u3BF_R}$M~%Jy0gTx>c|Y1!fs7vDutg1_ z1Q|Wx00_u{m1y^mg7!VSwb)!6^!D+mpO7JE{o4rZAQsao427NKac|n3Gjlge-l)%h zF0LdLmvuGBqGz8n|7rIZO>;_U*Q}vn_=bJvF{Rpub_4MZ1-#ROS(;s+X(+oOZyz*w zy$c%tLo~@PfRs9p{O*?qA-yfz@kcAZ3g4c(gVYSvk9rnmGm;OiJ@E1+4|~JqG7zU4 z2)Qo0letC6?^rGHwa;%pqKgy3RtUVImngjF2I&TmF-=5DU0tzVj#~ zk|;UrQ28ptA&QqZEG8`c`|gN*h>~mv$x=d#0*&YT(rO?3J(zBMEV!W=>f8N=@Z4eq z2+X#KNk^5GYkT#9hiX0}Juxvk**{eiJLX^gsdT^!JLXy4YG#ULigpPc@G7)cTpeQ4 zrv@5FbxoZiy&|EViXMhV!TsNCXruR2T>>;*V&lf&fy@Zwxx&>AlUm0CdH0{0uJLaR z$A&o5_d~O%dnN={`YOhM(TFMs*o||jGqf=k2?q*3^<*mz-yJx-d0iPD`}n zrtNn#xsQbn5XGVzc)zS8U@H*&asQ!25?}BJTc;`D=jIo5Hdt*fIm$Xg_u8!eOGx9x z+toor(#e2=MAYTj)Z#M7;}(M+Oq;Q!5MFlHeDgvzSGMPFd*@H}HK7E3^&v#YnNRBr z%Q4v&+dOi!vC8dRA-mFEuJu*btd!kTA!QFkDEU_@b#ZgS#rqRe)zho^cT)@XR?~{j zb(It13s=o~$6Qut6o(}We?lu2u~)tjvDGnEnaUcEr%udDxMp3&+sfT@Es1Xp-mlMiQTA zRKt}U?J!s*oqE1FW_Lt)4aY!CgIkCuky^}rdLJT+;*#h!=Udj;zQ%IT53tof4d`{Vbp{XA2rL32`@zM)oXVasEc%P|I^- zrhN@}H*in)4PVX51$9LCS6bSV8wVw#4SL^Ni;xy#Oc1F=h2k$7Q|)uNqo0p<0ht|e zbd7ZY9djyVm83$}eyaW0oB2gU5S_8&gId77%rsM3G78#l8G^<%m=@XvrQffb3MVVq z>ne6(7p|*cm*s_B0g3d$LJY=J!h5eN2LM(vC@<_h@Uy?ndp`O`g!mQ8sXrEC*TwH# zIwCG~J{o+4UU{;b z6CyH;&H8w{~PgKR6_50D~#RleEHHtA|O)LohCNk zm;#Ovqc{Mf^Q%oVVrn%|sZ()_z}`&$-C zy?a_O=3~@qDK#VY+}(c|Gl3R4=!qW#83a_5h)YzY3f?_{p3Qtn1+>Je+4VYkaYt#K z^#8iTbPL4OvojbnSc8Ci2IYH3FZ4lFCrZ!g1=Bg53-@$@H$*stH^VK^I={)_{q=^X zin;P9?|(4g1m0NOx3@1gyKETMgcfdzcF%97T_F8vSL}XkBNC{FEswzUiHv>j7042S z=MTZGxB_b5uh#vdi7wSQPc;?_bS$!l%OfRl&ST>N(y0@b98+R|UxnI}=B;YYAnp}d zco*6X8GXA<^fZnrz2I1Fu#L7G`e1D0QE{zQYu1`~V`C{q)bPmqgPQPv2d{<@5b zPYTLFYVr=svBSQc!8^*u*o5T$?Dx_=gLwragFm&2N>TSSWZ}=4d}ztYsQk$qeU<$| zUwC-7%yo@9;4L5(*A3{*eR-)VNQIp*ty)s#+<|BSJkMP1cWE&$*rWeN)9AU%?mgeL zl=g6MC~lYVq*bP6X*Z)XkuWo)#U(nN=D4Z@({>umZ!Uy5!3KKMT_7X~l#&Tk47d^9 zrK|j@&TO&<^0=vLKpw{NV(LcxX(0XVI@4%0*AH1RdWtcy8Mq?b!G8vFL*%-)wa_(! zAkVdzyu5;0bOU#ctW2!IXUjiyP&&XFz*djx(9v6bY6MOoRH?Oi{LsufC~EIElBIRj zA&OG5;SEqic|mQ9=U!2yYmCYAQYQDi$!*`AVcuHLm%~c!3~qRcXfh|4MIs=5hKXN$ zL?ey~J1H3TNE~xSJR;&GulV&Fg@WoQzQi zfr{@-9;RGl$ApGp^2w1f!~P3}KY2gY+^(?SwMqS=%QCw^!BBG*>7`;(l@Z0|-xPx0 z4lXns&VqOLk4Usg5Ea&SO5HReS_)Ozr~%~Un&Prk!;Gu1Q&mbxK574gBF{cvl5CZ( zxNrH6R2ckvf?u)LyJ^i2LD0a9?8iDX7;Y>LB+snq%6O|t`i~?{VmA39?uhFY{VEi0Cxat z^1iWE6eYLRn|V+1HhEzSYq>nASy=E88H8{v-xf7OVKo(?e1+NBvvnF7J@u*OqiX%R zcF^htRDeO~ryAGT1>?%-5Z7YIqAv9ipUZPy+)kT|mXZB{JPTiJ$^h=c|D*X9C7pgHx2jUyqP0F zUo`__)(>mA4;Iw?Mb%n;Es)a(Nkj&AHNZ*sR7ZoxH>AS)@%s-cwxRDG}Klx$FD>hiO$|%1Q1Gjj-+&hI%>>X5>W{AEH%trq8 zK{%On`|i&A>HO98Ox-1aZH4_Kbo&>>8x=Fmv9g)hXBO(_94K8GXE}Sl+3;}3>UA4C zMV+}}O6QTgxteXdPIFoVxl7vlUfxRYW)dVPDE;!mEnQBQS-3~T6 z*n%%}UY9$tTeR726=`uhC{bdMe@wVmzSd2A%MjRQ=mIy>{t~JRuajZYJ>0#~W6szC z6>6VgZ8h*g?8f#Ka1+s<`#fK=E-n0I|NF>TpVjjfQpG2~rEh`7eoGr_h^Sf+F7Lp7 zI5yftv3iJN)2F0m7{B7vK$gBL>=;rBTgWWe3*g22kQHan&o9P3F$sV2e96D;`@-rX zr8dn}v*^@TsVl@pKpj`%;t=*+#0)(Iq51>13lEf<4`fB~z~2oqR9I%rVBe2!7fTCR zu=IN_ROQ>?g4W-S;}W+N2x768cNUv(`U_4P|0bSdKZetVG8}ZSe%jK>1P?I_EdVq*Svw&|i9PzxpzGJ1NCU%pMgU-peolQiX0v03(?5+?ZWI?JIRh-Q*R@jq^V8c@Fr@Jy%iyr zlDAC6YqhRxJ42t$C>aI#<{?<{FOz@xYjhY?kx6E3!b)ZBIm)md;oJ|BzGsxe=HU;~ z4c0~J1R@kmxkdC-lZnPM$}`nkxwR1e8($lyCPB#;&{I0RI^z zoTUs=mO@r~_GImPKm4NEEex^<3qYF(4OjtxUs=3|M58!WzV;GWriHUx2cirm9l}@G zA0)s7yYH)bzB15JRn8a%?rHkQuMF-UrGX<=lc`n4yNk!Cx1r!&`c9_SiJ@@GVr0ms zJfvlB+jjK-Q1{;PZ0`O4cytdfsX{k|r)ChX4mRKeBXeo-Ks7+|KW^vGpSW#;4 z5qlgpf+QTfcI~})jQ-xybI$L+e~fA2mT*UHdmM+g2>3z!%Z@yoKx~H^W0K6yz zW`{7WYnqfvPnE$O3yloJ@08tyoC$1cB2_L=c7wVc2~IQ4If$Wg|0Zv<8o8*w?-5FZ zx7KG!n37EE@2;>F)d^$-+ejhiWGA`iPya@^bYbIv>C{eo-Y3aWWHMkD(l|>p)H)d? z{Q5t(wSBcf_3xwr3kb46`}WtFtOU2i<(9=$O~NymOOz5!taZ2#?gxG?`xrnaoDIC^B+T z;1uQ>=;Z#7V_l%T2CF5Of!r*D*PrOy+(7I>vhjm203(A~sQ+J7ap(1IhM=QOflrXe z)6c-mJuOfD=+}F$@wNWUU#}nFVVY+O5hw3BrKP+U4XKJtaw9qW0sIi?YQ2;{xmFrr zGoX)B0SfBbvvP21IGn^Jg+o9g_iGbrM@GbTKqWm(C2XaofRR&&XgE`SIeSCh`mO?o zQsx|n`bZ0T72Gs4i0pK9mLddmmT4dHZ+L z9}&&!-x!Z}8p|RBkIaM<2ZHhD!>Tn$6%X{WE1nEvIx*cP3j&3!@VX8iM08eMD{z=VfbsXaN|rvnl5I3CseqZu28Hm zCv&X-1x}^M___8=?Z5MI2)(a&;9p*iW0QPnCFVF?qDd>>T#CsRmy>hDw_cxsJ8}e} z;#rui4*#$%B)ZSDr;oidVo(*z}Eq-9y_!F|OBz#qqj_rzU`-GdFL53JZ zK2`mCRieqK(V^Co$(@+oIFTp7{fYzVYF#=Cvt1S{v@~HbVB6#;8ejYg10UM%mL~;} z1_mx8d!T|FmJ4HI0kpHoGMcWKA~}P#gXN}TJJaGJrj#Mg2c~b-!I;?aB z>3J@@X0z^zsle!oQtrN8()~e7e+IRo$#+D-wE$mqBR?}QF%(GUgd*3P% zipgI|O=nolUj>ZQnTl^^6VO=T`7VXf+0KVmXy14>k}Njapo4s+7ImY|=y@jt{7=bR zRf_C#BkbjtF3BEjEQ?ii!l;*+l}MV>;y|t~|M=))MNaB4266clUai|zqNgO(hCN$1 zWM4VLh=G2>Ju7Gkwgr>jux}?OUu3ChD*?pJQ{*ifN+}>->M^N;{g!!SZzS4SE#kXF zIjiBJ|19kgIb!v}#OEWF;{Zm~PE*c4%T%)1FNEKNTR&^sATtQH^wIcW-*0T9p>iG( zJJ^9dPg7iK)s+9n*o+p62yEgRZ`x%E!k8xXG)o0;Dks0b0_YzDv1R?*j4H)PYVk%K zb5<mtE7$jZt!o9JMSNLq|>W4JLjJc zSHe%2Ktqalb|u~0hm$N$) z-JN01puJ;x*Z8^H*4N)Eoq56LU)|{0)cNpz#nod^KA);A|0hJGk0IO75%^xI2iFn=rIDNBYD^XgT9lA? zWoG&<BXK_E1#e1mDB6ZyC|sb(!h!=I~YIw1@2}K3~bjJ<&D(q+Y>A&DpLl^zz0lX%>nRAK5IT5ZjCI3@(1Sb*AP;Q&vEk$ zPJSgUi@PCgR_8R{_v;8LruMo;JA}O1#1o*miZV6~hnCSA*`52epfcU0zJ2XL{LTe>ytIqtbDq3ku^ANr{5SB;9N zd{23`)p6Iua;FkWyU4^Ey`~{OTu~&>x~P^cZpo-P*zv@z3pkI6>I2E^l}-uW(v`80 zsm*>u(L~`O>%GY;g4Obdrpc}F31ti+`ahZu1{a5|I5w}J;)(Xec2Dt(}* zeNv776w!3=;i&0=nAGVaOb}YcyTsFB5V38xQ!K5J2n~NSaT%o-%wqWIAslDH8#C`-^g_^5P zMBYxC&WGKS`Sy^s$ zZu`DdNm0+kK`*NE*CjhCk+)}?K&h9`R8I%QO|(DN_mudI!p?Wl=!FfVIMS;OM*lq6 z-LcwoCXU!}m1*U?lHtOU6DHBF#kXB z5`;;U{eO9y|6-U%f|38TVcH|oS^Z=1@HXSG{`N0h1$sFWJ_QGWK_>r}ghojN0H


      !$~D4VZlXe&&QTd*<46 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
      B|r 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�DCRl1Jb` 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 Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + ErrorText(error: error), + ], + ), ); } } diff --git a/lib/core/widgets/loading.dart b/lib/core/widgets/loading.dart index 8d25532..d83bc8e 100644 --- a/lib/core/widgets/loading.dart +++ b/lib/core/widgets/loading.dart @@ -40,6 +40,7 @@ class LoadingPage extends StatelessWidget { @override Widget build(BuildContext context) { return const Scaffold( + backgroundColor: Colors.black, body: Loader(), ); } diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 20554d6..df3401a 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -93,9 +93,10 @@ class _HomeFrameState extends ConsumerState ), ), labelType: NavigationRailLabelType.none, - indicatorShape: ContinuousRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), + backgroundColor: Colors.black, + indicatorColor: Colors.grey.shade900, + unselectedIconTheme: const IconThemeData(color: Colors.grey), + selectedIconTheme: const IconThemeData(color: Colors.white), ), Expanded( child: Column( @@ -126,7 +127,6 @@ class _HomeFrameState extends ConsumerState ), ], ), - // bottomNavigationBar: const BaseAudioPlayer(), ), ), ); diff --git a/lib/functions/album/controllers/album_controller.dart b/lib/functions/album/controllers/album_controller.dart index c166347..f2f7c31 100644 --- a/lib/functions/album/controllers/album_controller.dart +++ b/lib/functions/album/controllers/album_controller.dart @@ -36,7 +36,7 @@ class AlbumController extends StateNotifier { ); final s = album.copyWith( - playCount: accentColor.background.value, + accentColor: accentColor.background, ); return s; diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index 7eab3f6..f2c8a71 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,4 +1,5 @@ -import 'package:flutter/cupertino.dart'; +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -9,7 +10,7 @@ import 'package:sangeet/functions/album/widgets/album_top_details.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class AlbumView extends ConsumerWidget { - static route(String id) => CupertinoPageRoute( + static route(String id) => MaterialPageRoute( builder: (context) => AlbumView( albumId: id, ), @@ -25,168 +26,187 @@ class AlbumView extends ConsumerWidget { data: (album) { return Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Color(album.playCount), - ), - ], + image: DecorationImage( + image: NetworkImage(album.images[2].url), + fit: BoxFit.cover, + ), ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), ), ), - ), - ), - AlbumTopDetails(album: album), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - album.artists[0].image), + AlbumTopDetails(album: album), + Container( + padding: const EdgeInsets.all(8), + margin: + const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + album.artists[0].image), + ), + Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + album.artists[0].name, + style: + GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: + TextDecoration + .underline), + ), + ) + ], ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - album.artists[0].name, - style: GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: TextDecoration - .underline), - ), - ) - ], - ), + ), + IconButton( + onPressed: () => ref + .watch(playerControllerProvider + .notifier) + .runRadio( + radioId: album.id, + type: MediaType.album), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + ), + ], ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: album.id, - type: MediaType.album), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: Color(album.playCount), + ), + Container( + padding: + const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: album.songs.length, + itemBuilder: (context, index) { + final song = album.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: album.songs.length, - itemBuilder: (context, index) { - final song = album.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), + ), + ], ), - ], + ), ), ), - ), - ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: album.artists.length, - itemBuilder: (context, index) { - final artist = album.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), - ); - }, + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: album.artists.length, + itemBuilder: (context, index) { + final artist = album.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], ), - ], - ), - ), - )) - ], + ), + )) + ], + ), + ), ), ); }, diff --git a/lib/functions/artist/controller/artist_controller.dart b/lib/functions/artist/controller/artist_controller.dart new file mode 100644 index 0000000..97b11c4 --- /dev/null +++ b/lib/functions/artist/controller/artist_controller.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; +import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; + +final artistControllerProvider = + StateNotifierProvider((ref) { + return ArtistController( + api: ref.watch(sangeetAPIProvider), + ); +}); + +final artistByIdProvider = + FutureProvider.family((ref, String token) async { + return ref + .watch(artistControllerProvider.notifier) + .fetchArtistById(artistId: token); +}); + +class ArtistController extends StateNotifier { + final SangeetAPI _api; + ArtistController({required SangeetAPI api}) + : _api = api, + super(false); + + Future fetchArtistById({required String artistId}) async { + final artist = await _api.artist.getById(artistId: artistId); + if (artist == null) { + throw Error.throwWithStackTrace("Artist not found", StackTrace.empty); + } + final accentColor = await ColorScheme.fromImageProvider( + provider: NetworkImage(artist.images[0].url), + brightness: Brightness.dark, + ); + + final s = artist.copyWith( + accentColor: accentColor.background, + ); + + return s; + } +} diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart new file mode 100644 index 0000000..85ceadd --- /dev/null +++ b/lib/functions/artist/view/artist_view.dart @@ -0,0 +1,196 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/functions/charts/controllers/charts_controller.dart'; +import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; + +class ArtistView extends ConsumerWidget { + static route(String id) => MaterialPageRoute( + builder: (context) => ArtistView( + artistId: id, + ), + ); + + final String artistId; + const ArtistView({this.artistId = "", super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ModalRoute.of(context)?.settings.name ?? artistId; + + return ref.watch(chartByIdProvider(name)).when( + data: (chart) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: chart.accentColor!, + ), + ], + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + ), + ChartTopDetails(chart: chart), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + chart.artists[0].image), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + chart.artists[0].name, + style: GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: chart.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: chart.songs.length, + itemBuilder: (context, index) { + final song = chart.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + ), + ) + ], + ), + ); + }, + error: (err, st) => ErrorPage(error: err.toString()), + loading: () => const LoadingPage(), + ); + } +} diff --git a/lib/functions/charts/controllers/charts_controller.dart b/lib/functions/charts/controllers/charts_controller.dart index a5fcc86..7740ea2 100644 --- a/lib/functions/charts/controllers/charts_controller.dart +++ b/lib/functions/charts/controllers/charts_controller.dart @@ -5,8 +5,8 @@ import 'package:sangeet_api/models.dart'; import 'package:sangeet_api/sangeet_api.dart'; final chartControllerProvider = - StateNotifierProvider((ref) { - return AlbumController( + StateNotifierProvider((ref) { + return ChartController( api: ref.watch(sangeetAPIProvider), ); }); @@ -18,25 +18,25 @@ final chartByIdProvider = .fetchChartById(token: token); }); -class AlbumController extends StateNotifier { +class ChartController extends StateNotifier { final SangeetAPI _api; - AlbumController({required SangeetAPI api}) + ChartController({required SangeetAPI api}) : _api = api, super(false); Future fetchChartById({required String token}) async { - final album = await _api.explore.chart(token: token); + final chart = await _api.explore.chart(token: token); - if (album == null) { - throw Error.throwWithStackTrace("Playlist not found", StackTrace.empty); + if (chart == null) { + throw Error.throwWithStackTrace("Chart not found", StackTrace.empty); } final accentColor = await ColorScheme.fromImageProvider( - provider: NetworkImage(album.images[0].url), + provider: NetworkImage(chart.images[0].url), brightness: Brightness.dark, ); - final s = album.copyWith( - playCount: accentColor.background.value, + final s = chart.copyWith( + accentColor: accentColor.background, ); return s; diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index a3f9a21..ff27213 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -9,7 +11,7 @@ import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class ChartView extends ConsumerWidget { - static route(String id) => CupertinoPageRoute( + static route(String id) => MaterialPageRoute( builder: (context) => ChartView( chartId: id, ), @@ -26,168 +28,188 @@ class ChartView extends ConsumerWidget { data: (chart) { return Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Color(chart.playCount), - ), - ], + image: DecorationImage( + image: NetworkImage(chart.images[2].url), + fit: BoxFit.cover, + ), ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), ), ), - ), - ), - ChartTopDetails(chart: chart), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - chart.artists[0].image), + ChartTopDetails(chart: chart), + Container( + padding: const EdgeInsets.all(8), + margin: + const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + chart.artists[0].image), + ), + Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + chart.artists[0].name, + style: + GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: + TextDecoration + .underline), + ), + ) + ], ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - chart.artists[0].name, - style: GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: TextDecoration - .underline), - ), - ) - ], - ), + ), + IconButton( + onPressed: () => ref + .watch(playerControllerProvider + .notifier) + .runRadio( + radioId: chart.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + ), + ], ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: chart.id, - type: MediaType.playlist), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: Color(chart.playCount), + ), + Container( + padding: + const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: chart.songs.length, + itemBuilder: (context, index) { + final song = chart.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: chart.songs.length, - itemBuilder: (context, index) { - final song = chart.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), + ), + ], ), - ], + ), ), ), - ), - ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: chart.artists.length, - itemBuilder: (context, index) { - final artist = chart.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), - ); - }, + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], ), - ], + ), ), - ), - ), - ) - ], + ) + ], + ), + ), ), ); }, diff --git a/lib/functions/explore/views/explore_view.dart b/lib/functions/explore/views/explore_view.dart index 3e8573a..6e6b11e 100644 --- a/lib/functions/explore/views/explore_view.dart +++ b/lib/functions/explore/views/explore_view.dart @@ -12,6 +12,25 @@ class ExploreView extends ConsumerStatefulWidget { class _ExploreViewState extends ConsumerState { @override Widget build(BuildContext context) { - return const ExploreList(); + return Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/background.jpg'), + fit: BoxFit.cover, + ), + ), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.grey.withOpacity(0.5), + Colors.black.withOpacity(1), + ], + ), + ), + child: const ExploreList(), + ), + ); } } diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 1f99055..e6f1b7c 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -1,11 +1,9 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/charts/view/charts_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; -import 'package:sangeet/functions/explore/views/explore_view.dart'; import 'package:sangeet/functions/explore/widgets/album_card.dart'; import 'package:sangeet/functions/explore/widgets/chart_card.dart'; import 'package:sangeet/functions/explore/widgets/playlist_card.dart'; @@ -20,8 +18,6 @@ class ExploreList extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - // final player = ref.read(getAudioPlayer); - return ref.watch(getExploreDataProvider).when( data: (data) { final charts = data.charts; @@ -79,26 +75,18 @@ class ExploreList extends ConsumerWidget { ), onLike: () {}, onTap: () { - Navigator.of(context) - .push(MaterialPageRoute(builder: (context) { - if (item.type == 'song') { - return SongView( - songId: item.id, - ); - } - if (item.type == 'album') { - return AlbumView( - albumId: item.id, - ); - } - if (item.type == 'playlist') { - return PlaylistView( - playlistId: item.id, - ); - } else { - return const ExploreView(); - } - })); + if (item.type == 'song') { + Navigator.of(context) + .push(SongView.route(item.id)); + } + if (item.type == 'album') { + Navigator.of(context) + .push(AlbumView.route(item.id)); + } + if (item.type == 'playlist') { + Navigator.of(context) + .push(PlaylistView.route(item.id)); + } }, image: item.image, accentColor: item.accentColor, diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index dd5158e..92a4fbc 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -147,94 +147,6 @@ class PlayerController extends StateNotifier { } } - Future setSong({required SongModel song}) async { - try { - await playlist.clear(); - final quality = await _settingsController.getSongQuality(); - final songsObjects = await _exploreController.getRadio(song.id, false); - - songsObjects.songs.insert(0, song); - - for (var i = 0; i < songsObjects.songs.length; i++) { - final uri = songsObjects.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; - - playlist - .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); - } - - await _player.setAudioSource(playlist, - preload: kIsWeb || defaultTargetPlatform != TargetPlatform.linux); - - await _player.play(); - } on PlayerException catch (e) { - // iOS/macOS: maps to NSError.code - // Android: maps to ExoPlayerException.type - // Web: maps to MediaError.code - if (kDebugMode) { - print("Error code: ${e.code}"); - // iOS/macOS: maps to NSError.localizedDescription - // Android: maps to ExoPlaybackException.getMessage() - // Web: a generic message - print("Error message: ${e.message}"); - } - } on PlayerInterruptedException catch (e) { - // This call was interrupted since another audio source was loaded or the - // player was stopped or disposed before this audio source could complete - // loading. - if (kDebugMode) { - print("Connection aborted: ${e.message}"); - } - } catch (e) { - // Fallback for all errors - if (kDebugMode) { - print(e); - } - } - } - - Future loadMoreSongs({required SongModel song}) async { - try { - final quality = await _settingsController.getSongQuality(); - final songsObjects = await _exploreController.getRadio(song.id, false); - - for (var i = 0; i < songsObjects.songs.length; i++) { - final uri = songsObjects.songs[i].urls - .where((element) => element.quality == quality.name) - .toList()[0] - .url; - - playlist - .add(AudioSource.uri(Uri.parse(uri), tag: songsObjects.songs[i])); - } - } on PlayerException catch (e) { - // iOS/macOS: maps to NSError.code - // Android: maps to ExoPlayerException.type - // Web: maps to MediaError.code - if (kDebugMode) { - print("Error code: ${e.code}"); - // iOS/macOS: maps to NSError.localizedDescription - // Android: maps to ExoPlaybackException.getMessage() - // Web: a generic message - print("Error message: ${e.message}"); - } - } on PlayerInterruptedException catch (e) { - // This call was interrupted since another audio source was loaded or the - // player was stopped or disposed before this audio source could complete - // loading. - if (kDebugMode) { - print("Connection aborted: ${e.message}"); - } - } catch (e) { - // Fallback for all errors - if (kDebugMode) { - print(e); - } - } - } - @override void dispose() { super.dispose(); diff --git a/lib/functions/player/widgets/current_playing_list.dart b/lib/functions/player/widgets/current_playing_list.dart index 1d6d97b..99f90b2 100644 --- a/lib/functions/player/widgets/current_playing_list.dart +++ b/lib/functions/player/widgets/current_playing_list.dart @@ -25,10 +25,10 @@ class _PlaylistViewState extends ConsumerState { final song = sequence[state!.currentIndex].tag as SongModel; if (state.currentIndex == playlist.length - 1) { - playlist.removeRange(0, 10); - ref - .watch(playerControllerProvider.notifier) - .loadMoreSongs(song: song); + // playlist.removeRange(0, 10); + // ref + // .watch(playerControllerProvider.notifier) + // .loadMoreSongs(song: song); } return Column(children: [ diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index 9100ea8..cb4451c 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -1,4 +1,5 @@ -import 'package:flutter/cupertino.dart'; +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -9,7 +10,7 @@ import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart' import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; class PlaylistView extends ConsumerWidget { - static route(String id) => CupertinoPageRoute( + static route(String id) => MaterialPageRoute( builder: (context) => PlaylistView( playlistId: id, ), @@ -25,169 +26,190 @@ class PlaylistView extends ConsumerWidget { data: (playlist) { return Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: playlist.accentColor!, - ), - ], + image: DecorationImage( + image: NetworkImage(playlist.images[2].url), + fit: BoxFit.cover, + ), ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), ), ), - ), - ), - PlaylistTopDetails(playlist: playlist), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - playlist.artists[0].image), + PlaylistTopDetails(playlist: playlist), + Container( + padding: const EdgeInsets.all(8), + margin: + const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + playlist.artists[0].image), + ), + Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + playlist.artists[0].name, + style: + GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: + TextDecoration + .underline), + ), + ) + ], ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - playlist.artists[0].name, - style: GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: TextDecoration - .underline), - ), - ) - ], - ), + ), + IconButton( + onPressed: () => ref + .watch(playerControllerProvider + .notifier) + .runRadio( + radioId: playlist.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: Color(playlist.playCount), + ), + ], ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: playlist.id, - type: MediaType.playlist), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: Color(playlist.playCount), + ), + Container( + padding: + const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: playlist.songs.length, + itemBuilder: (context, index) { + final song = playlist.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: playlist.songs.length, - itemBuilder: (context, index) { - final song = playlist.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), + ), + ], ), - ], + ), ), ), - ), - ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: playlist.artists.length, - itemBuilder: (context, index) { - final artist = playlist.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), - ); - }, + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: playlist.artists.length, + itemBuilder: (context, index) { + final artist = playlist.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + const SizedBox(height: 20), + ], ), - const SizedBox(height: 20), - ], + ), ), - ), - ), - ) - ], + ) + ], + ), + ), ), ); }, diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index 6121e60..ce493bf 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -1,4 +1,5 @@ -import 'package:flutter/cupertino.dart'; +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -8,7 +9,7 @@ import 'package:sangeet/functions/song/controllers/song_controller.dart'; import 'package:sangeet/functions/song/widgets/song_top_details.dart'; class SongView extends ConsumerStatefulWidget { - static route(String id) => CupertinoPageRoute( + static route(String id) => MaterialPageRoute( builder: (context) => SongView( songId: id, ), @@ -29,171 +30,190 @@ class _SongViewState extends ConsumerState { data: (song) { return Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: song.accentColor!, - ), - ], + image: DecorationImage( + image: NetworkImage(song.images[2].url), + fit: BoxFit.cover, + ), ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), ), ), - ), + SongTopDetails(song: song), + Container( + padding: const EdgeInsets.all(8), + margin: + const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + // onTap: () => Navigator.of(context).pop(), + child: Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + song.artists[0].image), + ), + Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + song.artists[0].name, + style: + GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: + TextDecoration + .underline), + ), + ) + ], + ), + ), + IconButton( + onPressed: () => ref + .watch(playerControllerProvider + .notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + ), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: song.accentColor, + ), + ], + ), + ), + + // Container( + // padding: const EdgeInsets.symmetric(vertical: 10), + // child: ListView.builder( + // shrinkWrap: true, + // physics: const BouncingScrollPhysics(), + // scrollDirection: Axis.vertical, + // itemCount: album.songs.length, + // itemBuilder: (context, index) { + // final song = album.songs[index]; + // return ListTile( + // onTap: () {}, + // title: Text(song.title), + // subtitle: Text( + // "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + // leading: CircleAvatar( + // backgroundImage: + // NetworkImage(song.images[1].url), + // ), + // ); + // }, + // ), + // ), + ], ), - SongTopDetails(song: song), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - InkWell( - // onTap: () => Navigator.of(context).pop(), - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - song.artists[0].image), - ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - song.artists[0].name, - style: GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: TextDecoration - .underline), - ), - ) - ], + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: song.id, - type: MediaType.song, + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), ), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: song.accentColor, + ); + }, ), ], ), ), - - // Container( - // padding: const EdgeInsets.symmetric(vertical: 10), - // child: ListView.builder( - // shrinkWrap: true, - // physics: const BouncingScrollPhysics(), - // scrollDirection: Axis.vertical, - // itemCount: album.songs.length, - // itemBuilder: (context, index) { - // final song = album.songs[index]; - // return ListTile( - // onTap: () {}, - // title: Text(song.title), - // subtitle: Text( - // "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - // leading: CircleAvatar( - // backgroundImage: - // NetworkImage(song.images[1].url), - // ), - // ); - // }, - // ), - // ), - ], - ), - ), - ), + )) + ], ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: song.artists.length, - itemBuilder: (context, index) { - final artist = song.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, - ), - ], - ), - ), - )) - ], + ), ), ); }, diff --git a/lib/main.dart b/lib/main.dart index a4a7a91..9c0d2ed 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -37,7 +37,10 @@ class MyApp extends StatelessWidget { seedColor: Colors.deepPurpleAccent, brightness: Brightness.dark, ), - primaryColor: Colors.black12, + cardTheme: const CardTheme( + color: Colors.transparent, + elevation: .01, + ), ), themeMode: ThemeMode.dark, home: const HomeFrame(), diff --git a/pubspec.yaml b/pubspec.yaml index 23ef5cf..1d82d2c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -100,6 +100,7 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - assets/app_icon.ico + - assets/background.jpg # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see From 2c87a2b16f802ccef357ef91a8a3d41da458177b Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 11:51:46 +0530 Subject: [PATCH 09/20] remove deprec. code and artist view improves --- lib/apis/artist_api.dart | 72 ---- lib/apis/song_api.dart | 100 ------ lib/functions/album/view/album_view.dart | 4 +- lib/functions/artist/view/artist_view.dart | 328 ++++++++++-------- .../artist/widgets/artist_top_details.dart | 90 +++++ lib/functions/charts/view/charts_view.dart | 1 - .../search/controllers/search_controller.dart | 25 +- lib/functions/search/widgets/song_tile.dart | 6 +- .../widgets/playback_quality_setting.dart | 6 +- lib/models/artists/artist_model.dart | 201 ----------- lib/models/artists/sub_artist_model.dart | 99 ------ lib/models/explore_model.dart | 12 - lib/models/helpers/album_submodal.dart | 59 ---- lib/models/helpers/download_quality.dart | 29 -- lib/models/helpers/download_url.dart | 55 --- lib/models/helpers/song_image.dart | 76 ---- lib/models/song_model.dart | 223 ------------ 17 files changed, 278 insertions(+), 1108 deletions(-) delete mode 100644 lib/apis/artist_api.dart delete mode 100644 lib/apis/song_api.dart create mode 100644 lib/functions/artist/widgets/artist_top_details.dart delete mode 100644 lib/models/artists/artist_model.dart delete mode 100644 lib/models/artists/sub_artist_model.dart delete mode 100644 lib/models/explore_model.dart delete mode 100644 lib/models/helpers/album_submodal.dart delete mode 100644 lib/models/helpers/download_quality.dart delete mode 100644 lib/models/helpers/download_url.dart delete mode 100644 lib/models/helpers/song_image.dart delete mode 100644 lib/models/song_model.dart diff --git a/lib/apis/artist_api.dart b/lib/apis/artist_api.dart deleted file mode 100644 index 3c883eb..0000000 --- a/lib/apis/artist_api.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'dart:convert'; -import 'dart:developer'; - -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:fpdart/fpdart.dart'; -import 'package:sangeet/core/constants.dart'; -import 'package:sangeet/core/core.dart'; -import 'package:http/http.dart' as http; -import 'package:sangeet/models/artists/sub_artist_model.dart'; - -final artistAPIProvider = Provider((ref) { - return ArtistAPI(); -}); - -abstract class IArtistAPI { - FutureEither> fetchInitArtists(); - FutureEither> fetchSearchData({required String query}); -} - -class ArtistAPI extends IArtistAPI { - @override - FutureEither> fetchInitArtists() async { - try { - final uri = Uri.https(Constants.serverUrl, 'api/search/artists', - {"query": "Popular", "limit": "12"}); - - final res = await http.get(uri); - if (res.statusCode != 200) throw Error(); - - Map jsonMap = jsonDecode(res.body); - // Extract the list of Artists from the Map - List artistsObj = jsonMap['data']['results']; - - List artists = artistsObj.map((artist) { - return SubArtistModel.fromMap(artist); - }).toList(); - - return right(artists); - } on http.ClientException catch (e, st) { - log(e.toString()); - - return left(Failure(e.message, st)); - } catch (e, st) { - log(e.toString()); - - return left(Failure(e.toString(), st)); - } - } - - @override - FutureEither> fetchSearchData( - {required String query}) async { - try { - final uri = Uri.https( - Constants.serverUrl, 'api/search/Artists', {"query": query}); - final res = await http.get(uri); - if (res.statusCode != 200) throw Error(); - - Map jsonMap = jsonDecode(res.body); - // Extract the list of Artists from the Map - List artistsObj = jsonMap['data']['artists']['results']; - List artists = - artistsObj.map((artist) => SubArtistModel.fromMap(artist)).toList(); - return right(artists); - } on http.ClientException catch (e, st) { - log(e.toString()); - return left(Failure(e.message, st)); - } catch (e, st) { - return left(Failure(e.toString(), st)); - } - } -} diff --git a/lib/apis/song_api.dart b/lib/apis/song_api.dart deleted file mode 100644 index 6c18992..0000000 --- a/lib/apis/song_api.dart +++ /dev/null @@ -1,100 +0,0 @@ -import 'dart:convert'; -import 'dart:developer'; - -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:fpdart/fpdart.dart'; -import 'package:sangeet/core/constants.dart'; -import 'package:sangeet/core/core.dart'; -import 'package:sangeet/models/song_model.dart'; -import 'package:http/http.dart' as http; - -final songAPIProvider = Provider((ref) { - return SongAPI(); -}); - -abstract class ISongAPI { - FutureEither> fetchInitData(); - FutureEither> fetchSearchData({required String query}); - - FutureEither> fetchSongRecommedationData( - {required String id}); -} - -class SongAPI extends ISongAPI { - @override - FutureEither> fetchInitData() async { - try { - final uri = Uri.https(Constants.serverUrl, 'api/search/songs', - {"query": "Bollywood", "limit": "24"}); - - final res = await http.get(uri); - if (res.statusCode != 200) throw Error(); - - Map jsonMap = jsonDecode(res.body); - // Extract the list of songs from the Map - List songsObj = jsonMap['data']['results']; - - List songs = songsObj.map((song) { - return SongModel.fromMap(song); - }).toList(); - - return right(songs); - } on http.ClientException catch (e, st) { - log(e.toString()); - - return left(Failure(e.message, st)); - } catch (e, st) { - log(e.toString()); - - return left(Failure(e.toString(), st)); - } - } - - @override - FutureEither> fetchSearchData({required String query}) async { - try { - final uri = Uri.https(Constants.serverUrl, 'api/search/songs', { - "query": query, - "limit": "24", - }); - final res = await http.get(uri); - if (res.statusCode != 200) throw Error(); - - Map jsonMap = jsonDecode(res.body); - // Extract the list of songs from the Map - List songsObj = jsonMap['data']['results']; - List songs = - songsObj.map((song) => SongModel.fromMap(song)).toList(); - return right(songs); - } on http.ClientException catch (e, st) { - log(e.toString()); - return left(Failure(e.message, st)); - } catch (e, st) { - return left(Failure(e.toString(), st)); - } - } - - @override - FutureEither> fetchSongRecommedationData( - {required String id}) async { - try { - final uri = Uri.https( - Constants.serverUrl, 'api/songs/$id/suggestions', {"limit": "32"}); - - final res = await http.get(uri); - if (res.statusCode != 200) throw Error(); - - Map jsonMap = jsonDecode(res.body); - // Extract the list of songs from the Map - List songsObj = jsonMap['data']; - List songs = - songsObj.map((song) => SongModel.fromMap(song)).toList(); - return right(songs); - } on http.ClientException catch (e, st) { - log(e.toString()); - return left(Failure(e.message, st)); - } catch (e, st) { - return left(Failure(e.toString(), st)); - } - } -} diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index f2c8a71..c9c71a8 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -7,6 +7,7 @@ import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/functions/album/controllers/album_controller.dart'; import 'package:sangeet/functions/album/widgets/album_top_details.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class AlbumView extends ConsumerWidget { @@ -190,7 +191,8 @@ class AlbumView extends ConsumerWidget { itemBuilder: (context, index) { final artist = album.artists[index]; return ListTile( - onTap: () {}, + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), title: Text(artist.name), subtitle: Text(artist.type), leading: CircleAvatar( diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart index 85ceadd..1341b9a 100644 --- a/lib/functions/artist/view/artist_view.dart +++ b/lib/functions/artist/view/artist_view.dart @@ -1,11 +1,12 @@ +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; -import 'package:sangeet/functions/charts/controllers/charts_controller.dart'; -import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; -import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/artist/controller/artist_controller.dart'; +import 'package:sangeet/functions/artist/widgets/artist_top_details.dart'; class ArtistView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -21,171 +22,192 @@ class ArtistView extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final name = ModalRoute.of(context)?.settings.name ?? artistId; - return ref.watch(chartByIdProvider(name)).when( - data: (chart) { + return ref.watch(artistByIdProvider(name)).when( + data: (artist) { return Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: chart.accentColor!, - ), - ], + image: DecorationImage( + image: NetworkImage(artist.images[2].url), + fit: BoxFit.cover, + ), ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), ), ), - ), - ), - ChartTopDetails(chart: chart), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - chart.artists[0].image), + ArtistTopDetails(artist: artist), + Container( + padding: const EdgeInsets.all(8), + margin: + const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + InkWell( + child: Row( + children: [ + Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 4, + ), + child: Text( + artist.dominantType, + style: + GoogleFonts.caesarDressing() + .copyWith( + fontSize: 18, + decoration: + TextDecoration.underline, + ), + ), + ) + ], ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - chart.artists[0].name, - style: GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: TextDecoration - .underline), - ), - ) - ], - ), + ), + IconButton( + onPressed: () { + // => ref + // .watch(playerControllerProvider + // .notifier) + // .runRadio( + // radioId: chart.id, + // type: MediaType.playlist), + }, + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + ), + ], ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: chart.id, - type: MediaType.playlist), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), + ), + Container( + padding: + const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: artist.topSongs.length, + itemBuilder: (context, index) { + final song = artist.topSongs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatDuration(song.duration)}, ${song.label}"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: chart.songs.length, - itemBuilder: (context, index) { - final song = chart.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), + ), + ], ), - ], + ), ), ), - ), - ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: chart.artists.length, - itemBuilder: (context, index) { - final artist = chart.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + // physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Top Albums.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), - ); - }, + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: artist.topAlbums.length, + itemBuilder: (context, index) { + final album = artist.topAlbums[index]; + return ListTile( + onTap: () {}, + title: Text(album.title), + subtitle: Text(album.subtitle), + leading: CircleAvatar( + backgroundImage: NetworkImage( + album.images[1].url, + ), + ), + ); + }, + ), + ], ), - ], + ), ), - ), - ), - ) - ], + ) + ], + ), + ), ), ); }, diff --git a/lib/functions/artist/widgets/artist_top_details.dart b/lib/functions/artist/widgets/artist_top_details.dart new file mode 100644 index 0000000..d4fea2d --- /dev/null +++ b/lib/functions/artist/widgets/artist_top_details.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet_api/models.dart'; + +class ArtistTopDetails extends StatelessWidget { + final ArtistModel artist; + const ArtistTopDetails({super.key, required this.artist}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + artist.images[2].url, + width: 200, + height: 200, + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + artist.name, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + artist.subtitle, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + Visibility( + visible: artist.isVerified, + child: Row( + children: [ + Text( + "Verified", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + const Icon( + Icons.verified_rounded, + color: Colors.blue, + ) + ], + ), + ), + Text( + "Followers - ${formatNumber(artist.followersCount)}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .textTheme + .labelSmall! + .color! + .withOpacity(.7), + ), + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index ff27213..8f42073 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,6 +1,5 @@ import 'dart:ui'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; diff --git a/lib/functions/search/controllers/search_controller.dart b/lib/functions/search/controllers/search_controller.dart index 532c34f..62e9cef 100644 --- a/lib/functions/search/controllers/search_controller.dart +++ b/lib/functions/search/controllers/search_controller.dart @@ -1,12 +1,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/apis/song_api.dart'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/models.dart'; final searchControllerProvider = StateNotifierProvider((ref) { - return SearchController( - songAPI: ref.watch(songAPIProvider), - ); + return SearchController(); }); final searchDataProvider = FutureProvider>((ref) async { @@ -14,25 +11,11 @@ final searchDataProvider = FutureProvider>((ref) async { }); class SearchController extends StateNotifier { - final SongAPI _songAPI; - - SearchController({required SongAPI songAPI}) - : _songAPI = songAPI, - super(false); + SearchController() : super(false); // ADD SEARCH METHODS List searchData = []; - Future searchSong({required String query}) async { - state = true; - final fetchedsongs = await _songAPI.fetchSearchData(query: query); - - fetchedsongs.fold( - (l) => throw Error.throwWithStackTrace(l.message, l.stackTrace), - (r) => searchData = r, - ); - - state = false; - } + Future searchSong({required String query}) async {} } diff --git a/lib/functions/search/widgets/song_tile.dart b/lib/functions/search/widgets/song_tile.dart index 563a704..530d0f9 100644 --- a/lib/functions/search/widgets/song_tile.dart +++ b/lib/functions/search/widgets/song_tile.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:sangeet/models/song_model.dart'; +import 'package:sangeet_api/models.dart'; class SearchSongTile extends StatelessWidget { final SongModel song; @@ -9,12 +9,12 @@ class SearchSongTile extends StatelessWidget { @override Widget build(BuildContext context) { return ListTile( - title: Text(song.name), + title: Text(song.title), subtitle: Text("${song.label} - ${song.year}"), leading: CircleAvatar( radius: 25, backgroundColor: Theme.of(context).primaryColorDark, - foregroundImage: NetworkImage(song.image[0].url), + foregroundImage: NetworkImage(song.images[0].url), ), onTap: onTap, ); diff --git a/lib/functions/settings/widgets/playback_quality_setting.dart b/lib/functions/settings/widgets/playback_quality_setting.dart index 1abbe3a..5a9d1b1 100644 --- a/lib/functions/settings/widgets/playback_quality_setting.dart +++ b/lib/functions/settings/widgets/playback_quality_setting.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/constants.dart'; import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; -import 'package:sangeet/models/helpers/download_quality.dart'; +import 'package:sangeet_api/common/utils.dart'; import 'package:shared_preferences/shared_preferences.dart'; class PlaybackQualitySetting extends ConsumerStatefulWidget { @@ -17,12 +17,12 @@ class _PlaybackQualitySettingState extends ConsumerState { @override Widget build(BuildContext context) { - var items = SongQualityType.values + var items = SongQuality.values .map((e) => PopupMenuItem( child: Text(e.name), onTap: () async { final prefs = await SharedPreferences.getInstance(); - await prefs.setString(SharedPrefs.songQuality, e.type); + await prefs.setString(SharedPrefs.songQuality, e.quality); ref.invalidate(songQualityProvider); setState(() {}); }, diff --git a/lib/models/artists/artist_model.dart b/lib/models/artists/artist_model.dart deleted file mode 100644 index 3719feb..0000000 --- a/lib/models/artists/artist_model.dart +++ /dev/null @@ -1,201 +0,0 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:convert'; - -import 'package:flutter/foundation.dart'; - -import 'package:sangeet/models/helpers/song_image.dart'; -import 'package:sangeet/models/song_model.dart'; - -class ArtistModel { - final String id; - final String name; - final String url; - final String type; - final int followerCount; - final String fanCount; - final bool isVerified; - final String dominantLanguage; - final String dominantType; - final List bio; - final String? dob; - final String? fb; - final String? twitter; - final String? wiki; - final List availableLanguages; - final bool isRadioPresent; - final List image; - final List topSongs; - ArtistModel({ - required this.id, - required this.name, - required this.url, - required this.type, - required this.followerCount, - required this.fanCount, - required this.isVerified, - required this.dominantLanguage, - required this.dominantType, - required this.bio, - this.dob, - this.fb, - this.twitter, - this.wiki, - required this.availableLanguages, - required this.isRadioPresent, - required this.image, - required this.topSongs, - }); - - ArtistModel copyWith({ - String? id, - String? name, - String? url, - String? type, - int? followerCount, - String? fanCount, - bool? isVerified, - String? dominantLanguage, - String? dominantType, - List? bio, - String? dob, - String? fb, - String? twitter, - String? wiki, - List? availableLanguages, - bool? isRadioPresent, - List? image, - List? topSongs, - }) { - return ArtistModel( - id: id ?? this.id, - name: name ?? this.name, - url: url ?? this.url, - type: type ?? this.type, - followerCount: followerCount ?? this.followerCount, - fanCount: fanCount ?? this.fanCount, - isVerified: isVerified ?? this.isVerified, - dominantLanguage: dominantLanguage ?? this.dominantLanguage, - dominantType: dominantType ?? this.dominantType, - bio: bio ?? this.bio, - dob: dob ?? this.dob, - fb: fb ?? this.fb, - twitter: twitter ?? this.twitter, - wiki: wiki ?? this.wiki, - availableLanguages: availableLanguages ?? this.availableLanguages, - isRadioPresent: isRadioPresent ?? this.isRadioPresent, - image: image ?? this.image, - topSongs: topSongs ?? this.topSongs, - ); - } - - Map toMap() { - return { - 'id': id, - 'name': name, - 'url': url, - 'type': type, - 'followerCount': followerCount, - 'fanCount': fanCount, - 'isVerified': isVerified, - 'dominantLanguage': dominantLanguage, - 'dominantType': dominantType, - 'bio': bio, - 'dob': dob, - 'fb': fb, - 'twitter': twitter, - 'wiki': wiki, - 'availableLanguages': availableLanguages, - 'isRadioPresent': isRadioPresent, - 'image': image.map((x) => x.toMap()).toList(), - 'topSongs': topSongs.map((x) => x.toMap()).toList(), - }; - } - - factory ArtistModel.fromMap(Map map) { - return ArtistModel( - id: map['id'] as String, - name: map['name'] as String, - url: map['url'] as String, - type: map['type'] as String, - followerCount: map['followerCount'] as int, - fanCount: map['fanCount'] as String, - isVerified: map['isVerified'] as bool, - dominantLanguage: map['dominantLanguage'] as String, - dominantType: map['dominantType'] as String, - bio: List.from((map['bio'] as List)), - dob: map['dob'] != null ? map['dob'] as String : null, - fb: map['fb'] != null ? map['fb'] as String : null, - twitter: map['twitter'] != null ? map['twitter'] as String : null, - wiki: map['wiki'] != null ? map['wiki'] as String : null, - availableLanguages: - List.from((map['availableLanguages'] as List)), - isRadioPresent: map['isRadioPresent'] as bool, - image: List.from( - (map['image']).map( - (x) => ImageDownloadUrl.fromMap(x), - ), - ), - topSongs: List.from( - (map['topSongs']).map( - (x) => SongModel.fromMap(x), - ), - ), - ); - } - - String toJson() => json.encode(toMap()); - - factory ArtistModel.fromJson(String source) => - ArtistModel.fromMap(json.decode(source) as Map); - - @override - String toString() { - return 'ArtistModel(id: $id, name: $name, url: $url, type: $type, followerCount: $followerCount, fanCount: $fanCount, isVerified: $isVerified, dominantLanguage: $dominantLanguage, dominantType: $dominantType, bio: $bio, dob: $dob, fb: $fb, twitter: $twitter, wiki: $wiki, availableLanguages: $availableLanguages, isRadioPresent: $isRadioPresent, image: $image, topSongs: $topSongs)'; - } - - @override - bool operator ==(covariant ArtistModel other) { - if (identical(this, other)) return true; - - return other.id == id && - other.name == name && - other.url == url && - other.type == type && - other.followerCount == followerCount && - other.fanCount == fanCount && - other.isVerified == isVerified && - other.dominantLanguage == dominantLanguage && - other.dominantType == dominantType && - listEquals(other.bio, bio) && - other.dob == dob && - other.fb == fb && - other.twitter == twitter && - other.wiki == wiki && - listEquals(other.availableLanguages, availableLanguages) && - other.isRadioPresent == isRadioPresent && - listEquals(other.image, image) && - listEquals(other.topSongs, topSongs); - } - - @override - int get hashCode { - return id.hashCode ^ - name.hashCode ^ - url.hashCode ^ - type.hashCode ^ - followerCount.hashCode ^ - fanCount.hashCode ^ - isVerified.hashCode ^ - dominantLanguage.hashCode ^ - dominantType.hashCode ^ - bio.hashCode ^ - dob.hashCode ^ - fb.hashCode ^ - twitter.hashCode ^ - wiki.hashCode ^ - availableLanguages.hashCode ^ - isRadioPresent.hashCode ^ - image.hashCode ^ - topSongs.hashCode; - } -} diff --git a/lib/models/artists/sub_artist_model.dart b/lib/models/artists/sub_artist_model.dart deleted file mode 100644 index c887b05..0000000 --- a/lib/models/artists/sub_artist_model.dart +++ /dev/null @@ -1,99 +0,0 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:convert'; - -import 'package:flutter/foundation.dart'; - -import 'package:sangeet/models/helpers/song_image.dart'; - -class SubArtistModel { - final String id; - final String name; - final String role; - final List image; - final String type; - final String url; - SubArtistModel({ - required this.id, - required this.name, - required this.role, - required this.image, - required this.type, - required this.url, - }); - - SubArtistModel copyWith({ - String? id, - String? name, - String? role, - List? image, - String? type, - String? url, - }) { - return SubArtistModel( - id: id ?? this.id, - name: name ?? this.name, - role: role ?? this.role, - image: image ?? this.image, - type: type ?? this.type, - url: url ?? this.url, - ); - } - - Map toMap() { - return { - 'id': id, - 'name': name, - 'role': role, - 'image': image.map((x) => x.toMap()).toList(), - 'type': type, - 'url': url, - }; - } - - factory SubArtistModel.fromMap(Map map) { - return SubArtistModel( - id: map['id'] as String, - name: map['name'] as String, - role: map['role'] as String, - image: List.from( - (map['image']).map( - (x) => ImageDownloadUrl.fromMap(x), - ), - ), - type: map['type'] as String, - url: map['url'] as String, - ); - } - - String toJson() => json.encode(toMap()); - - factory SubArtistModel.fromJson(String source) => - SubArtistModel.fromMap(json.decode(source) as Map); - - @override - String toString() { - return 'SubArtistModel(id: $id, name: $name, role: $role, image: $image, type: $type, url: $url)'; - } - - @override - bool operator ==(covariant SubArtistModel other) { - if (identical(this, other)) return true; - - return other.id == id && - other.name == name && - other.role == role && - listEquals(other.image, image) && - other.type == type && - other.url == url; - } - - @override - int get hashCode { - return id.hashCode ^ - name.hashCode ^ - role.hashCode ^ - image.hashCode ^ - type.hashCode ^ - url.hashCode; - } -} diff --git a/lib/models/explore_model.dart b/lib/models/explore_model.dart deleted file mode 100644 index 4389922..0000000 --- a/lib/models/explore_model.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:sangeet/models/artists/sub_artist_model.dart'; -import 'package:sangeet/models/song_model.dart'; - -class ExploreModel { - final List songs; - final List artists; - - ExploreModel({ - required this.songs, - required this.artists, - }); -} diff --git a/lib/models/helpers/album_submodal.dart b/lib/models/helpers/album_submodal.dart deleted file mode 100644 index 1a8c68a..0000000 --- a/lib/models/helpers/album_submodal.dart +++ /dev/null @@ -1,59 +0,0 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:convert'; - -class Album { - final String id; - final String name; - final String url; - Album({ - required this.id, - required this.name, - required this.url, - }); - - Album copyWith({ - String? id, - String? name, - String? url, - }) { - return Album( - id: id ?? this.id, - name: name ?? this.name, - url: url ?? this.url, - ); - } - - Map toMap() { - return { - 'id': id, - 'name': name, - 'url': url, - }; - } - - factory Album.fromMap(Map map) { - return Album( - id: map['id'] as String, - name: map['name'] as String, - url: map['url'] as String, - ); - } - - String toJson() => json.encode(toMap()); - - factory Album.fromJson(String source) => - Album.fromMap(json.decode(source) as Map); - - @override - String toString() => 'Album(id: $id, name: $name, url: $url)'; - - @override - bool operator ==(covariant Album other) { - if (identical(this, other)) return true; - - return other.id == id && other.name == name && other.url == url; - } - - @override - int get hashCode => id.hashCode ^ name.hashCode ^ url.hashCode; -} diff --git a/lib/models/helpers/download_quality.dart b/lib/models/helpers/download_quality.dart deleted file mode 100644 index cd83281..0000000 --- a/lib/models/helpers/download_quality.dart +++ /dev/null @@ -1,29 +0,0 @@ -enum SongQualityType { - veryLow('12kbps'), - low('48kbps'), - medium('96kbps'), - high('160kbps'), - veryHigh('320kbps'); - - final String type; - const SongQualityType(this.type); -} - -extension ConvertQuality on String { - SongQualityType toSongQualityTypeEnum() { - switch (this) { - case '12kbps': - return SongQualityType.veryLow; - case '48kbps': - return SongQualityType.low; - case '96kbps': - return SongQualityType.medium; - case '160kbps': - return SongQualityType.high; - case '320kbps': - return SongQualityType.veryHigh; - default: - return SongQualityType.medium; - } - } -} diff --git a/lib/models/helpers/download_url.dart b/lib/models/helpers/download_url.dart deleted file mode 100644 index 14db767..0000000 --- a/lib/models/helpers/download_url.dart +++ /dev/null @@ -1,55 +0,0 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:convert'; - -import 'package:sangeet/models/helpers/download_quality.dart'; - -class DownloadUrl { - SongQualityType quality; - String url; - DownloadUrl({ - required this.quality, - required this.url, - }); - - DownloadUrl copyWith({ - SongQualityType? quality, - String? url, - }) { - return DownloadUrl( - quality: quality ?? this.quality, - url: url ?? this.url, - ); - } - - Map toMap() { - return { - 'quality': quality.type, - 'url': url, - }; - } - - factory DownloadUrl.fromMap(Map map) { - return DownloadUrl( - quality: (map['quality'] as String).toSongQualityTypeEnum(), - url: map['url'] as String, - ); - } - - String toJson() => json.encode(toMap()); - - factory DownloadUrl.fromJson(String source) => - DownloadUrl.fromMap(json.decode(source) as Map); - - @override - String toString() => 'DownloadUrl(quality: $quality, url: $url)'; - - @override - bool operator ==(covariant DownloadUrl other) { - if (identical(this, other)) return true; - - return other.quality == quality && other.url == url; - } - - @override - int get hashCode => quality.hashCode ^ url.hashCode; -} diff --git a/lib/models/helpers/song_image.dart b/lib/models/helpers/song_image.dart deleted file mode 100644 index ebcf03b..0000000 --- a/lib/models/helpers/song_image.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'dart:convert'; - -enum ImageQualityType { - low('50x50'), - medium('150x150'), - high('500x500'); - - final String type; - const ImageQualityType(this.type); -} - -extension ConvertQuality on String { - ImageQualityType toImageQualityTypeEnum() { - switch (this) { - case '50x50': - return ImageQualityType.low; - case '150x150': - return ImageQualityType.medium; - case '500x500': - return ImageQualityType.high; - default: - return ImageQualityType.medium; - } - } -} - -class ImageDownloadUrl { - ImageQualityType quality; - String url; - ImageDownloadUrl({ - required this.quality, - required this.url, - }); - - ImageDownloadUrl copyWith({ - ImageQualityType? quality, - String? url, - }) { - return ImageDownloadUrl( - quality: quality ?? this.quality, - url: url ?? this.url, - ); - } - - Map toMap() { - return { - 'quality': quality.type, - 'url': url, - }; - } - - factory ImageDownloadUrl.fromMap(Map map) { - return ImageDownloadUrl( - quality: (map['quality'] as String).toImageQualityTypeEnum(), - url: map['url'] as String, - ); - } - - String toJson() => json.encode(toMap()); - - factory ImageDownloadUrl.fromJson(String source) => - ImageDownloadUrl.fromMap(json.decode(source) as Map); - - @override - String toString() => 'DownloadUrl(quality: $quality, url: $url)'; - - @override - bool operator ==(covariant ImageDownloadUrl other) { - if (identical(this, other)) return true; - - return other.quality == quality && other.url == url; - } - - @override - int get hashCode => quality.hashCode ^ url.hashCode; -} diff --git a/lib/models/song_model.dart b/lib/models/song_model.dart deleted file mode 100644 index a02b9e5..0000000 --- a/lib/models/song_model.dart +++ /dev/null @@ -1,223 +0,0 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:convert'; - -import 'package:collection/collection.dart'; -import 'package:flutter/foundation.dart'; - -import 'package:sangeet/models/helpers/album_submodal.dart'; -import 'package:sangeet/models/helpers/download_url.dart'; -import 'package:sangeet/models/helpers/song_image.dart'; - -@immutable -class SongModel { - final String id; - final String name; - final String type; - final String year; - final String? releaseDate; - final int duration; - final String label; - final bool explicitContent; - final int playCount; - final String language; - final bool hasLyrics; - final String? lyricsId; - final String url; - final String copyright; - final List downloadUrl; - final List image; - final Album album; - const SongModel({ - required this.id, - required this.name, - required this.type, - required this.year, - required this.releaseDate, - required this.duration, - required this.label, - required this.explicitContent, - required this.playCount, - required this.language, - required this.hasLyrics, - this.lyricsId, - required this.url, - required this.copyright, - required this.downloadUrl, - required this.image, - required this.album, - }); - - SongModel copyWith({ - String? id, - String? name, - String? type, - String? year, - String? releaseDate, - int? duration, - String? label, - bool? explicitContent, - int? playCount, - String? language, - bool? hasLyrics, - String? lyricsId, - String? url, - String? copyright, - List? downloadUrl, - List? image, - Album? album, - }) { - return SongModel( - id: id ?? this.id, - name: name ?? this.name, - type: type ?? this.type, - year: year ?? this.year, - releaseDate: releaseDate ?? this.releaseDate, - duration: duration ?? this.duration, - label: label ?? this.label, - explicitContent: explicitContent ?? this.explicitContent, - playCount: playCount ?? this.playCount, - language: language ?? this.language, - hasLyrics: hasLyrics ?? this.hasLyrics, - lyricsId: lyricsId ?? this.lyricsId, - url: url ?? this.url, - copyright: copyright ?? this.copyright, - downloadUrl: downloadUrl ?? this.downloadUrl, - image: image ?? this.image, - album: album ?? this.album, - ); - } - - Map toMap() { - return { - 'id': id, - 'name': name, - 'type': type, - 'year': year, - 'releaseDate': releaseDate, - 'duration': duration, - 'label': label, - 'explicitContent': explicitContent, - 'playCount': playCount, - 'language': language, - 'hasLyrics': hasLyrics, - 'lyricsId': lyricsId, - 'url': url, - 'copyright': copyright, - 'downloadUrl': downloadUrl.map((x) => x.toMap()).toList(), - 'image': image.map((x) => x.toMap()).toList(), - 'album': album.toMap(), - }; - } - - factory SongModel.fromMap(Map map) { - return SongModel( - id: map['id'] as String, - name: map['name'] as String, - type: map['type'] as String, - year: map['year'] as String, - releaseDate: - map['releaseDate'] != null ? map['releaseDate'] as String : null, - duration: map['duration'] as int, - label: map['label'] as String, - explicitContent: map['explicitContent'] as bool, - playCount: map['playCount'] as int, - language: map['language'] as String, - hasLyrics: map['hasLyrics'] as bool, - lyricsId: map['lyricsId'] != null ? map['lyricsId'] as String : null, - url: map['url'] as String, - copyright: map['copyright'] as String, - downloadUrl: List.from( - (map['downloadUrl']).map( - (x) => DownloadUrl.fromMap(x), - ), - ), - image: List.from( - (map['image']).map( - (x) => ImageDownloadUrl.fromMap(x), - ), - ), - album: Album.fromMap(map['album']), - ); - } - - String toJson() => json.encode(toMap()); - - factory SongModel.fromJson(String source) => - SongModel.fromMap(json.decode(source) as Map); - - @override - String toString() { - return 'SongModel(id: $id, name: $name, type: $type, year: $year, releaseDate: $releaseDate, duration: $duration, label: $label, explicitContent: $explicitContent, playCount: $playCount, language: $language, hasLyrics: $hasLyrics, lyricsId: $lyricsId, url: $url, copyright: $copyright, downloadUrl: $downloadUrl, image: $image, album: $album)'; - } - - @override - bool operator ==(covariant SongModel other) { - if (identical(this, other)) return true; - final listEquals = const DeepCollectionEquality().equals; - - return other.id == id && - other.name == name && - other.type == type && - other.year == year && - other.releaseDate == releaseDate && - other.duration == duration && - other.label == label && - other.explicitContent == explicitContent && - other.playCount == playCount && - other.language == language && - other.hasLyrics == hasLyrics && - other.lyricsId == lyricsId && - other.url == url && - other.copyright == copyright && - listEquals(other.downloadUrl, downloadUrl) && - listEquals(other.image, image) && - other.album == album; - } - - @override - int get hashCode { - return id.hashCode ^ - name.hashCode ^ - type.hashCode ^ - year.hashCode ^ - releaseDate.hashCode ^ - duration.hashCode ^ - label.hashCode ^ - explicitContent.hashCode ^ - playCount.hashCode ^ - language.hashCode ^ - hasLyrics.hashCode ^ - lyricsId.hashCode ^ - url.hashCode ^ - copyright.hashCode ^ - downloadUrl.hashCode ^ - image.hashCode ^ - album.hashCode; - } - - factory SongModel.empty() { - return SongModel( - copyright: "", - downloadUrl: const [], - duration: 0, - explicitContent: false, - hasLyrics: false, - id: "", - image: const [], - label: "", - language: "", - name: "", - playCount: 0, - releaseDate: "", - type: "", - url: "", - year: "", - album: Album( - id: "", - name: "", - url: "", - ), - lyricsId: "", - ); - } -} From 82f822b857e2effe1fb236aacc112b8100da8171 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 15:43:45 +0530 Subject: [PATCH 10/20] current playing page --- lib/frame/commons.dart | 59 +---- lib/frame/home.dart | 44 ++-- lib/frame/widgets/sidebar.dart | 107 --------- .../artist/widgets/artist_top_details.dart | 1 - lib/functions/explore/widgets/album_card.dart | 11 +- .../player/views/current_playing_view.dart | 208 +++++++++++++++++- .../player/widgets/base_audio_player.dart | 14 +- .../player/widgets/current_playing_list.dart | 4 +- .../widgets/player_control_buttons.dart | 6 +- pubspec.lock | 8 - pubspec.yaml | 1 - 11 files changed, 259 insertions(+), 204 deletions(-) delete mode 100644 lib/frame/widgets/sidebar.dart diff --git a/lib/frame/commons.dart b/lib/frame/commons.dart index 3f0276c..fa6f302 100644 --- a/lib/frame/commons.dart +++ b/lib/frame/commons.dart @@ -1,65 +1,14 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/functions/explore/views/explore_view.dart'; -import 'package:sangeet/functions/search/views/search_view.dart'; -import 'package:sangeet/functions/settings/views/settings_view.dart'; final appScreenConfigProvider = - StateNotifierProvider((ref) { + StateNotifierProvider((ref) { return AppScreenConfig(); }); -enum Screens { - explore( - AppScreen( - name: "Explore Sangeet", - index: 0, - view: ExploreView(), - ), - ), - search( - AppScreen( - name: "Search Songs", - index: 1, - view: SearchView(), - ), - ), - settings( - AppScreen( - name: "Settings", - index: 2, - view: SettingsView(), - ), - ); - - final AppScreen screen; - const Screens(this.screen); -} - -class AppScreenConfig extends StateNotifier { - AppScreenConfig() : super(Screens.explore); +class AppScreenConfig extends StateNotifier { + AppScreenConfig() : super(0); void onIndex(int idx) { - state = Screens.values.firstWhere((e) => e.index == idx); - } - - void goto({ - required Screens screen, - Map parameters = const {}, - }) { - state = screen; + state = idx; } } - -class AppScreen { - final Widget view; - final String name; - final int index; - - const AppScreen({ - required this.view, - required this.name, - required this.index, - }); -} diff --git a/lib/frame/home.dart b/lib/frame/home.dart index df3401a..f008b2b 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; +import 'package:sangeet/functions/player/views/current_playing_view.dart'; import 'package:window_manager/window_manager.dart'; import 'package:tray_manager/tray_manager.dart'; @@ -14,6 +15,8 @@ import 'package:sangeet/functions/search/views/search_view.dart'; import 'package:sangeet/functions/settings/views/settings_view.dart'; import 'package:sangeet/functions/shortcuts/actions.dart'; +import 'commons.dart'; + class HomeFrame extends ConsumerStatefulWidget { const HomeFrame({super.key}); @@ -23,14 +26,6 @@ class HomeFrame extends ConsumerStatefulWidget { class _HomeFrameState extends ConsumerState with TrayListener, WindowListener { - int _index = 0; - - void onDestinationSelected(int i) { - setState(() { - _index = i; - }); - } - @override void initState() { super.initState(); @@ -47,10 +42,14 @@ class _HomeFrameState extends ConsumerState @override Widget build(BuildContext context) { + final index = ref.watch(appScreenConfigProvider); + final config = ref.watch(appScreenConfigProvider.notifier); + final player = ref.watch(playerControllerProvider.notifier).getPlayer; + return Actions( actions: >{ BaseIntent: SongActions( - audioPlayer: ref.watch(playerControllerProvider.notifier).getPlayer, + audioPlayer: player, ) }, child: GlobalShortcuts( @@ -66,21 +65,27 @@ class _HomeFrameState extends ConsumerState ), }, child: Scaffold( + backgroundColor: Colors.transparent, body: Row( children: [ NavigationRail( - selectedIndex: _index, - onDestinationSelected: onDestinationSelected, - destinations: const [ - NavigationRailDestination( + selectedIndex: index, + onDestinationSelected: (idx) => config.onIndex(idx), + destinations: [ + const NavigationRailDestination( icon: Icon(Icons.home), label: Text("Home"), ), - NavigationRailDestination( + const NavigationRailDestination( icon: Icon(Icons.search), label: Text("Search"), ), NavigationRailDestination( + icon: const Icon(Icons.music_note_rounded), + label: const Text("Current Playing"), + disabled: !player.playing, + ), + const NavigationRailDestination( icon: Icon(Icons.settings), label: Text("Settings"), ), @@ -104,7 +109,7 @@ class _HomeFrameState extends ConsumerState Expanded( flex: 1, child: IndexedStack( - index: _index, + index: index, children: [ _buildNavigator( 0, @@ -116,12 +121,19 @@ class _HomeFrameState extends ConsumerState ), _buildNavigator( 2, + const CurrentPlayingView(), + ), + _buildNavigator( + 3, const SettingsView(), ), ], ), ), - const BaseAudioPlayer(), + Visibility( + visible: index != 2, + child: const BaseAudioPlayer(), + ), ], ), ), diff --git a/lib/frame/widgets/sidebar.dart b/lib/frame/widgets/sidebar.dart deleted file mode 100644 index 8c5d97a..0000000 --- a/lib/frame/widgets/sidebar.dart +++ /dev/null @@ -1,107 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/frame/commons.dart'; -import 'package:sidebarx/sidebarx.dart'; - -class SideBar extends ConsumerWidget { - final SidebarXController controller; - const SideBar({ - required this.controller, - super.key, - }); - - @override - Widget build(BuildContext context, WidgetRef ref) { - return SidebarX( - controller: controller, - animationDuration: const Duration(milliseconds: 100), - theme: sideBarTheme, - extendedTheme: sidebarExtendedTheme, - items: [ - SidebarXItem( - label: 'Home', - onTap: () => ref - .watch(appScreenConfigProvider.notifier) - .goto(screen: Screens.explore), - iconBuilder: (selected, hovered) => iconBuilder( - selected, - hovered, - Icons.home, - ), - ), - SidebarXItem( - label: 'Search', - onTap: () => ref - .watch(appScreenConfigProvider.notifier) - .goto(screen: Screens.search), - iconBuilder: (selected, hovered) => iconBuilder( - selected, - hovered, - Icons.search, - ), - ), - ], - footerItems: [ - SidebarXItem( - label: "Settings", - onTap: () => ref - .watch(appScreenConfigProvider.notifier) - .goto(screen: Screens.settings), - iconBuilder: (selected, hovered) => iconBuilder( - selected, - hovered, - Icons.settings, - ), - ) - ], - ); - } - - static SidebarXTheme sideBarTheme = SidebarXTheme( - margin: const EdgeInsets.all(10), - decoration: BoxDecoration( - color: Colors.blueGrey.withOpacity(.1), - borderRadius: BorderRadius.circular(20), - ), - hoverColor: Colors.grey, - itemTextPadding: const EdgeInsets.only(left: 20), - selectedItemTextPadding: const EdgeInsets.only(left: 20), - textStyle: TextStyle(color: Colors.white.withOpacity(0.7)), - selectedTextStyle: const TextStyle(color: Colors.white), - hoverTextStyle: const TextStyle( - color: Colors.white, - ), - ); - - static SidebarXTheme sidebarExtendedTheme = SidebarXTheme( - width: 200, - decoration: BoxDecoration( - borderRadius: const BorderRadius.only( - bottomRight: Radius.circular(20), - topRight: Radius.circular(20), - ), - color: Colors.grey.withOpacity(.1), - ), - ); -} - -Widget iconBuilder(bool selected, bool hovered, IconData icon) { - if (selected) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), - child: Icon( - icon, - color: Colors.white, - size: 30, - ), - ); - } - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), - child: Icon( - icon, - color: Colors.grey, - size: 30, - ), - ); -} diff --git a/lib/functions/artist/widgets/artist_top_details.dart b/lib/functions/artist/widgets/artist_top_details.dart index d4fea2d..437f20f 100644 --- a/lib/functions/artist/widgets/artist_top_details.dart +++ b/lib/functions/artist/widgets/artist_top_details.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet_api/models.dart'; diff --git a/lib/functions/explore/widgets/album_card.dart b/lib/functions/explore/widgets/album_card.dart index d7e96b5..e15e1c6 100644 --- a/lib/functions/explore/widgets/album_card.dart +++ b/lib/functions/explore/widgets/album_card.dart @@ -21,10 +21,13 @@ class AlbumCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - CircleAvatar( - radius: 55, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(album.images[2].url), + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + album.images[1].url, + width: 100, + height: 100, + ), ), const SizedBox(height: 10), Text( diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index 051c9b7..1949bb3 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -1,11 +1,217 @@ +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/frame/commons.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; +import 'package:sangeet_api/models.dart'; class CurrentPlayingView extends ConsumerWidget { + static route() => MaterialPageRoute( + builder: (context) => const CurrentPlayingView(), + ); const CurrentPlayingView({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { - return Container(); + final player = ref.watch(getAudioPlayer); + return StreamBuilder( + stream: player.sequenceStateStream, + builder: (context, snapshot) { + final state = snapshot.data; + if (snapshot.connectionState == ConnectionState.waiting) { + return Container(height: 0); + } + if (state?.sequence.isEmpty ?? true) { + return const SizedBox(); + } + + final song = state!.currentSource!.tag as SongModel; + final songs = state.sequence; + + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: NetworkImage(song.images[2].url), + fit: BoxFit.cover, + ), + ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + song.images[2].url, + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + children: [ + Text( + song.title, + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + Text( + song.subtitle, + style: const TextStyle( + fontSize: 18, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => ref + .watch( + appScreenConfigProvider.notifier) + .onIndex(0), + icon: + const Icon(Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), + ), + ), + PlayerControllerButtons( + player: player, + onPressed: () {}, + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: songs.length, + itemBuilder: (context, index) { + final s = songs[index].tag as SongModel; + return ListTile( + onTap: () {}, + title: Text(s.title), + subtitle: Text( + "${formatNumber(s.playCount)} listens, ${formatDuration(song.duration)} long", + ), + leading: CircleAvatar( + backgroundImage: NetworkImage( + s.images[1].url, + ), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ), + + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ); + }, + ); } } diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 3343c1b..827ef4e 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -3,13 +3,16 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/frame/commons.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; import 'package:sangeet_api/modules/song/models/song_model.dart'; class BaseAudioPlayer extends ConsumerStatefulWidget { - const BaseAudioPlayer({super.key}); + const BaseAudioPlayer({ + super.key, + }); @override ConsumerState createState() => @@ -25,6 +28,7 @@ class _BaseAudioPlayerState extends ConsumerState { stream: player.sequenceStateStream, builder: (context, snapshot) { final state = snapshot.data; + if (snapshot.connectionState == ConnectionState.waiting) { return Container(height: 0); } @@ -34,11 +38,7 @@ class _BaseAudioPlayerState extends ConsumerState { final metadata = state!.currentSource!.tag as SongModel; - // Start return Card( - surfaceTintColor: Colors.transparent, - color: Colors.transparent, - shadowColor: Colors.transparent, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -132,7 +132,9 @@ class _BaseAudioPlayerState extends ConsumerState { mainAxisAlignment: MainAxisAlignment.end, children: [ IconButton( - onPressed: () {}, + onPressed: () => ref + .watch(appScreenConfigProvider.notifier) + .onIndex(2), icon: const Icon(Icons.open_in_full_rounded), ), ], diff --git a/lib/functions/player/widgets/current_playing_list.dart b/lib/functions/player/widgets/current_playing_list.dart index 99f90b2..bbca8a9 100644 --- a/lib/functions/player/widgets/current_playing_list.dart +++ b/lib/functions/player/widgets/current_playing_list.dart @@ -23,8 +23,8 @@ class _PlaylistViewState extends ConsumerState { final state = snapshot.data; final sequence = state?.sequence ?? []; - final song = sequence[state!.currentIndex].tag as SongModel; - if (state.currentIndex == playlist.length - 1) { + // final song = sequence[state!.currentIndex].tag as SongModel; + if (state!.currentIndex == playlist.length - 1) { // playlist.removeRange(0, 10); // ref // .watch(playerControllerProvider.notifier) diff --git a/lib/functions/player/widgets/player_control_buttons.dart b/lib/functions/player/widgets/player_control_buttons.dart index a19c218..e5a2203 100644 --- a/lib/functions/player/widgets/player_control_buttons.dart +++ b/lib/functions/player/widgets/player_control_buttons.dart @@ -65,7 +65,7 @@ class PlayerControllerButtons extends StatelessWidget { } else if (playing != true) { return IconButton( icon: const Icon( - Icons.play_arrow, + Icons.play_arrow_rounded, size: 35, color: Colors.white, ), @@ -77,7 +77,7 @@ class PlayerControllerButtons extends StatelessWidget { } else if (processingState != ProcessingState.completed) { return IconButton( icon: const Icon( - Icons.pause, + Icons.pause_rounded, size: 35, color: Colors.white, ), @@ -89,7 +89,7 @@ class PlayerControllerButtons extends StatelessWidget { } else { return IconButton( icon: const Icon( - Icons.replay, + Icons.replay_circle_filled_rounded, size: 35, color: Colors.white, ), diff --git a/pubspec.lock b/pubspec.lock index bb2d45f..4d27359 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -641,14 +641,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.2" - sidebarx: - dependency: "direct main" - description: - name: sidebarx - sha256: abe39d6db237fb8e25c600e8039ffab80fa7fe71acab03e9c378c31f912d2766 - url: "https://pub.dev" - source: hosted - version: "0.17.1" skeletonizer: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 1d82d2c..0e47804 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,7 +50,6 @@ dependencies: flutter_acrylic: ^1.1.3 skeletonizer: ^1.2.0 shared_preferences: ^2.2.3 - sidebarx: ^0.17.1 tray_manager: ^0.2.3 hotkey_manager: ^0.2.3 bot_toast: ^4.1.3 From c42cfb8befbeffd39823d53ef0466833eeb1b680 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Tue, 2 Jul 2024 18:05:34 +0530 Subject: [PATCH 11/20] refac., bindings, and hot fixes --- .../commons.dart => core/app_config.dart} | 0 lib/core/constants.dart | 1 - lib/core/core.dart | 1 - lib/core/failure.dart | 5 - lib/core/size_manager.dart | 47 --- lib/core/theme.dart | 1 - lib/core/type_defs.dart | 6 - lib/core/widgets/blur_image_container.dart | 41 +++ lib/core/widgets/top_details.dart | 75 ++++ lib/frame/home.dart | 2 +- lib/frame/widgets/record_hotkey_dialog.dart | 103 ------ lib/functions/album/view/album_view.dart | 321 ++++++++-------- lib/functions/artist/view/artist_view.dart | 312 +++++++--------- .../controllers/explore_controller.dart | 11 +- .../player/controllers/player_controller.dart | 16 +- .../player/views/current_playing_view.dart | 72 +++- .../player/widgets/base_audio_player.dart | 3 +- .../widgets/player_control_buttons.dart | 15 +- .../playlist/view/playlist_view.dart | 309 +++++++--------- lib/functions/song/view/song_view.dart | 343 +++++++++--------- lib/main.dart | 8 +- pubspec.lock | 40 -- pubspec.yaml | 5 +- .../flutter/generated_plugin_registrant.cc | 3 - windows/flutter/generated_plugins.cmake | 1 - 25 files changed, 794 insertions(+), 947 deletions(-) rename lib/{frame/commons.dart => core/app_config.dart} (100%) delete mode 100644 lib/core/failure.dart delete mode 100644 lib/core/size_manager.dart delete mode 100644 lib/core/theme.dart create mode 100644 lib/core/widgets/blur_image_container.dart create mode 100644 lib/core/widgets/top_details.dart delete mode 100644 lib/frame/widgets/record_hotkey_dialog.dart diff --git a/lib/frame/commons.dart b/lib/core/app_config.dart similarity index 100% rename from lib/frame/commons.dart rename to lib/core/app_config.dart diff --git a/lib/core/constants.dart b/lib/core/constants.dart index 7bdd374..501cdbf 100644 --- a/lib/core/constants.dart +++ b/lib/core/constants.dart @@ -1,5 +1,4 @@ class Constants { - static String serverUrl = "saavn.dev"; static String appName = "Sangeet Desktop"; static String appIconPath = "assets/app_icon.ico"; } diff --git a/lib/core/core.dart b/lib/core/core.dart index f3ca94e..470523c 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -1,4 +1,3 @@ -export './failure.dart'; export './type_defs.dart'; export './widgets/error.dart'; export './widgets/loading.dart'; diff --git a/lib/core/failure.dart b/lib/core/failure.dart deleted file mode 100644 index 8d5dc40..0000000 --- a/lib/core/failure.dart +++ /dev/null @@ -1,5 +0,0 @@ -class Failure { - final String message; - final StackTrace stackTrace; - const Failure(this.message, this.stackTrace); -} diff --git a/lib/core/size_manager.dart b/lib/core/size_manager.dart deleted file mode 100644 index a2c0bd7..0000000 --- a/lib/core/size_manager.dart +++ /dev/null @@ -1,47 +0,0 @@ -abstract class AppSize { - static const double s0 = 0.0; - static const double s2 = 2.0; - static const double s4 = 4.0; - static const double s6 = 6.0; - static const double s10 = 10.0; - static const double s12 = 12.0; - static const double s14 = 14.0; - static const double s16 = 16.0; - static const double s18 = 18.0; - static const double s20 = 20.0; - static const double s22 = 22.0; - static const double s24 = 24.0; - static const double s26 = 26.0; - static const double s28 = 28.0; - static const double s30 = 30.0; - static const double s34 = 34.0; - static const double s36 = 36.0; - static const double s40 = 40.0; - static const double s42 = 42.0; - static const double s44 = 44.0; - static const double s46 = 46.0; - static const double s56 = 56.0; - static const double s62 = 62.0; - static const double s64 = 64.0; - static const double s66 = 66.0; - static const double s68 = 68.0; - static const double s70 = 70.0; - static const double s72 = 72.0; - static const double s74 = 74.0; - static const double s76 = 76.0; - static const double s78 = 78.0; - static const double s90 = 90.0; - static const double s142 = 142.0; - static const double s268 = 268.0; -} - -abstract class AppPadding { - static const double p2 = 2.0; - static const double p4 = 4.0; - static const double p8 = 8.0; - static const double p10 = 10.0; - static const double p12 = 12.0; - static const double p14 = 14.0; - static const double p16 = 16.0; - static const double p18 = 18.0; -} diff --git a/lib/core/theme.dart b/lib/core/theme.dart deleted file mode 100644 index 8b13789..0000000 --- a/lib/core/theme.dart +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/core/type_defs.dart b/lib/core/type_defs.dart index 94232b8..193b543 100644 --- a/lib/core/type_defs.dart +++ b/lib/core/type_defs.dart @@ -1,9 +1,3 @@ -import 'package:fpdart/fpdart.dart'; -import 'package:sangeet/core/failure.dart'; - -typedef FutureEither = Future>; -typedef FutureEitherVoid = FutureEither; - enum MediaType { artist, playlist, diff --git a/lib/core/widgets/blur_image_container.dart b/lib/core/widgets/blur_image_container.dart new file mode 100644 index 0000000..e57ff27 --- /dev/null +++ b/lib/core/widgets/blur_image_container.dart @@ -0,0 +1,41 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +class BlurImageContainer extends StatelessWidget { + final String image; + final Widget child; + + const BlurImageContainer({ + super.key, + required this.image, + required this.child, + }); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: NetworkImage(image), + fit: BoxFit.cover, + ), + ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Colors.black.withOpacity(1), + Colors.black54.withOpacity(0.1), + Colors.black.withOpacity(1), + ], + ), + ), + child: child, + ), + ), + ); + } +} diff --git a/lib/core/widgets/top_details.dart b/lib/core/widgets/top_details.dart new file mode 100644 index 0000000..a220c67 --- /dev/null +++ b/lib/core/widgets/top_details.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; + +class TopDetailsContainer extends StatelessWidget { + final String image; + final String title; + final String subtitle; + final Color? badgeBackgroundColor; + final Widget? badge; + final AlignmentGeometry? badgeAlign; + const TopDetailsContainer({ + super.key, + required this.image, + required this.title, + required this.subtitle, + this.badgeBackgroundColor, + this.badge, + this.badgeAlign, + }); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Badge( + backgroundColor: badgeBackgroundColor, + label: badge, + alignment: badgeAlign, + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + image, + width: 200, + height: 200, + ), + ), + ), + Flexible( + child: Container( + padding: const EdgeInsets.all(8.0), + margin: const EdgeInsets.only(left: 2), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + ), + softWrap: true, + maxLines: 2, + ), + Text( + subtitle, + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w200, + ), + maxLines: 2, + ), + ], + ), + ), + ) + ], + ); + } +} diff --git a/lib/frame/home.dart b/lib/frame/home.dart index f008b2b..2692ae0 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -15,7 +15,7 @@ import 'package:sangeet/functions/search/views/search_view.dart'; import 'package:sangeet/functions/settings/views/settings_view.dart'; import 'package:sangeet/functions/shortcuts/actions.dart'; -import 'commons.dart'; +import '../core/app_config.dart'; class HomeFrame extends ConsumerStatefulWidget { const HomeFrame({super.key}); diff --git a/lib/frame/widgets/record_hotkey_dialog.dart b/lib/frame/widgets/record_hotkey_dialog.dart deleted file mode 100644 index 479e1bb..0000000 --- a/lib/frame/widgets/record_hotkey_dialog.dart +++ /dev/null @@ -1,103 +0,0 @@ -import 'package:bot_toast/bot_toast.dart'; -import 'package:flutter/material.dart'; -import 'package:hotkey_manager/hotkey_manager.dart'; - -class RecordHotKeyDialog extends StatefulWidget { - const RecordHotKeyDialog({ - super.key, - required this.onHotKeyRecorded, - }); - - final ValueChanged onHotKeyRecorded; - - @override - State createState() => _RecordHotKeyDialogState(); -} - -class _RecordHotKeyDialogState extends State { - HotKey? _hotKey; - - void _handleSetAsInappWideChanged(bool newValue) { - if (_hotKey == null) { - BotToast.showText(text: 'Please record a hotkey first.'); - return; - } - _hotKey = HotKey( - key: _hotKey!.key, - modifiers: _hotKey?.modifiers, - scope: newValue ? HotKeyScope.inapp : HotKeyScope.system, - ); - setState(() {}); - } - - @override - Widget build(BuildContext context) { - return AlertDialog( - content: SingleChildScrollView( - child: ListBody( - children: [ - const Text('The `HotKeyRecorder` widget will record your hotkey.'), - Container( - width: 100, - height: 60, - margin: const EdgeInsets.only(top: 20), - decoration: BoxDecoration( - border: Border.all( - color: Theme.of(context).primaryColor, - ), - ), - child: Stack( - alignment: Alignment.center, - children: [ - HotKeyRecorder( - onHotKeyRecorded: (hotKey) { - _hotKey = hotKey; - setState(() {}); - }, - ), - ], - ), - ), - GestureDetector( - onTap: () { - _handleSetAsInappWideChanged( - _hotKey?.scope != HotKeyScope.inapp, - ); - }, - child: Row( - children: [ - Checkbox( - value: _hotKey?.scope == HotKeyScope.inapp, - onChanged: (newValue) { - _handleSetAsInappWideChanged(newValue!); - }, - ), - const Text( - 'Set as inapp-wide hotkey. (default is system-wide)', - ), - ], - ), - ), - ], - ), - ), - actions: [ - TextButton( - child: const Text('Cancel'), - onPressed: () { - Navigator.of(context).pop(); - }, - ), - TextButton( - onPressed: _hotKey == null - ? null - : () { - widget.onHotKeyRecorded(_hotKey!); - Navigator.of(context).pop(); - }, - child: const Text('OK'), - ), - ], - ); - } -} diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index c9c71a8..b57dac7 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,14 +1,13 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/album/controllers/album_controller.dart'; -import 'package:sangeet/functions/album/widgets/album_top_details.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class AlbumView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -25,190 +24,160 @@ class AlbumView extends ConsumerWidget { return ref.watch(albumByIdProvider(name)).when( data: (album) { - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(album.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), + return BlurImageContainer( + image: album.images[2].url, + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: album.images[2].url, + subtitle: album.subtitle, + title: album.title, + badgeBackgroundColor: album.explicitContent + ? Colors.teal + : Colors.transparent, + badge: Visibility( + visible: album.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, ), - AlbumTopDetails(album: album), - Container( - padding: const EdgeInsets.all(8), - margin: - const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - album.artists[0].image), - ), - Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - album.artists[0].name, - style: - GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: - TextDecoration - .underline), - ), - ) - ], - ), - ), - IconButton( - onPressed: () => ref - .watch(playerControllerProvider - .notifier) - .runRadio( - radioId: album.id, - type: MediaType.album), + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, + Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, ), ), - ], + ), ), - ), - Container( - padding: - const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: album.songs.length, - itemBuilder: (context, index) { - final song = album.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: album.id, + type: MediaType.album), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), ), - ), - ], + ], + ), ), - ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: album.songs.length, + itemBuilder: (context, index) { + final song = album.songs[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(SongView.route(song.id)), + title: Text(song.title), + style: ListTileStyle.list, + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), + ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: album.artists.length, - itemBuilder: (context, index) { - final artist = album.artists[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(ArtistView.route(artist.id)), - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - ], + ), ), - ), - )) - ], - ), - ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: album.artists.length, + itemBuilder: (context, index) { + final artist = album.artists[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + )) + ], ), ); }, diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart index 1341b9a..d4d6b8b 100644 --- a/lib/functions/artist/view/artist_view.dart +++ b/lib/functions/artist/view/artist_view.dart @@ -1,12 +1,12 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/top_details.dart'; +import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/artist/controller/artist_controller.dart'; -import 'package:sangeet/functions/artist/widgets/artist_top_details.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class ArtistView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -24,190 +24,154 @@ class ArtistView extends ConsumerWidget { return ref.watch(artistByIdProvider(name)).when( data: (artist) { - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(artist.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - ArtistTopDetails(artist: artist), - Container( - padding: const EdgeInsets.all(8), - margin: - const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 4, - ), - child: Text( - artist.dominantType, - style: - GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: - TextDecoration.underline, - ), - ), - ) - ], - ), - ), - IconButton( - onPressed: () { - // => ref - // .watch(playerControllerProvider - // .notifier) - // .runRadio( - // radioId: chart.id, - // type: MediaType.playlist), - }, + return BlurImageContainer( + image: artist.images[2].url, + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: artist.images[2].url, + subtitle: artist.subtitle, + title: artist.name, + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, + Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, ), ), - ], + ), ), - ), - Container( - padding: - const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: artist.topSongs.length, - itemBuilder: (context, index) { - final song = artist.topSongs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatDuration(song.duration)}, ${song.label}"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); + // TODO: FIX THIS ADD SOMETHING TO PLAY + IconButton( + onPressed: () { + // => ref + // .watch(playerControllerProvider + // .notifier) + // .runRadio( + // radioId: chart.id, + // type: MediaType.playlist), }, + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), ), - ), - ], + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: artist.topSongs.length, + itemBuilder: (context, index) { + final song = artist.topSongs[index]; + return ListTile( + onTap: () => Navigator.of(context).push( + SongView.route(song.id), + ), + title: Text(song.title), + subtitle: Text( + "${formatDuration(song.duration)}, ${song.label}"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), ), - ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - // physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Top Albums.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Top Albums.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: artist.topAlbums.length, + itemBuilder: (context, index) { + final album = artist.topAlbums[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(AlbumView.route(artist.id)), + title: Text(album.title), + subtitle: Text(album.subtitle), + leading: CircleAvatar( + backgroundImage: NetworkImage( + album.images[1].url, ), ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: artist.topAlbums.length, - itemBuilder: (context, index) { - final album = artist.topAlbums[index]; - return ListTile( - onTap: () {}, - title: Text(album.title), - subtitle: Text(album.subtitle), - leading: CircleAvatar( - backgroundImage: NetworkImage( - album.images[1].url, - ), - ), - ); - }, - ), - ], + ); + }, ), - ), + ], ), - ) - ], - ), - ), + ), + ), + ) + ], ), ); }, diff --git a/lib/functions/explore/controllers/explore_controller.dart b/lib/functions/explore/controllers/explore_controller.dart index 163bf4c..5f5914b 100644 --- a/lib/functions/explore/controllers/explore_controller.dart +++ b/lib/functions/explore/controllers/explore_controller.dart @@ -15,6 +15,11 @@ final getExploreDataProvider = FutureProvider((ref) { return exploreController.getExploreData(); }); +final getRelatedSongsProvider = FutureProvider.family((ref, String id) { + final exploreController = ref.watch(exploreControllerProvider.notifier); + return exploreController.getRadio(id); +}); + class ExploreController extends StateNotifier { final SangeetAPI _api; ExploreController({required SangeetAPI api}) @@ -33,8 +38,10 @@ class ExploreController extends StateNotifier { return data; } - Future getRadio(String id, bool featured) async { - final data = await _api.song.radio(songId: id, featured: featured); + Future getRadio(String id) async { + final data = await _api.song.radio( + songId: id, + ); if (data == null) { throw Error.throwWithStackTrace( diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 92a4fbc..2898373 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -7,7 +7,6 @@ import 'package:just_audio/just_audio.dart'; import 'package:rxdart/rxdart.dart'; import 'package:sangeet/core/api_provider.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/settings/controllers/settings_controller.dart'; import 'package:sangeet_api/modules/song/models/song_model.dart'; @@ -16,7 +15,6 @@ import 'package:sangeet_api/sangeet_api.dart'; final playerControllerProvider = StateNotifierProvider((ref) { return PlayerController( - exploreController: ref.watch(exploreControllerProvider.notifier), settingsController: ref.watch(settingsControllerProvider.notifier), api: ref.watch(sangeetAPIProvider), ); @@ -26,7 +24,6 @@ final getAudioPlayer = Provider((ref) => ref.watch(playerControllerProvider.notifier).getPlayer); class PlayerController extends StateNotifier { - final ExploreController _exploreController; final SettingsController _settingsController; final SangeetAPI _api; @@ -40,11 +37,9 @@ class PlayerController extends StateNotifier { ); PlayerController({ - required ExploreController exploreController, required SettingsController settingsController, required SangeetAPI api, - }) : _exploreController = exploreController, - _settingsController = settingsController, + }) : _settingsController = settingsController, _api = api, super(false); @@ -71,9 +66,14 @@ class PlayerController extends StateNotifier { final quality = await _settingsController.getSongQuality(); if (type == MediaType.song) { - final songsObjects = await _exploreController.getRadio(radioId, false); + final songsObjects = await _api.song.radio(songId: radioId); final song = await _api.song.getById(songId: radioId); - songs = [song!, ...songsObjects.songs]; + if (songsObjects == null || song == null) { + throw Error.throwWithStackTrace( + "Can't load right now", StackTrace.empty); + } + + songs = [song, ...songsObjects.songs]; } if (type == MediaType.album) { diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index 1949bb3..9159af9 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -1,12 +1,15 @@ import 'dart:ui'; +import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:sangeet/core/utils.dart'; -import 'package:sangeet/frame/commons.dart'; +import 'package:sangeet/core/app_config.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; import 'package:sangeet_api/models.dart'; @@ -105,6 +108,69 @@ class CurrentPlayingView extends ConsumerWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + Expanded( + flex: 1, + child: StreamBuilder( + stream: ref + .watch( + playerControllerProvider.notifier) + .positionDataStream, + builder: (context, snapshot) { + final positionData = snapshot.data; + return ProgressBar( + progress: positionData?.position ?? + Duration.zero, + buffered: + positionData?.bufferedPosition ?? + Duration.zero, + total: positionData?.duration ?? + Duration.zero, + progressBarColor: Colors.teal, + baseBarColor: + Colors.white.withOpacity(0.24), + bufferedBarColor: + Colors.white.withOpacity(0.24), + thumbColor: Colors.white, + timeLabelLocation: + TimeLabelLocation.sides, + timeLabelType: + TimeLabelType.totalTime, + barHeight: 3.0, + thumbRadius: 4.0, + onSeek: (duration) { + player.seek(duration); + }, + ); + }, + ), + ), + PlayerControllerButtons( + player: player, + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Next Songs.', + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ), + ), Container( padding: const EdgeInsets.all(8), child: TextButton.icon( @@ -121,10 +187,6 @@ class CurrentPlayingView extends ConsumerWidget { ), ), ), - PlayerControllerButtons( - player: player, - onPressed: () {}, - ), ], ), ), diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 827ef4e..9abf636 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:sangeet/frame/commons.dart'; +import 'package:sangeet/core/app_config.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; @@ -117,7 +117,6 @@ class _BaseAudioPlayerState extends ConsumerState { ), PlayerControllerButtons( player: player, - onPressed: () {}, ), ], ), diff --git a/lib/functions/player/widgets/player_control_buttons.dart b/lib/functions/player/widgets/player_control_buttons.dart index e5a2203..83c7fcf 100644 --- a/lib/functions/player/widgets/player_control_buttons.dart +++ b/lib/functions/player/widgets/player_control_buttons.dart @@ -3,17 +3,14 @@ import 'package:just_audio/just_audio.dart'; class PlayerControllerButtons extends StatelessWidget { final AudioPlayer player; - final VoidCallback onPressed; const PlayerControllerButtons({ super.key, required this.player, - required this.onPressed, }); @override Widget build(BuildContext context) { return Row( - // mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -22,9 +19,9 @@ class PlayerControllerButtons extends StatelessWidget { builder: (context, snapshot) { final loopMode = snapshot.data ?? LoopMode.off; const icons = [ - Icon(Icons.repeat, color: Colors.grey), - Icon(Icons.repeat, color: Colors.orange), - Icon(Icons.repeat_one, color: Colors.orange), + Icon(Icons.repeat, color: Colors.white), + Icon(Icons.repeat, color: Colors.teal), + Icon(Icons.repeat_one, color: Colors.teal), ]; const cycleModes = [ LoopMode.off, @@ -44,6 +41,7 @@ class PlayerControllerButtons extends StatelessWidget { IconButton( icon: const Icon( Icons.skip_previous_rounded, + color: Colors.white, ), onPressed: () => player.seekToPrevious(), ), @@ -104,6 +102,7 @@ class PlayerControllerButtons extends StatelessWidget { IconButton( icon: const Icon( Icons.skip_next_rounded, + color: Colors.white, ), onPressed: () => player.seekToNext(), ), @@ -113,8 +112,8 @@ class PlayerControllerButtons extends StatelessWidget { final shuffleModeEnabled = snapshot.data ?? false; return IconButton( icon: shuffleModeEnabled - ? const Icon(Icons.shuffle, color: Colors.orange) - : const Icon(Icons.shuffle, color: Colors.grey), + ? const Icon(Icons.shuffle, color: Colors.teal) + : const Icon(Icons.shuffle, color: Colors.white), onPressed: () async { final enable = !shuffleModeEnabled; if (enable) { diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index cb4451c..391c3df 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -1,13 +1,13 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart'; import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class PlaylistView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -24,192 +24,147 @@ class PlaylistView extends ConsumerWidget { return ref.watch(playlistByIdProvider(name)).when( data: (playlist) { - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(playlist.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - PlaylistTopDetails(playlist: playlist), - Container( - padding: const EdgeInsets.all(8), - margin: - const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - playlist.artists[0].image), - ), - Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - playlist.artists[0].name, - style: - GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: - TextDecoration - .underline), - ), - ) - ], - ), - ), - IconButton( - onPressed: () => ref - .watch(playerControllerProvider - .notifier) - .runRadio( - radioId: playlist.id, - type: MediaType.playlist), + return BlurImageContainer( + image: playlist.images[2].url, + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + PlaylistTopDetails(playlist: playlist), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, + Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, ), - splashColor: Color(playlist.playCount), ), - ], + ), ), - ), - Container( - padding: - const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: playlist.songs.length, - itemBuilder: (context, index) { - final song = playlist.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: playlist.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: Color(playlist.playCount), ), - ), - ], + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: playlist.songs.length, + itemBuilder: (context, index) { + final song = playlist.songs[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(SongView.route(song.id)), + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), ), - ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: playlist.artists.length, - itemBuilder: (context, index) { - final artist = playlist.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - const SizedBox(height: 20), - ], + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: playlist.artists.length, + itemBuilder: (context, index) { + final artist = playlist.artists[index]; + return ListTile( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, ), - ), + const SizedBox(height: 20), + ], ), - ) - ], - ), - ), + ), + ), + ) + ], ), ); }, diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index ce493bf..0cf16b4 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -1,12 +1,13 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/top_details.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/song/controllers/song_controller.dart'; -import 'package:sangeet/functions/song/widgets/song_top_details.dart'; class SongView extends ConsumerStatefulWidget { static route(String id) => MaterialPageRoute( @@ -28,192 +29,182 @@ class _SongViewState extends ConsumerState { return ref.watch(songByIdProvider(name)).when( data: (song) { - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(song.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, + return BlurImageContainer( + image: song.images[2].url, + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: song.images[2].url, + subtitle: song.subtitle, + title: song.title, + badgeBackgroundColor: song.explicitContent + ? Colors.teal + : Colors.transparent, + badge: Visibility( + visible: song.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), + icon: const Icon( + Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, + ), ), ), ), - ), - SongTopDetails(song: song), - Container( - padding: const EdgeInsets.all(8), - margin: - const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + ), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + splashColor: song.accentColor, ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - // onTap: () => Navigator.of(context).pop(), - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - song.artists[0].image), + ], + ), + ), + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Related Songs.', + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ref + .watch(getRelatedSongsProvider(song.id)) + .when( + data: (sug) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: sug.songs.length, + itemBuilder: (context, index) { + final song = sug.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long", ), - Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - song.artists[0].name, - style: - GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: - TextDecoration - .underline), + leading: CircleAvatar( + backgroundImage: NetworkImage( + song.images[1].url, ), - ) - ], - ), - ), - IconButton( - onPressed: () => ref - .watch(playerControllerProvider - .notifier) - .runRadio( - radioId: song.id, - type: MediaType.song, ), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: song.accentColor, - ), - ], + ); + }, + ); + }, + error: (er, st) => + ErrorPage(error: er.toString()), + loading: () => const Loader(), ), - ), - - // Container( - // padding: const EdgeInsets.symmetric(vertical: 10), - // child: ListView.builder( - // shrinkWrap: true, - // physics: const BouncingScrollPhysics(), - // scrollDirection: Axis.vertical, - // itemCount: album.songs.length, - // itemBuilder: (context, index) { - // final song = album.songs[index]; - // return ListTile( - // onTap: () {}, - // title: Text(song.title), - // subtitle: Text( - // "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - // leading: CircleAvatar( - // backgroundImage: - // NetworkImage(song.images[1].url), - // ), - // ); - // }, - // ), - // ), - ], ), - ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: song.artists.length, - itemBuilder: (context, index) { - final artist = song.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - ], + ), ), - ), - )) - ], - ), - ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return ListTile( + onTap: () => Navigator.of(context).push( + ArtistView.route(artist.id), + ), + title: Text(artist.name), + subtitle: Text(artist.role), + leading: CircleAvatar( + backgroundImage: + NetworkImage(artist.image), + ), + ); + }, + ), + ], + ), + ), + )) + ], ), ); }, diff --git a/lib/main.dart b/lib/main.dart index 9c0d2ed..c8c652d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,7 @@ -import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; +import 'package:bot_toast/bot_toast.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; @@ -33,10 +33,6 @@ class MyApp extends StatelessWidget { ), darkTheme: ThemeData.dark().copyWith( textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), - colorScheme: ColorScheme.fromSeed( - seedColor: Colors.deepPurpleAccent, - brightness: Brightness.dark, - ), cardTheme: const CardTheme( color: Colors.transparent, elevation: .01, diff --git a/pubspec.lock b/pubspec.lock index 4d27359..5f4da31 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -177,22 +177,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - flex_color_scheme: - dependency: "direct main" - description: - name: flex_color_scheme - sha256: "32914024a4f404d90ff449f58d279191675b28e7c08824046baf06826e99d984" - url: "https://pub.dev" - source: hosted - version: "7.3.1" - flex_seed_scheme: - dependency: transitive - description: - name: flex_seed_scheme - sha256: "4cee2f1d07259f77e8b36f4ec5f35499d19e74e17c7dce5b819554914082bc01" - url: "https://pub.dev" - source: hosted - version: "1.5.0" flutter: dependency: "direct main" description: flutter @@ -248,14 +232,6 @@ packages: description: flutter source: sdk version: "0.0.0" - fpdart: - dependency: "direct main" - description: - name: fpdart - sha256: "7413acc5a6569a3fe8277928fc7487f3198530f0c4e635d0baef199ea36e8ee9" - url: "https://pub.dev" - source: hosted - version: "1.1.0" google_fonts: dependency: "direct main" description: @@ -726,22 +702,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0+1" - system_theme: - dependency: "direct main" - description: - name: system_theme - sha256: "1f208db140a3d1e1eac2034b54920d95699c1534df576ced44b3312c5de3975f" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - system_theme_web: - dependency: transitive - description: - name: system_theme_web - sha256: "7566f5a928f6d28d7a60c97bea8a851d1c6bc9b86a4df2366230a97458489219" - url: "https://pub.dev" - source: hosted - version: "0.0.2" term_glyph: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0e47804..6978b3e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,9 +35,6 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.6 - system_theme: ^2.3.1 - fpdart: ^1.1.0 - http: ^1.2.1 flutter_riverpod: ^2.5.1 just_audio: ^0.9.37 audio_session: ^0.1.19 @@ -61,7 +58,7 @@ dependencies: ref: main google_fonts: ^6.2.1 intl: ^0.19.0 - flex_color_scheme: ^7.3.1 + http: ^1.2.1 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index be4151d..f7f6fe2 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -24,8 +23,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("JustAudioWindowsPlugin")); ScreenRetrieverPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); - SystemThemePluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("SystemThemePlugin")); TrayManagerPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("TrayManagerPlugin")); WindowManagerPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 236b256..1a50e2b 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -7,7 +7,6 @@ list(APPEND FLUTTER_PLUGIN_LIST hotkey_manager_windows just_audio_windows screen_retriever - system_theme tray_manager window_manager windows_notification From 0de9581f1aec4b2b801214efef4951e9e3975dfb Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 10:18:44 +0530 Subject: [PATCH 12/20] refac. and DRY --- lib/core/core.dart | 1 + lib/core/widgets/media_card.dart | 91 ++++++ lib/core/widgets/play_button.dart | 22 ++ lib/frame/home.dart | 2 +- lib/functions/album/view/album_view.dart | 70 ++-- .../album/widgets/album_top_details.dart | 88 ----- lib/functions/artist/view/artist_view.dart | 20 +- .../artist/widgets/artist_top_details.dart | 89 ----- lib/functions/charts/view/charts_view.dart | 307 ++++++++---------- .../charts/widgets/charts_top_details.dart | 76 ----- .../controllers/explore_controller.dart | 16 + .../explore/widgets/browse_card.dart | 86 +++++ .../explore/widgets/explore_list.dart | 45 ++- .../explore/widgets/playlist_card.dart | 15 +- lib/functions/explore/widgets/radio_card.dart | 9 +- .../player/controllers/player_controller.dart | 15 +- .../player/views/current_playing_view.dart | 71 +++- .../player/widgets/base_audio_player.dart | 2 +- .../widgets/player_control_buttons.dart | 2 + .../playlist/view/playlist_view.dart | 13 +- .../widgets/playlist_top_details.dart | 92 ------ .../song/widgets/song_top_details.dart | 89 ----- lib/main.dart | 2 +- 23 files changed, 518 insertions(+), 705 deletions(-) create mode 100644 lib/core/widgets/media_card.dart create mode 100644 lib/core/widgets/play_button.dart delete mode 100644 lib/functions/album/widgets/album_top_details.dart delete mode 100644 lib/functions/artist/widgets/artist_top_details.dart delete mode 100644 lib/functions/charts/widgets/charts_top_details.dart create mode 100644 lib/functions/explore/widgets/browse_card.dart delete mode 100644 lib/functions/playlist/widgets/playlist_top_details.dart delete mode 100644 lib/functions/song/widgets/song_top_details.dart diff --git a/lib/core/core.dart b/lib/core/core.dart index 470523c..7449449 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -1,3 +1,4 @@ export './type_defs.dart'; export './widgets/error.dart'; export './widgets/loading.dart'; +export './utils.dart'; diff --git a/lib/core/widgets/media_card.dart b/lib/core/widgets/media_card.dart new file mode 100644 index 0000000..b414812 --- /dev/null +++ b/lib/core/widgets/media_card.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; + +class MediaCard extends StatelessWidget { + final String image; + final String title; + final String subtitle; + final IconData? badgeIcon; + final VoidCallback onTap; + final VoidCallback? onDoubleTap; + final bool explicitContent; + final Color? accentColor; + const MediaCard({ + super.key, + required this.onTap, + required this.image, + this.accentColor, + required this.title, + required this.subtitle, + this.badgeIcon, + required this.explicitContent, + this.onDoubleTap, + }); + + @override + Widget build(BuildContext context) { + return Card( + surfaceTintColor: accentColor, + child: InkWell( + onTap: onTap, + onDoubleTap: onDoubleTap, + borderRadius: BorderRadius.circular(15), + child: Stack( + alignment: Alignment.bottomRight, + children: [ + Container( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Badge( + isLabelVisible: badgeIcon != null, + backgroundColor: + explicitContent ? Colors.redAccent : Colors.teal, + label: Icon( + badgeIcon, + size: 10, + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + image, + width: 50, + height: 50, + ), + ), + ), + Flexible( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + softWrap: true, + ), + Text( + subtitle, + style: const TextStyle( + overflow: TextOverflow.fade, + ), + maxLines: 2, + softWrap: true, + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/core/widgets/play_button.dart b/lib/core/widgets/play_button.dart new file mode 100644 index 0000000..9e3a299 --- /dev/null +++ b/lib/core/widgets/play_button.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; + +class PlayButton extends StatelessWidget { + final VoidCallback onPressed; + const PlayButton({super.key, required this.onPressed}); + + @override + Widget build(BuildContext context) { + return IconButton( + tooltip: "Play", + onPressed: onPressed, + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), + ); + } +} diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 2692ae0..c42547b 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -44,7 +44,7 @@ class _HomeFrameState extends ConsumerState Widget build(BuildContext context) { final index = ref.watch(appScreenConfigProvider); final config = ref.watch(appScreenConfigProvider.notifier); - final player = ref.watch(playerControllerProvider.notifier).getPlayer; + final player = ref.watch(getAudioPlayer); return Actions( actions: >{ diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index b57dac7..f9e3a6f 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/play_button.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/album/controllers/album_controller.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:sangeet/functions/song/view/song_view.dart'; class AlbumView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -63,39 +63,25 @@ class AlbumView extends ConsumerWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: const Icon( - Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), + Wrap( + children: [ + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: + const Icon(Icons.more_vert_rounded), ), - ), + ], ), - IconButton( + PlayButton( onPressed: () => ref .watch( playerControllerProvider.notifier) .runRadio( radioId: album.id, type: MediaType.album), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - ), + ) ], ), ), @@ -108,17 +94,13 @@ class AlbumView extends ConsumerWidget { itemCount: album.songs.length, itemBuilder: (context, index) { final song = album.songs[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(SongView.route(song.id)), - title: Text(song.title), - style: ListTileStyle.list, - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), + return MediaCard( + onTap: () {}, + image: song.images[1].url, + title: song.title, + subtitle: + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)}", + explicitContent: song.explicitContent, ); }, ), @@ -161,15 +143,13 @@ class AlbumView extends ConsumerWidget { itemCount: album.artists.length, itemBuilder: (context, index) { final artist = album.artists[index]; - return ListTile( + return MediaCard( onTap: () => Navigator.of(context) .push(ArtistView.route(artist.id)), - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, ); }, ), diff --git a/lib/functions/album/widgets/album_top_details.dart b/lib/functions/album/widgets/album_top_details.dart deleted file mode 100644 index 3509ca1..0000000 --- a/lib/functions/album/widgets/album_top_details.dart +++ /dev/null @@ -1,88 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; - -class AlbumTopDetails extends StatelessWidget { - final AlbumModel album; - const AlbumTopDetails({super.key, required this.album}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Badge( - backgroundColor: - album.explicitContent ? Colors.teal : Colors.transparent, - label: Visibility( - visible: album.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - album.images[2].url, - width: 200, - height: 200, - ), - ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - album.title, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - ), - softWrap: true, - maxLines: 2, - ), - Text( - album.subtitle, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w200, - ), - maxLines: 2, - ), - Text( - "${album.language} - ${album.year}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - Text( - "Songs - ${album.listCount}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - ], - ), - ), - ) - ], - ); - } -} diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart index d4d6b8b..03f1961 100644 --- a/lib/functions/artist/view/artist_view.dart +++ b/lib/functions/artist/view/artist_view.dart @@ -6,6 +6,7 @@ import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/artist/controller/artist_controller.dart'; +import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/song/view/song_view.dart'; class ArtistView extends ConsumerWidget { @@ -70,16 +71,15 @@ class ArtistView extends ConsumerWidget { ), ), ), - // TODO: FIX THIS ADD SOMETHING TO PLAY IconButton( - onPressed: () { - // => ref - // .watch(playerControllerProvider - // .notifier) - // .runRadio( - // radioId: chart.id, - // type: MediaType.playlist), - }, + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: artist.id, + type: MediaType.artist, + prevSongs: artist.topSongs, + ), icon: const Icon( Icons.play_arrow_rounded, size: 35, @@ -155,7 +155,7 @@ class ArtistView extends ConsumerWidget { final album = artist.topAlbums[index]; return ListTile( onTap: () => Navigator.of(context) - .push(AlbumView.route(artist.id)), + .push(AlbumView.route(album.id)), title: Text(album.title), subtitle: Text(album.subtitle), leading: CircleAvatar( diff --git a/lib/functions/artist/widgets/artist_top_details.dart b/lib/functions/artist/widgets/artist_top_details.dart deleted file mode 100644 index 437f20f..0000000 --- a/lib/functions/artist/widgets/artist_top_details.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet/core/utils.dart'; -import 'package:sangeet_api/models.dart'; - -class ArtistTopDetails extends StatelessWidget { - final ArtistModel artist; - const ArtistTopDetails({super.key, required this.artist}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - artist.images[2].url, - width: 200, - height: 200, - ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - artist.name, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - ), - softWrap: true, - maxLines: 2, - ), - Text( - artist.subtitle, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w200, - ), - maxLines: 2, - ), - Visibility( - visible: artist.isVerified, - child: Row( - children: [ - Text( - "Verified", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - const Icon( - Icons.verified_rounded, - color: Colors.blue, - ) - ], - ), - ), - Text( - "Followers - ${formatNumber(artist.followersCount)}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - ], - ), - ), - ) - ], - ); - } -} diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index 8f42073..e4b358f 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,12 +1,10 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/charts/controllers/charts_controller.dart'; -import 'package:sangeet/functions/charts/widgets/charts_top_details.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; class ChartView extends ConsumerWidget { @@ -25,190 +23,147 @@ class ChartView extends ConsumerWidget { return ref.watch(chartByIdProvider(name)).when( data: (chart) { - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(chart.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - ChartTopDetails(chart: chart), - Container( - padding: const EdgeInsets.all(8), - margin: - const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - InkWell( - child: Row( - children: [ - CircleAvatar( - backgroundImage: NetworkImage( - chart.artists[0].image), - ), - Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 4), - child: Text( - chart.artists[0].name, - style: - GoogleFonts.caesarDressing() - .copyWith( - fontSize: 18, - decoration: - TextDecoration - .underline), - ), - ) - ], - ), - ), - IconButton( - onPressed: () => ref - .watch(playerControllerProvider - .notifier) - .runRadio( - radioId: chart.id, - type: MediaType.playlist), + return BlurImageContainer( + image: chart.images[2].url, + child: Row( + children: [ + Expanded( + child: Container( + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(8.0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + title: chart.title, + subtitle: chart.subtitle, + image: chart.images[2].url, + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: Navigator.of(context).canPop(), + child: Container( + padding: const EdgeInsets.all(8), + child: TextButton.icon( + onPressed: () => + Navigator.of(context).pop(), icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, + Icons.arrow_left_rounded), + label: const Text("Back"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: Colors.black12, ), ), - ], + ), ), - ), - Container( - padding: - const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: chart.songs.length, - itemBuilder: (context, index) { - final song = chart.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, + IconButton( + onPressed: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: chart.id, + type: MediaType.playlist), + icon: const Icon( + Icons.play_arrow_rounded, + size: 35, + color: Colors.white, + ), + style: IconButton.styleFrom( + backgroundColor: Colors.teal, + ), ), - ), - ], + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: chart.songs.length, + itemBuilder: (context, index) { + final song = chart.songs[index]; + return ListTile( + onTap: () {}, + title: Text(song.title), + subtitle: Text( + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), + leading: CircleAvatar( + backgroundImage: + NetworkImage(song.images[1].url), + ), + ); + }, + ), ), - ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: chart.artists.length, - itemBuilder: (context, index) { - final artist = chart.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), - ), - ); - }, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - ], + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return ListTile( + onTap: () {}, + title: Text(artist.name), + subtitle: Text(artist.type), + leading: CircleAvatar( + backgroundImage: NetworkImage(artist.image), + ), + ); + }, ), - ), + ], ), - ) - ], - ), - ), + ), + ), + ) + ], ), ); }, diff --git a/lib/functions/charts/widgets/charts_top_details.dart b/lib/functions/charts/widgets/charts_top_details.dart deleted file mode 100644 index f7d18c0..0000000 --- a/lib/functions/charts/widgets/charts_top_details.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; - -class ChartTopDetails extends StatelessWidget { - final PlaylistModel chart; - const ChartTopDetails({super.key, required this.chart}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Badge( - backgroundColor: - chart.explicitContent ? Colors.teal : Colors.transparent, - label: Visibility( - visible: chart.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - chart.images[1].url, - width: 200, - height: 200, - ), - ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - chart.title, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - ), - softWrap: true, - maxLines: 2, - ), - Text( - chart.subtitle, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w200, - ), - maxLines: 2, - ), - Text( - "${chart.language}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - ], - ), - ), - ) - ], - ); - } -} diff --git a/lib/functions/explore/controllers/explore_controller.dart b/lib/functions/explore/controllers/explore_controller.dart index 5f5914b..53e0c88 100644 --- a/lib/functions/explore/controllers/explore_controller.dart +++ b/lib/functions/explore/controllers/explore_controller.dart @@ -19,6 +19,10 @@ final getRelatedSongsProvider = FutureProvider.family((ref, String id) { final exploreController = ref.watch(exploreControllerProvider.notifier); return exploreController.getRadio(id); }); +final getTrendingSongsProvider = FutureProvider((ref) { + final exploreController = ref.watch(exploreControllerProvider.notifier); + return exploreController.getTrendingSongs(); +}); class ExploreController extends StateNotifier { final SangeetAPI _api; @@ -38,6 +42,18 @@ class ExploreController extends StateNotifier { return data; } + Future getTrendingSongs() async { + final data = await _api.explore.trending(); + if (data == null) { + throw Error.throwWithStackTrace( + "Unable to fetch data!", + StackTrace.current, + ); + } + + return data; + } + Future getRadio(String id) async { final data = await _api.song.radio( songId: id, diff --git a/lib/functions/explore/widgets/browse_card.dart b/lib/functions/explore/widgets/browse_card.dart new file mode 100644 index 0000000..fbe3035 --- /dev/null +++ b/lib/functions/explore/widgets/browse_card.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; + +class BrowseCard extends StatelessWidget { + final VoidCallback onTap; + final String image; + final String title; + final String subtitle; + final bool explicitContent; + final Color? accentColor; + const BrowseCard({ + super.key, + required this.onTap, + required this.image, + required this.title, + required this.subtitle, + required this.explicitContent, + this.accentColor, + }); + + @override + Widget build(BuildContext context) { + return Card( + surfaceTintColor: accentColor, + margin: const EdgeInsets.all(5.0), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(15), + child: Container( + width: 150, + height: 100, + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + image, + width: 100, + height: 100, + ), + ), + const SizedBox(height: 10), + Text( + title, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + maxLines: 1, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(1.0), + child: Text( + subtitle, + style: const TextStyle( + fontSize: 16, + ), + maxLines: 1, + overflow: TextOverflow.fade, + textAlign: TextAlign.center, + ), + ), + ), + Visibility( + visible: explicitContent, + child: const Icon( + Icons.explicit, + size: 16, + ), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index e6f1b7c..db19664 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -1,13 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/utils.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/charts/view/charts_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; -import 'package:sangeet/functions/explore/widgets/album_card.dart'; -import 'package:sangeet/functions/explore/widgets/chart_card.dart'; -import 'package:sangeet/functions/explore/widgets/playlist_card.dart'; -import 'package:sangeet/functions/explore/widgets/radio_card.dart'; +import 'package:sangeet/functions/explore/widgets/browse_card.dart'; import 'package:sangeet/functions/explore/widgets/trend_card.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/playlist/view/playlist_view.dart'; @@ -128,10 +126,17 @@ class ExploreList extends ConsumerWidget { itemCount: albums.length, itemBuilder: (context, index) { final album = albums[index]; - return AlbumCard( - album: album, - onTap: () => Navigator.of(context) - .push(AlbumView.route(album.id)), + return BrowseCard( + accentColor: album.accentColor, + explicitContent: album.explicitContent, + image: album.images[1].url, + subtitle: album.subtitle == "" + ? album.artists.map((e) => e.name).join(',') + : album.subtitle, + title: album.title, + onTap: () => Navigator.of(context).push( + AlbumView.route(album.id), + ), ); }, ), @@ -156,8 +161,13 @@ class ExploreList extends ConsumerWidget { scrollDirection: Axis.horizontal, itemBuilder: (context, index) { final chart = charts[index]; - return ChartCard( - chart: chart, + return BrowseCard( + explicitContent: chart.explicitContent, + image: chart.image, + subtitle: chart.subtitle == "" + ? chart.language + : chart.subtitle, + title: chart.title, onTap: () => Navigator.of(context).push( ChartView.route(chart.token), ), @@ -190,8 +200,12 @@ class ExploreList extends ConsumerWidget { itemCount: radios.length, itemBuilder: (context, index) { final radio = radios[index]; - return RadioCard( - radio: radio, + return BrowseCard( + accentColor: hexToColor(radio.accentColor), + explicitContent: radio.explicitContent, + image: radio.image, + subtitle: radio.subtitle, + title: radio.title, onTap: () => ref .watch(playerControllerProvider.notifier) .runRadio( @@ -228,8 +242,11 @@ class ExploreList extends ConsumerWidget { itemCount: playlists.length, itemBuilder: (context, index) { final playlist = playlists[index]; - return PlaylistCard( - playlist: playlist, + return BrowseCard( + explicitContent: playlist.explicitContent, + image: playlist.images[1].url, + subtitle: playlist.subtitle, + title: playlist.title, onTap: () => Navigator.of(context).push( PlaylistView.route(playlist.id), ), diff --git a/lib/functions/explore/widgets/playlist_card.dart b/lib/functions/explore/widgets/playlist_card.dart index 8665d8a..149a285 100644 --- a/lib/functions/explore/widgets/playlist_card.dart +++ b/lib/functions/explore/widgets/playlist_card.dart @@ -21,17 +21,10 @@ class PlaylistCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - Badge( - label: Text("${playlist.songCount}"), - alignment: Alignment.bottomLeft, - child: Hero( - tag: "${playlist.id}-image", - child: CircleAvatar( - radius: 55, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(playlist.images[2].url), - ), - ), + CircleAvatar( + radius: 55, + backgroundColor: Colors.black, + foregroundImage: NetworkImage(playlist.images[2].url), ), const SizedBox(height: 10), Text( diff --git a/lib/functions/explore/widgets/radio_card.dart b/lib/functions/explore/widgets/radio_card.dart index e2f3450..dad757e 100644 --- a/lib/functions/explore/widgets/radio_card.dart +++ b/lib/functions/explore/widgets/radio_card.dart @@ -10,7 +10,6 @@ class RadioCard extends StatelessWidget { @override Widget build(BuildContext context) { return Card( - // elevation: 0, surfaceTintColor: hexToColor(radio.accentColor), margin: const EdgeInsets.all(5.0), child: InkWell( @@ -46,13 +45,15 @@ class RadioCard extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(1.0), child: Text( - radio.description ?? radio.language, + radio.description == "" + ? radio.language + : radio.description!, style: const TextStyle( fontSize: 16, - overflow: TextOverflow.ellipsis, + overflow: TextOverflow.fade, ), textAlign: TextAlign.center, - maxLines: 2, + maxLines: 1, softWrap: true, ), ), diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 2898373..274ded0 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -58,12 +58,18 @@ class PlayerController extends StateNotifier { required String radioId, required MediaType type, VoidCallback? redirect, + List? prevSongs, }) async { try { List songs = []; - await playlist.clear(); + if (playlist.length > 0) { + await playlist.clear(); + } final quality = await _settingsController.getSongQuality(); + if (prevSongs != null) { + songs = prevSongs; + } if (type == MediaType.song) { final songsObjects = await _api.song.radio(songId: radioId); @@ -94,7 +100,6 @@ class PlayerController extends StateNotifier { songs = playlistModel.songs; } - if (type == MediaType.radio) { final radio = await _api.song.radio(songId: radioId, featured: true); if (radio == null) { @@ -104,6 +109,12 @@ class PlayerController extends StateNotifier { ); } songs = radio.songs; + } else { + // if (prevSongs == null) { + // throw Error(); + // } else { + // songs = prevSongs; + // } } for (var i = 0; i < songs.length; i++) { diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index 9159af9..b89cae8 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -2,12 +2,14 @@ import 'dart:ui'; import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; +import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/app_config.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; @@ -89,7 +91,7 @@ class CurrentPlayingView extends ConsumerWidget { ), ), Text( - song.subtitle, + song.albumName, style: const TextStyle( fontSize: 18, ), @@ -263,6 +265,71 @@ class CurrentPlayingView extends ConsumerWidget { ); }, ), + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Trending.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + child: ref.watch(getTrendingSongsProvider).when( + data: (data) { + return ListView( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + children: [ + ...data.songs.map( + (song) => MediaCard( + onTap: () {}, + image: song.images[0].url, + title: song.title, + subtitle: song.albumName, + badgeIcon: + Icons.music_note_rounded, + explicitContent: + song.explicitContent, + ), + ), + ...data.albums.map( + (album) => MediaCard( + onTap: () {}, + image: album.images[0].url, + title: album.title, + subtitle: album.artists + .map((e) => e.name) + .join(','), + badgeIcon: Icons.album_rounded, + explicitContent: + album.explicitContent, + onDoubleTap: () {}, + ), + ), + ...data.playlists.map( + (playlist) => MediaCard( + onTap: () {}, + image: playlist.images[0].url, + title: playlist.title, + subtitle: playlist.subtitle, + badgeIcon: + Icons.playlist_play_rounded, + explicitContent: + playlist.explicitContent, + onDoubleTap: () {}, + ), + ), + ], + ); + }, + error: (er, st) => ErrorPage( + error: er.toString(), + ), + loading: () => const LoadingPage(), + ), + ), ], ), ), diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 9abf636..4c03307 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -71,7 +71,7 @@ class _BaseAudioPlayerState extends ConsumerState { maxLines: 1, ), Text( - metadata.subtitle, + metadata.albumName, maxLines: 1, ), ], diff --git a/lib/functions/player/widgets/player_control_buttons.dart b/lib/functions/player/widgets/player_control_buttons.dart index 83c7fcf..f21331c 100644 --- a/lib/functions/player/widgets/player_control_buttons.dart +++ b/lib/functions/player/widgets/player_control_buttons.dart @@ -58,6 +58,8 @@ class PlayerControllerButtons extends StatelessWidget { child: const CircularProgressIndicator( strokeCap: StrokeCap.round, strokeAlign: -4, + color: Colors.teal, + strokeWidth: 2, ), ); } else if (playing != true) { diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index 391c3df..c2b65db 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -3,10 +3,10 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/playlist/controllers/playlist_controller.dart'; -import 'package:sangeet/functions/playlist/widgets/playlist_top_details.dart'; import 'package:sangeet/functions/song/view/song_view.dart'; class PlaylistView extends ConsumerWidget { @@ -37,7 +37,11 @@ class PlaylistView extends ConsumerWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - PlaylistTopDetails(playlist: playlist), + TopDetailsContainer( + image: playlist.images[2].url, + subtitle: playlist.subtitle, + title: playlist.title, + ), Container( padding: const EdgeInsets.all(8), margin: const EdgeInsets.symmetric(vertical: 10), @@ -71,8 +75,9 @@ class PlaylistView extends ConsumerWidget { .watch( playerControllerProvider.notifier) .runRadio( - radioId: playlist.id, - type: MediaType.playlist), + radioId: playlist.id, + type: MediaType.playlist, + ), icon: const Icon( Icons.play_arrow_rounded, size: 35, diff --git a/lib/functions/playlist/widgets/playlist_top_details.dart b/lib/functions/playlist/widgets/playlist_top_details.dart deleted file mode 100644 index b35ea1d..0000000 --- a/lib/functions/playlist/widgets/playlist_top_details.dart +++ /dev/null @@ -1,92 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet/core/utils.dart'; -import 'package:sangeet_api/models.dart'; - -class PlaylistTopDetails extends StatelessWidget { - final PlaylistModel playlist; - const PlaylistTopDetails({super.key, required this.playlist}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Badge( - backgroundColor: - playlist.explicitContent ? Colors.teal : Colors.transparent, - label: Visibility( - visible: playlist.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - child: Hero( - tag: "${playlist.id}-image", - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - playlist.images[2].url, - width: 200, - height: 200, - ), - ), - ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - playlist.title, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - ), - softWrap: true, - maxLines: 2, - ), - Text( - playlist.subtitle, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w200, - ), - maxLines: 2, - ), - Text( - "fans - ${formatNumber(playlist.fanCount)} \nfollowers - ${formatNumber(playlist.followerCount)}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - Text( - "Songs - ${playlist.songs.length}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - ], - ), - ), - ) - ], - ); - } -} diff --git a/lib/functions/song/widgets/song_top_details.dart b/lib/functions/song/widgets/song_top_details.dart deleted file mode 100644 index beb0ea6..0000000 --- a/lib/functions/song/widgets/song_top_details.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet/core/utils.dart'; -import 'package:sangeet_api/models.dart'; - -class SongTopDetails extends StatelessWidget { - final SongModel song; - const SongTopDetails({super.key, required this.song}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Badge( - backgroundColor: - song.explicitContent ? Colors.teal : Colors.transparent, - label: Visibility( - visible: song.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - song.images[2].url, - width: 200, - height: 200, - ), - ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - song.title, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - ), - softWrap: true, - maxLines: 2, - ), - Text( - song.subtitle, - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w200, - ), - maxLines: 2, - ), - Text( - "${song.language} - ${song.year}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - Text( - "Listens - ${formatNumber(song.playCount)}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .textTheme - .labelSmall! - .color! - .withOpacity(.7), - ), - ), - ], - ), - ), - ) - ], - ); - } -} diff --git a/lib/main.dart b/lib/main.dart index c8c652d..db97e25 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -35,7 +35,7 @@ class MyApp extends StatelessWidget { textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), cardTheme: const CardTheme( color: Colors.transparent, - elevation: .01, + elevation: .5, ), ), themeMode: ThemeMode.dark, From 20e088c319c9ff1b5a9ec5d3edd07d3e100b01f8 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 14:24:31 +0530 Subject: [PATCH 13/20] component refac. and DRY views --- lib/core/widgets/media_card.dart | 45 +- lib/core/widgets/split_view_container.dart | 46 ++ lib/core/widgets/top_details.dart | 109 ++-- lib/frame/home.dart | 13 +- lib/functions/album/view/album_view.dart | 240 ++++---- lib/functions/artist/view/artist_view.dart | 243 ++++---- lib/functions/charts/view/charts_view.dart | 237 ++++---- lib/functions/explore/widgets/album_card.dart | 69 --- lib/functions/explore/widgets/chart_card.dart | 64 -- .../explore/widgets/explore_list.dart | 11 +- .../explore/widgets/playlist_card.dart | 66 --- lib/functions/explore/widgets/radio_card.dart | 76 --- .../player/controllers/player_controller.dart | 85 +-- .../player/views/current_playing_view.dart | 552 +++++++++--------- .../playlist/view/playlist_view.dart | 244 ++++---- lib/functions/song/view/song_view.dart | 290 +++++---- 16 files changed, 1042 insertions(+), 1348 deletions(-) create mode 100644 lib/core/widgets/split_view_container.dart delete mode 100644 lib/functions/explore/widgets/album_card.dart delete mode 100644 lib/functions/explore/widgets/chart_card.dart delete mode 100644 lib/functions/explore/widgets/playlist_card.dart delete mode 100644 lib/functions/explore/widgets/radio_card.dart diff --git a/lib/core/widgets/media_card.dart b/lib/core/widgets/media_card.dart index b414812..09828c7 100644 --- a/lib/core/widgets/media_card.dart +++ b/lib/core/widgets/media_card.dart @@ -7,6 +7,8 @@ class MediaCard extends StatelessWidget { final IconData? badgeIcon; final VoidCallback onTap; final VoidCallback? onDoubleTap; + final VoidCallback? onMenuTap; + final bool showMenu; final bool explicitContent; final Color? accentColor; const MediaCard({ @@ -19,6 +21,8 @@ class MediaCard extends StatelessWidget { this.badgeIcon, required this.explicitContent, this.onDoubleTap, + this.onMenuTap, + this.showMenu = true, }); @override @@ -28,14 +32,14 @@ class MediaCard extends StatelessWidget { child: InkWell( onTap: onTap, onDoubleTap: onDoubleTap, - borderRadius: BorderRadius.circular(15), - child: Stack( - alignment: Alignment.bottomRight, + borderRadius: BorderRadius.circular(12), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( - padding: const EdgeInsets.symmetric(horizontal: 8.0), + Flexible( child: Row( - mainAxisSize: MainAxisSize.max, + mainAxisSize: MainAxisSize.min, children: [ Badge( isLabelVisible: badgeIcon != null, @@ -46,16 +50,26 @@ class MediaCard extends StatelessWidget { size: 10, ), child: ClipRRect( - borderRadius: BorderRadius.circular(8), + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(8), + topLeft: Radius.circular(8), + ), child: Image.network( image, - width: 50, - height: 50, + width: 60, + height: 60, + errorBuilder: (context, error, stackTrace) { + return const SizedBox( + width: 60, + height: 60, + child: Icon(Icons.error_outline_rounded), + ); + }, ), ), ), Flexible( - child: Padding( + child: Container( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -66,6 +80,7 @@ class MediaCard extends StatelessWidget { style: const TextStyle( fontWeight: FontWeight.bold, ), + maxLines: 1, softWrap: true, ), Text( @@ -73,7 +88,7 @@ class MediaCard extends StatelessWidget { style: const TextStyle( overflow: TextOverflow.fade, ), - maxLines: 2, + maxLines: 1, softWrap: true, ), ], @@ -83,6 +98,14 @@ class MediaCard extends StatelessWidget { ], ), ), + Visibility( + visible: showMenu, + child: IconButton( + tooltip: "Options", + onPressed: onMenuTap ?? () {}, + icon: const Icon(Icons.more_vert_rounded), + ), + ), ], ), ), diff --git a/lib/core/widgets/split_view_container.dart b/lib/core/widgets/split_view_container.dart new file mode 100644 index 0000000..06b532c --- /dev/null +++ b/lib/core/widgets/split_view_container.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; + +class SplitViewContainer extends StatelessWidget { + final Widget rightChild; + final Widget leftChild; + const SplitViewContainer({ + super.key, + required this.rightChild, + required this.leftChild, + }); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + primary: true, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: leftChild, + ), + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: rightChild, + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/core/widgets/top_details.dart b/lib/core/widgets/top_details.dart index a220c67..9e265f1 100644 --- a/lib/core/widgets/top_details.dart +++ b/lib/core/widgets/top_details.dart @@ -4,6 +4,7 @@ class TopDetailsContainer extends StatelessWidget { final String image; final String title; final String subtitle; + final String thirdLine; final Color? badgeBackgroundColor; final Widget? badge; final AlignmentGeometry? badgeAlign; @@ -15,61 +16,77 @@ class TopDetailsContainer extends StatelessWidget { this.badgeBackgroundColor, this.badge, this.badgeAlign, + this.thirdLine = "", }); @override Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Badge( - backgroundColor: badgeBackgroundColor, - label: badge, - alignment: badgeAlign, - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.network( - image, - width: 200, - height: 200, + return Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Badge( + backgroundColor: badgeBackgroundColor, + label: badge, + alignment: badgeAlign, + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.network( + image, + width: 200, + height: 200, + ), + ), ), ), - ), - Flexible( - child: Container( - padding: const EdgeInsets.all(8.0), - margin: const EdgeInsets.only(left: 2), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: const TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, + Flexible( + child: Container( + width: double.infinity, + padding: const EdgeInsets.all(8.0), + margin: const EdgeInsets.only(left: 2), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + overflow: TextOverflow.ellipsis, + ), + softWrap: true, + maxLines: 1, ), - softWrap: true, - maxLines: 2, - ), - Text( - subtitle, - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.w200, + Text( + subtitle, + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w200, + ), + maxLines: 2, ), - maxLines: 2, - ), - ], + Text( + thirdLine, + style: const TextStyle( + fontSize: 14, + ), + maxLines: 4, + ), + ], + ), ), - ), - ) - ], + ) + ], + ), ); } } diff --git a/lib/frame/home.dart b/lib/frame/home.dart index c42547b..29c09bd 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -71,21 +71,20 @@ class _HomeFrameState extends ConsumerState NavigationRail( selectedIndex: index, onDestinationSelected: (idx) => config.onIndex(idx), - destinations: [ - const NavigationRailDestination( + destinations: const [ + NavigationRailDestination( icon: Icon(Icons.home), label: Text("Home"), ), - const NavigationRailDestination( + NavigationRailDestination( icon: Icon(Icons.search), label: Text("Search"), ), NavigationRailDestination( - icon: const Icon(Icons.music_note_rounded), - label: const Text("Current Playing"), - disabled: !player.playing, + icon: Icon(Icons.music_note_rounded), + label: Text("Current Playing"), ), - const NavigationRailDestination( + NavigationRailDestination( icon: Icon(Icons.settings), label: Text("Settings"), ), diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index f9e3a6f..17ed1e6 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -4,10 +4,12 @@ import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/widgets/play_button.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/album/controllers/album_controller.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class AlbumView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -26,138 +28,128 @@ class AlbumView extends ConsumerWidget { data: (album) { return BlurImageContainer( image: album.images[2].url, - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TopDetailsContainer( - image: album.images[2].url, - subtitle: album.subtitle, - title: album.title, - badgeBackgroundColor: album.explicitContent - ? Colors.teal - : Colors.transparent, - badge: Visibility( - visible: album.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Wrap( - children: [ - const BackButton(), - IconButton( - tooltip: "More", - onPressed: () {}, - icon: - const Icon(Icons.more_vert_rounded), - ), - ], - ), - PlayButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: album.id, - type: MediaType.album), - ) - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: album.songs.length, - itemBuilder: (context, index) { - final song = album.songs[index]; - return MediaCard( - onTap: () {}, - image: song.images[1].url, - title: song.title, - subtitle: - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)}", - explicitContent: song.explicitContent, - ); - }, - ), - ), - ], + child: SplitViewContainer( + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: album.images[2].url, + subtitle: album.subtitle, + title: album.title, + thirdLine: album.copyright ?? album.year, + badgeBackgroundColor: album.explicitContent + ? Colors.teal + : Colors.transparent, + badge: Visibility( + visible: album.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, ), ), ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: album.artists.length, - itemBuilder: (context, index) { - final artist = album.artists[index]; - return MediaCard( - onTap: () => Navigator.of(context) - .push(ArtistView.route(artist.id)), - image: artist.image, - title: artist.name, - subtitle: artist.type, - explicitContent: false, - ); - }, + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), ], ), + const Text( + 'Album', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + PlayButton( + onPressed: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: album.id, + type: MediaType.album, + ), + ) + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: album.songs.length, + itemBuilder: (context, index) { + final song = album.songs[index]; + return MediaCard( + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + prevSongs: album.songs, + playCurrent: true, + ), + onDoubleTap: () => Navigator.of(context).push( + SongView.route(song.id), + ), + image: song.images[1].url, + title: song.title, + subtitle: + "${formatNumber(song.playCount)} listens, ${song.label}", + explicitContent: song.explicitContent, + ); + }, + ), + ), + ], + ), + rightChild: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - )) - ], + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: album.artists.length, + itemBuilder: (context, index) { + final artist = album.artists[index]; + return MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, + onMenuTap: () {}, + ); + }, + ), + ], + ), ), ); }, diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart index 03f1961..89fce9d 100644 --- a/lib/functions/artist/view/artist_view.dart +++ b/lib/functions/artist/view/artist_view.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/play_button.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/artist/controller/artist_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; -import 'package:sangeet/functions/song/view/song_view.dart'; class ArtistView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -27,151 +28,112 @@ class ArtistView extends ConsumerWidget { data: (artist) { return BlurImageContainer( image: artist.images[2].url, - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TopDetailsContainer( - image: artist.images[2].url, - subtitle: artist.subtitle, - title: artist.name, - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: const Icon( - Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: artist.id, - type: MediaType.artist, - prevSongs: artist.topSongs, - ), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: artist.topSongs.length, - itemBuilder: (context, index) { - final song = artist.topSongs[index]; - return ListTile( - onTap: () => Navigator.of(context).push( - SongView.route(song.id), - ), - title: Text(song.title), - subtitle: Text( - "${formatDuration(song.duration)}, ${song.label}"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), - ), - ], - ), - ), + child: SplitViewContainer( + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: artist.images[2].url, + subtitle: artist.subtitle, + title: artist.name, + thirdLine: thirdLines(artist), ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), decoration: BoxDecoration( color: Colors.black12, borderRadius: BorderRadius.circular(10), ), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Top Albums.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( + children: [ + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: artist.topAlbums.length, - itemBuilder: (context, index) { - final album = artist.topAlbums[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(AlbumView.route(album.id)), - title: Text(album.title), - subtitle: Text(album.subtitle), - leading: CircleAvatar( - backgroundImage: NetworkImage( - album.images[1].url, - ), - ), - ); - }, - ), - ], + ], + ), + PlayButton( + onPressed: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: artist.id, + type: MediaType.artist, + prevSongs: artist.topSongs, + ), + ) + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: artist.topSongs.length, + itemBuilder: (context, index) { + final song = artist.topSongs[index]; + return MediaCard( + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + prevSongs: artist.topSongs, + playCurrent: true, + ), + image: song.images[1].url, + title: song.title, + subtitle: + "${song.label}, ${formatDuration(song.duration)}", + explicitContent: song.explicitContent, + ); + }, + ), + ), + ], + ), + rightChild: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Top Albums.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), ), ), - ) - ], + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: artist.topAlbums.length, + itemBuilder: (context, index) { + final album = artist.topAlbums[index]; + return MediaCard( + accentColor: album.accentColor, + onTap: () => Navigator.of(context) + .push(AlbumView.route(album.id)), + image: album.images[1].url, + title: album.title, + subtitle: album.subtitle == "" + ? "Language ${album.language}" + : album.subtitle, + explicitContent: album.explicitContent, + ); + }, + ), + ], + ), ), ); }, @@ -179,4 +141,9 @@ class ArtistView extends ConsumerWidget { loading: () => const LoadingPage(), ); } + + String thirdLines(artist) => """fans ${formatNumber(artist.fanCount)} +followers ${formatNumber(artist.followersCount)} +Dominant ${artist.dominantLanguage} ${artist.dominantType} + """; } diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index e4b358f..264b985 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,11 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/play_button.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/charts/controllers/charts_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; class ChartView extends ConsumerWidget { static route(String id) => MaterialPageRoute( @@ -25,145 +29,120 @@ class ChartView extends ConsumerWidget { data: (chart) { return BlurImageContainer( image: chart.images[2].url, - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TopDetailsContainer( - title: chart.title, - subtitle: chart.subtitle, - image: chart.images[2].url, - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: const Icon( - Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: chart.id, - type: MediaType.playlist), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: chart.songs.length, - itemBuilder: (context, index) { - final song = chart.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), - ), - ], - ), - ), + child: SplitViewContainer( + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + title: chart.title, + subtitle: chart.subtitle, + image: chart.images[2].url, + thirdLine: + "fans ${formatNumber(chart.fanCount)} \nfollowers ${formatNumber(chart.followerCount)}", ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), decoration: BoxDecoration( color: Colors.black12, borderRadius: BorderRadius.circular(10), ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( + children: [ + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), + ], + ), + const Text( + 'Playlist', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: chart.artists.length, - itemBuilder: (context, index) { - final artist = chart.artists[index]; - return ListTile( - onTap: () {}, - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), - ), - ); - }, + ), + PlayButton( + onPressed: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: chart.id, + type: MediaType.playlist, + ), + ) + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: chart.songs.length, + itemBuilder: (context, index) { + final song = chart.songs[index]; + return MediaCard( + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + prevSongs: chart.songs, + playCurrent: true, + ), + onDoubleTap: () => Navigator.of(context).push( + SongView.route(song.id), ), - ], + image: song.images[1].url, + title: song.title, + subtitle: + "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)}", + explicitContent: song.explicitContent, + ); + }, + ), + ), + ], + ), + rightChild: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), ), ), - ) - ], + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: chart.artists.length, + itemBuilder: (context, index) { + final artist = chart.artists[index]; + return MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, + onMenuTap: () {}, + ); + }, + ), + ], + ), ), ); }, diff --git a/lib/functions/explore/widgets/album_card.dart b/lib/functions/explore/widgets/album_card.dart deleted file mode 100644 index e15e1c6..0000000 --- a/lib/functions/explore/widgets/album_card.dart +++ /dev/null @@ -1,69 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; - -class AlbumCard extends StatelessWidget { - final VoidCallback onTap; - final AlbumModel album; - const AlbumCard({super.key, required this.onTap, required this.album}); - - @override - Widget build(BuildContext context) { - return Card( - margin: const EdgeInsets.all(5.0), - child: InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: Container( - width: 150, - height: 100, - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(10), - child: Image.network( - album.images[1].url, - width: 100, - height: 100, - ), - ), - const SizedBox(height: 10), - Text( - album.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.center, - maxLines: 1, - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(1.0), - child: Text( - album.artists.map((e) => e.name).toList()[0], - style: const TextStyle( - fontSize: 16, - ), - ), - ), - Visibility( - visible: album.explicitContent, - child: const Icon( - Icons.explicit, - size: 16, - ), - ) - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/functions/explore/widgets/chart_card.dart b/lib/functions/explore/widgets/chart_card.dart deleted file mode 100644 index 727dbea..0000000 --- a/lib/functions/explore/widgets/chart_card.dart +++ /dev/null @@ -1,64 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; - -class ChartCard extends StatelessWidget { - final BrowseChartModel chart; - final VoidCallback onTap; - const ChartCard({super.key, required this.chart, required this.onTap}); - - @override - Widget build(BuildContext context) { - return Card( - margin: const EdgeInsets.all(5.0), - child: InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: Container( - width: 150, - height: 100, - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircleAvatar( - radius: 45, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(chart.image), - ), - const SizedBox(height: 10), - Text( - chart.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(1.0), - child: Text( - chart.language, - style: const TextStyle( - fontSize: 16, - ), - ), - ), - Visibility( - visible: chart.explicitContent, - child: const Icon( - Icons.explicit, - size: 16, - ), - ) - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index db19664..453431e 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -1,13 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; + import 'package:sangeet/core/core.dart'; -import 'package:sangeet/core/utils.dart'; -import 'package:sangeet/functions/album/view/album_view.dart'; -import 'package:sangeet/functions/charts/view/charts_view.dart'; -import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; + import 'package:sangeet/functions/explore/widgets/browse_card.dart'; import 'package:sangeet/functions/explore/widgets/trend_card.dart'; + +import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; + +import 'package:sangeet/functions/charts/view/charts_view.dart'; +import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/playlist/view/playlist_view.dart'; import 'package:sangeet/functions/song/view/song_view.dart'; diff --git a/lib/functions/explore/widgets/playlist_card.dart b/lib/functions/explore/widgets/playlist_card.dart deleted file mode 100644 index 149a285..0000000 --- a/lib/functions/explore/widgets/playlist_card.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet_api/models.dart'; - -class PlaylistCard extends StatelessWidget { - final PlaylistMapModel playlist; - final VoidCallback onTap; - const PlaylistCard({super.key, required this.playlist, required this.onTap}); - - @override - Widget build(BuildContext context) { - return Card( - margin: const EdgeInsets.all(5.0), - child: InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: Container( - width: 150, - height: 100, - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircleAvatar( - radius: 55, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(playlist.images[2].url), - ), - const SizedBox(height: 10), - Text( - playlist.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.center, - maxLines: 1, - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(1.0), - child: Text( - playlist.subtitle, - style: const TextStyle( - fontSize: 16, - ), - ), - ), - Visibility( - visible: playlist.explicitContent, - child: const Icon( - Icons.explicit, - size: 16, - ), - ) - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/functions/explore/widgets/radio_card.dart b/lib/functions/explore/widgets/radio_card.dart deleted file mode 100644 index dad757e..0000000 --- a/lib/functions/explore/widgets/radio_card.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:sangeet/core/utils.dart'; -import 'package:sangeet_api/models.dart'; - -class RadioCard extends StatelessWidget { - final BrowseRadioModel radio; - final VoidCallback onTap; - const RadioCard({super.key, required this.radio, required this.onTap}); - - @override - Widget build(BuildContext context) { - return Card( - surfaceTintColor: hexToColor(radio.accentColor), - margin: const EdgeInsets.all(5.0), - child: InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(15), - child: Container( - width: 150, - height: 100, - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircleAvatar( - radius: 45, - backgroundColor: Colors.black, - foregroundImage: NetworkImage(radio.image), - ), - const SizedBox(height: 10), - Text( - radio.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.center, - maxLines: 1, - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: Padding( - padding: const EdgeInsets.all(1.0), - child: Text( - radio.description == "" - ? radio.language - : radio.description!, - style: const TextStyle( - fontSize: 16, - overflow: TextOverflow.fade, - ), - textAlign: TextAlign.center, - maxLines: 1, - softWrap: true, - ), - ), - ), - Visibility( - visible: radio.explicitContent, - child: const Icon( - Icons.explicit, - size: 16, - ), - ) - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/functions/player/controllers/player_controller.dart b/lib/functions/player/controllers/player_controller.dart index 274ded0..c2d76b4 100644 --- a/lib/functions/player/controllers/player_controller.dart +++ b/lib/functions/player/controllers/player_controller.dart @@ -59,6 +59,7 @@ class PlayerController extends StateNotifier { required MediaType type, VoidCallback? redirect, List? prevSongs, + bool playCurrent = false, }) async { try { List songs = []; @@ -68,53 +69,53 @@ class PlayerController extends StateNotifier { } final quality = await _settingsController.getSongQuality(); if (prevSongs != null) { - songs = prevSongs; - } - - if (type == MediaType.song) { - final songsObjects = await _api.song.radio(songId: radioId); - final song = await _api.song.getById(songId: radioId); - if (songsObjects == null || song == null) { - throw Error.throwWithStackTrace( - "Can't load right now", StackTrace.empty); + final songsCopy = prevSongs; + if (playCurrent) { + final i = songsCopy.indexWhere((element) => element.id == radioId); + songsCopy.removeRange(0, i); + } + songs = songsCopy; + } else { + if (type == MediaType.song) { + final songsObjects = await _api.song.radio(songId: radioId); + final song = await _api.song.getById(songId: radioId); + if (songsObjects == null || song == null) { + throw Error.throwWithStackTrace( + "Can't load right now", StackTrace.empty); + } + + songs = [song, ...songsObjects.songs]; } - songs = [song, ...songsObjects.songs]; - } - - if (type == MediaType.album) { - final album = await _api.album.getById(albumId: radioId); - if (album == null) { - throw Error.throwWithStackTrace("Album not found", StackTrace.empty); + if (type == MediaType.album) { + final album = await _api.album.getById(albumId: radioId); + if (album == null) { + throw Error.throwWithStackTrace( + "Album not found", StackTrace.empty); + } + songs = album.songs; } - songs = album.songs; - } - if (type == MediaType.playlist) { - final playlistModel = await _api.playlist.getById(id: radioId); - if (playlistModel == null) { - throw Error.throwWithStackTrace( - "Playlist not found", - StackTrace.empty, - ); + if (type == MediaType.playlist) { + final playlistModel = await _api.playlist.getById(id: radioId); + if (playlistModel == null) { + throw Error.throwWithStackTrace( + "Playlist not found", + StackTrace.empty, + ); + } + + songs = playlistModel.songs; } - - songs = playlistModel.songs; - } - if (type == MediaType.radio) { - final radio = await _api.song.radio(songId: radioId, featured: true); - if (radio == null) { - throw Error.throwWithStackTrace( - "Radio not found", - StackTrace.empty, - ); + if (type == MediaType.radio) { + final radio = await _api.song.radio(songId: radioId, featured: true); + if (radio == null) { + throw Error.throwWithStackTrace( + "Radio not found", + StackTrace.empty, + ); + } + songs = radio.songs; } - songs = radio.songs; - } else { - // if (prevSongs == null) { - // throw Error(); - // } else { - // songs = prevSongs; - // } } for (var i = 0; i < songs.length; i++) { diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index b89cae8..6174870 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -1,18 +1,19 @@ -import 'dart:ui'; - import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/app_config.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/functions/album/view/album_view.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; import 'package:sangeet/functions/player/widgets/player_control_buttons.dart'; +import 'package:sangeet/functions/playlist/view/playlist_view.dart'; +import 'package:sangeet/functions/song/view/song_view.dart'; import 'package:sangeet_api/models.dart'; class CurrentPlayingView extends ConsumerWidget { @@ -38,306 +39,299 @@ class CurrentPlayingView extends ConsumerWidget { final song = state!.currentSource!.tag as SongModel; final songs = state.sequence; - return Container( - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(song.images[2].url), - fit: BoxFit.cover, - ), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.black54.withOpacity(0.1), - Colors.black.withOpacity(1), - ], - ), - ), - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(10), - child: Image.network( - song.images[2].url, - ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Column( - children: [ - Text( - song.title, - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - Text( - song.albumName, - style: const TextStyle( - fontSize: 18, - ), - ), - ], + return BlurImageContainer( + image: song.images[2].url, + child: Row( + children: [ + Expanded( + child: SizedBox( + height: MediaQuery.of(context).size.height, + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + song.images[2].url, + ), + ), + Container( + padding: const EdgeInsets.all(8), + width: 500, + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + children: [ + Text( + song.title, + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), + Text( + song.albumName, + style: const TextStyle( + fontSize: 18, + ), ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Expanded( - flex: 1, - child: StreamBuilder( - stream: ref - .watch( - playerControllerProvider.notifier) - .positionDataStream, - builder: (context, snapshot) { - final positionData = snapshot.data; - return ProgressBar( - progress: positionData?.position ?? - Duration.zero, - buffered: - positionData?.bufferedPosition ?? - Duration.zero, - total: positionData?.duration ?? + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 1, + child: StreamBuilder( + stream: ref + .watch(playerControllerProvider.notifier) + .positionDataStream, + builder: (context, snapshot) { + final positionData = snapshot.data; + return ProgressBar( + progress: positionData?.position ?? + Duration.zero, + buffered: + positionData?.bufferedPosition ?? Duration.zero, - progressBarColor: Colors.teal, - baseBarColor: - Colors.white.withOpacity(0.24), - bufferedBarColor: - Colors.white.withOpacity(0.24), - thumbColor: Colors.white, - timeLabelLocation: - TimeLabelLocation.sides, - timeLabelType: - TimeLabelType.totalTime, - barHeight: 3.0, - thumbRadius: 4.0, - onSeek: (duration) { - player.seek(duration); - }, - ); + total: positionData?.duration ?? + Duration.zero, + progressBarColor: Colors.teal, + baseBarColor: + Colors.white.withOpacity(0.24), + bufferedBarColor: + Colors.white.withOpacity(0.24), + thumbColor: Colors.white, + timeLabelLocation: + TimeLabelLocation.sides, + timeLabelType: TimeLabelType.totalTime, + barHeight: 3.0, + thumbRadius: 4.0, + onSeek: (duration) { + player.seek(duration); }, - ), - ), - PlayerControllerButtons( - player: player, - ), - ], + ); + }, + ), ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), + PlayerControllerButtons( + player: player, ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Next Songs.', + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ), + ), + Wrap( children: [ - const Padding( - padding: EdgeInsets.all(10.0), - child: Text( - 'Next Songs.', - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ), + BackButton( + onPressed: () => ref + .watch(appScreenConfigProvider.notifier) + .onIndex(0), ), - Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => ref - .watch( - appScreenConfigProvider.notifier) - .onIndex(0), - icon: - const Icon(Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), ], ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: songs.length, - itemBuilder: (context, index) { - final s = songs[index].tag as SongModel; - return ListTile( - onTap: () {}, - title: Text(s.title), - subtitle: Text( - "${formatNumber(s.playCount)} listens, ${formatDuration(song.duration)} long", - ), - leading: CircleAvatar( - backgroundImage: NetworkImage( - s.images[1].url, - ), - ), - ); - }, - ), - ), - ], + ], + ), ), - ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: songs.length, + itemBuilder: (context, index) { + final s = songs[index].tag as SongModel; + return MediaCard( + onTap: () {}, + onDoubleTap: () => Navigator.of(context).push( + SongView.route(s.id), + ), + image: s.images[1].url, + title: s.title, + subtitle: + "${formatNumber(s.playCount)} listens, ${s.label}", + explicitContent: s.explicitContent, + ); + // return ListTile( + // onTap: () {}, + // title: Text(s.title), + // subtitle: Text( + // "${formatNumber(s.playCount)} listens, ${formatDuration(song.duration)} long", + // ), + // leading: CircleAvatar( + // backgroundImage: NetworkImage( + // s.images[1].url, + // ), + // ), + // ); + }, + ), + ), + ], ), ), + ), + ), - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: song.artists.length, - itemBuilder: (context, index) { - final artist = song.artists[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(ArtistView.route(artist.id)), - title: Text(artist.name), - subtitle: Text(artist.type), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), - ), - ); - }, + // SUGGESTIONS + Visibility( + visible: MediaQuery.of(context).size.width > 750, + child: Container( + margin: const EdgeInsets.all(8), + width: MediaQuery.of(context).size.width * 0.3, + height: double.infinity, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Trending.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, + onMenuTap: () {}, + ); + }, + ), + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Trending.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - Container( - child: ref.watch(getTrendingSongsProvider).when( - data: (data) { - return ListView( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - children: [ - ...data.songs.map( - (song) => MediaCard( - onTap: () {}, - image: song.images[0].url, - title: song.title, - subtitle: song.albumName, - badgeIcon: - Icons.music_note_rounded, - explicitContent: - song.explicitContent, - ), + ), + ), + Container( + child: ref.watch(getTrendingSongsProvider).when( + data: (data) { + return ListView( + shrinkWrap: true, + physics: + const NeverScrollableScrollPhysics(), + children: [ + ...data.songs.map( + (song) => MediaCard( + onTap: () => + Navigator.of(context).push( + SongView.route(song.id), ), - ...data.albums.map( - (album) => MediaCard( - onTap: () {}, - image: album.images[0].url, - title: album.title, - subtitle: album.artists - .map((e) => e.name) - .join(','), - badgeIcon: Icons.album_rounded, - explicitContent: - album.explicitContent, - onDoubleTap: () {}, - ), + image: song.images[0].url, + title: song.title, + subtitle: song.albumName, + badgeIcon: Icons.music_note_rounded, + explicitContent: song.explicitContent, + ), + ), + ...data.albums.map( + (album) => MediaCard( + onTap: () => + Navigator.of(context).push( + AlbumView.route(album.id), ), - ...data.playlists.map( - (playlist) => MediaCard( - onTap: () {}, - image: playlist.images[0].url, - title: playlist.title, - subtitle: playlist.subtitle, - badgeIcon: - Icons.playlist_play_rounded, - explicitContent: - playlist.explicitContent, - onDoubleTap: () {}, - ), + image: album.images[0].url, + title: album.title, + subtitle: album.artists + .map((e) => e.name) + .join(','), + badgeIcon: Icons.album_rounded, + explicitContent: + album.explicitContent, + onDoubleTap: () {}, + ), + ), + ...data.playlists.map( + (playlist) => MediaCard( + onTap: () => + Navigator.of(context).push( + PlaylistView.route(playlist.id), ), - ], - ); - }, - error: (er, st) => ErrorPage( - error: er.toString(), - ), - loading: () => const LoadingPage(), - ), - ), - ], + image: playlist.images[0].url, + title: playlist.title, + subtitle: playlist.subtitle, + badgeIcon: + Icons.playlist_play_rounded, + explicitContent: + playlist.explicitContent, + onDoubleTap: () {}, + ), + ), + ], + ); + }, + error: (er, st) => ErrorPage( + error: er.toString(), + ), + loading: () => const LoadingPage(), + ), ), - ), + ], ), ), - ], + ), ), - ), + ], ), ); }, diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index c2b65db..cc647aa 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -3,6 +3,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/play_button.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; @@ -26,150 +29,120 @@ class PlaylistView extends ConsumerWidget { data: (playlist) { return BlurImageContainer( image: playlist.images[2].url, - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TopDetailsContainer( - image: playlist.images[2].url, - subtitle: playlist.subtitle, - title: playlist.title, - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: const Icon( - Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: playlist.id, - type: MediaType.playlist, - ), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: Color(playlist.playCount), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: playlist.songs.length, - itemBuilder: (context, index) { - final song = playlist.songs[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(SongView.route(song.id)), - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long"), - leading: CircleAvatar( - backgroundImage: - NetworkImage(song.images[1].url), - ), - ); - }, - ), - ), - ], - ), - ), + child: SplitViewContainer( + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: playlist.images[2].url, + subtitle: playlist.subtitle, + title: playlist.title, + thirdLine: _thirdLines(playlist), ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), decoration: BoxDecoration( color: Colors.black12, borderRadius: BorderRadius.circular(10), ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( + children: [ + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), + ], + ), + const Text( + 'Playlist', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - itemCount: playlist.artists.length, - itemBuilder: (context, index) { - final artist = playlist.artists[index]; - return ListTile( - onTap: () => Navigator.of(context) - .push(ArtistView.route(artist.id)), - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: NetworkImage(artist.image), - ), - ); - }, + ), + PlayButton( + onPressed: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: playlist.id, + type: MediaType.playlist, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + scrollDirection: Axis.vertical, + itemCount: playlist.songs.length, + itemBuilder: (context, index) { + final song = playlist.songs[index]; + return MediaCard( + onTap: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + prevSongs: playlist.songs, + playCurrent: true, + ), + onDoubleTap: () => Navigator.of(context).push( + SongView.route(song.id), ), - const SizedBox(height: 20), - ], + image: song.images[1].url, + title: song.title, + subtitle: + "${formatNumber(song.playCount)} listens, ${song.label}", + explicitContent: song.explicitContent, + ); + }, + ), + ), + ], + ), + rightChild: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), ), ), - ) - ], + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: playlist.artists.length, + itemBuilder: (context, index) { + final artist = playlist.artists[index]; + return MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, + onMenuTap: () {}, + ); + }, + ), + const SizedBox(height: 20), + ], + ), ), ); }, @@ -177,4 +150,9 @@ class PlaylistView extends ConsumerWidget { loading: () => const LoadingPage(), ); } + + String _thirdLines(playlist) => """fans ${formatNumber(playlist.fanCount)} +followers ${formatNumber(playlist.followerCount)} +Songs ${playlist.songs.length} + """; } diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index 0cf16b4..b597c81 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -3,6 +3,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/play_button.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/core/widgets/top_details.dart'; import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; @@ -31,180 +34,147 @@ class _SongViewState extends ConsumerState { data: (song) { return BlurImageContainer( image: song.images[2].url, - child: Row( - children: [ - Expanded( - child: Container( - height: MediaQuery.of(context).size.height, - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TopDetailsContainer( - image: song.images[2].url, - subtitle: song.subtitle, - title: song.title, - badgeBackgroundColor: song.explicitContent - ? Colors.teal - : Colors.transparent, - badge: Visibility( - visible: song.explicitContent, - child: const Icon( - Icons.explicit_rounded, - size: 12, - ), - ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Visibility( - visible: Navigator.of(context).canPop(), - child: Container( - padding: const EdgeInsets.all(8), - child: TextButton.icon( - onPressed: () => - Navigator.of(context).pop(), - icon: const Icon( - Icons.arrow_left_rounded), - label: const Text("Back"), - style: TextButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: Colors.black12, - ), - ), - ), - ), - IconButton( - onPressed: () => ref - .watch( - playerControllerProvider.notifier) - .runRadio( - radioId: song.id, - type: MediaType.song, - ), - icon: const Icon( - Icons.play_arrow_rounded, - size: 35, - color: Colors.white, - ), - style: IconButton.styleFrom( - backgroundColor: Colors.teal, - ), - splashColor: song.accentColor, - ), - ], + child: SplitViewContainer( + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TopDetailsContainer( + image: song.images[2].url, + subtitle: song.subtitle, + title: song.title, + badgeBackgroundColor: song.explicitContent + ? Colors.teal + : Colors.transparent, + badge: Visibility( + visible: song.explicitContent, + child: const Icon( + Icons.explicit_rounded, + size: 12, + ), + ), + thirdLine: song.copyright, + ), + Container( + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( + children: [ + const BackButton(), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), ), + ], + ), + const Text( + 'Song', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - const Padding( - padding: EdgeInsets.all(10.0), - child: Text( - 'Related Songs.', - style: TextStyle( - fontSize: 28, - fontWeight: FontWeight.bold, + ), + PlayButton( + onPressed: () => ref + .watch(playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, ), - ), - ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ref - .watch(getRelatedSongsProvider(song.id)) - .when( - data: (sug) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: sug.songs.length, - itemBuilder: (context, index) { - final song = sug.songs[index]; - return ListTile( - onTap: () {}, - title: Text(song.title), - subtitle: Text( - "${formatNumber(song.playCount)} listens, ${formatDuration(song.duration)} long", - ), - leading: CircleAvatar( - backgroundImage: NetworkImage( - song.images[1].url, - ), - ), - ); - }, - ); - }, - error: (er, st) => - ErrorPage(error: er.toString()), - loading: () => const Loader(), - ), - ), - ], - ), + ) + ], ), ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), + const Padding( + padding: EdgeInsets.all(10.0), + child: Text( + 'Related Songs.', + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, ), - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Artists.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ListView.builder( + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ref.watch(getRelatedSongsProvider(song.id)).when( + data: (sug) { + return ListView.builder( shrinkWrap: true, physics: const BouncingScrollPhysics(), - itemCount: song.artists.length, + scrollDirection: Axis.vertical, + itemCount: sug.songs.length, itemBuilder: (context, index) { - final artist = song.artists[index]; - return ListTile( - onTap: () => Navigator.of(context).push( - ArtistView.route(artist.id), - ), - title: Text(artist.name), - subtitle: Text(artist.role), - leading: CircleAvatar( - backgroundImage: - NetworkImage(artist.image), + final song = sug.songs[index]; + return MediaCard( + onTap: () => ref + .watch( + playerControllerProvider.notifier) + .runRadio( + radioId: song.id, + type: MediaType.song, + prevSongs: sug.songs, + playCurrent: true, + ), + onDoubleTap: () => + Navigator.of(context).push( + SongView.route(song.id), ), + image: song.images[1].url, + title: song.title, + subtitle: + "${formatNumber(song.playCount)} listens, ${song.label}", + explicitContent: song.explicitContent, ); }, - ), - ], + ); + }, + error: (er, st) => ErrorPage(error: er.toString()), + loading: () => const Loader(), ), + ), + ], + ), + rightChild: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Artists.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, ), - )) - ], + ), + ), + ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemCount: song.artists.length, + itemBuilder: (context, index) { + final artist = song.artists[index]; + return MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(artist.id)), + image: artist.image, + title: artist.name, + subtitle: artist.type, + explicitContent: false, + onMenuTap: () {}, + ); + }, + ), + ], + ), ), ); }, From f146f54e9be8e11ad1ed6bb1dd62a079919756a6 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 15:58:06 +0530 Subject: [PATCH 14/20] current playing view fixes --- lib/core/widgets/blur_image_container.dart | 15 +- lib/frame/home.dart | 139 ++-- lib/functions/explore/views/explore_view.dart | 44 +- .../player/views/current_playing_view.dart | 774 +++++++++++------- .../player/widgets/base_audio_player.dart | 1 + 5 files changed, 599 insertions(+), 374 deletions(-) diff --git a/lib/core/widgets/blur_image_container.dart b/lib/core/widgets/blur_image_container.dart index e57ff27..1c0025f 100644 --- a/lib/core/widgets/blur_image_container.dart +++ b/lib/core/widgets/blur_image_container.dart @@ -5,21 +5,28 @@ import 'package:flutter/material.dart'; class BlurImageContainer extends StatelessWidget { final String image; final Widget child; + final bool isAsset; const BlurImageContainer({ super.key, required this.image, required this.child, + this.isAsset = false, }); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(image), - fit: BoxFit.cover, - ), + image: isAsset + ? DecorationImage( + image: AssetImage(image), + fit: BoxFit.cover, + ) + : DecorationImage( + image: NetworkImage(image), + fit: BoxFit.cover, + ), ), child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), diff --git a/lib/frame/home.dart b/lib/frame/home.dart index 29c09bd..9645de9 100644 --- a/lib/frame/home.dart +++ b/lib/frame/home.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/functions/player/views/current_playing_view.dart'; import 'package:window_manager/window_manager.dart'; import 'package:tray_manager/tray_manager.dart'; @@ -66,77 +67,81 @@ class _HomeFrameState extends ConsumerState }, child: Scaffold( backgroundColor: Colors.transparent, - body: Row( - children: [ - NavigationRail( - selectedIndex: index, - onDestinationSelected: (idx) => config.onIndex(idx), - destinations: const [ - NavigationRailDestination( - icon: Icon(Icons.home), - label: Text("Home"), - ), - NavigationRailDestination( - icon: Icon(Icons.search), - label: Text("Search"), - ), - NavigationRailDestination( - icon: Icon(Icons.music_note_rounded), - label: Text("Current Playing"), - ), - NavigationRailDestination( - icon: Icon(Icons.settings), - label: Text("Settings"), - ), - ], - leading: Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), - child: Image.asset( - 'assets/app_icon.ico', - width: 35, - ), - ), - labelType: NavigationRailLabelType.none, - backgroundColor: Colors.black, - indicatorColor: Colors.grey.shade900, - unselectedIconTheme: const IconThemeData(color: Colors.grey), - selectedIconTheme: const IconThemeData(color: Colors.white), - ), - Expanded( - child: Column( - children: [ - Expanded( - flex: 1, - child: IndexedStack( - index: index, - children: [ - _buildNavigator( - 0, - const ExploreView(), - ), - _buildNavigator( - 1, - const SearchView(), - ), - _buildNavigator( - 2, - const CurrentPlayingView(), - ), - _buildNavigator( - 3, - const SettingsView(), - ), - ], - ), + body: BlurImageContainer( + image: 'assets/background.jpg', + isAsset: true, + child: Row( + children: [ + NavigationRail( + selectedIndex: index, + onDestinationSelected: (idx) => config.onIndex(idx), + destinations: const [ + NavigationRailDestination( + icon: Icon(Icons.home), + label: Text("Home"), + ), + NavigationRailDestination( + icon: Icon(Icons.search), + label: Text("Search"), ), - Visibility( - visible: index != 2, - child: const BaseAudioPlayer(), + NavigationRailDestination( + icon: Icon(Icons.music_note_rounded), + label: Text("Current Playing"), + ), + NavigationRailDestination( + icon: Icon(Icons.settings), + label: Text("Settings"), ), ], + leading: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Image.asset( + 'assets/app_icon.ico', + width: 35, + ), + ), + labelType: NavigationRailLabelType.none, + backgroundColor: Colors.black, + indicatorColor: Colors.grey.shade900, + unselectedIconTheme: const IconThemeData(color: Colors.grey), + selectedIconTheme: const IconThemeData(color: Colors.white), + ), + Expanded( + child: Column( + children: [ + Expanded( + flex: 1, + child: IndexedStack( + index: index, + children: [ + _buildNavigator( + 0, + const ExploreView(), + ), + _buildNavigator( + 1, + const SearchView(), + ), + _buildNavigator( + 2, + const CurrentPlayingView(), + ), + _buildNavigator( + 3, + const SettingsView(), + ), + ], + ), + ), + Visibility( + visible: index != 2, + child: const BaseAudioPlayer(), + ), + ], + ), ), - ), - ], + ], + ), ), ), ), diff --git a/lib/functions/explore/views/explore_view.dart b/lib/functions/explore/views/explore_view.dart index 6e6b11e..beef65b 100644 --- a/lib/functions/explore/views/explore_view.dart +++ b/lib/functions/explore/views/explore_view.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/functions/explore/widgets/explore_list.dart'; class ExploreView extends ConsumerStatefulWidget { @@ -12,25 +13,30 @@ class ExploreView extends ConsumerStatefulWidget { class _ExploreViewState extends ConsumerState { @override Widget build(BuildContext context) { - return Container( - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage('assets/background.jpg'), - fit: BoxFit.cover, - ), - ), - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Colors.black.withOpacity(1), - Colors.grey.withOpacity(0.5), - Colors.black.withOpacity(1), - ], - ), - ), - child: const ExploreList(), - ), + return const BlurImageContainer( + image: 'assets/background.jpg', + isAsset: true, + child: ExploreList(), ); + // return Container( + // decoration: const BoxDecoration( + // image: DecorationImage( + // image: AssetImage('assets/background.jpg'), + // fit: BoxFit.cover, + // ), + // ), + // child: Container( + // decoration: BoxDecoration( + // gradient: LinearGradient( + // colors: [ + // Colors.black.withOpacity(1), + // Colors.grey.withOpacity(0.5), + // Colors.black.withOpacity(1), + // ], + // ), + // ), + // child: const ExploreList(), + // ), + // ); } } diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index 6174870..f8b3545 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -6,8 +6,8 @@ import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/app_config.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/core/widgets/split_view_container.dart'; import 'package:sangeet/functions/album/view/album_view.dart'; -import 'package:sangeet/functions/artist/view/artist_view.dart'; import 'package:sangeet/functions/explore/controllers/explore_controller.dart'; import 'package:sangeet/functions/player/controllers/player_controller.dart'; import 'package:sangeet/functions/player/widgets/common.dart'; @@ -16,325 +16,531 @@ import 'package:sangeet/functions/playlist/view/playlist_view.dart'; import 'package:sangeet/functions/song/view/song_view.dart'; import 'package:sangeet_api/models.dart'; -class CurrentPlayingView extends ConsumerWidget { +class CurrentPlayingView extends ConsumerStatefulWidget { static route() => MaterialPageRoute( builder: (context) => const CurrentPlayingView(), ); const CurrentPlayingView({super.key}); + @override + ConsumerState createState() => + _CurrentPlayingViewState(); +} +class _CurrentPlayingViewState extends ConsumerState { @override - Widget build(BuildContext context, WidgetRef ref) { + Widget build(BuildContext context) { final player = ref.watch(getAudioPlayer); + return StreamBuilder( - stream: player.sequenceStateStream, - builder: (context, snapshot) { - final state = snapshot.data; - if (snapshot.connectionState == ConnectionState.waiting) { - return Container(height: 0); - } - if (state?.sequence.isEmpty ?? true) { - return const SizedBox(); - } + stream: player.sequenceStateStream, + builder: (context, snapshot) { + final state = snapshot.data; + if (snapshot.connectionState == ConnectionState.waiting) { + return Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + "Nothing To Play", + style: TextStyle( + fontSize: 16, + ), + ), + ), + TextButton.icon( + icon: const Icon( + Icons.data_usage_outlined, + color: Colors.black, + ), + onPressed: () => + ref.watch(playerControllerProvider.notifier).runRadio( + radioId: "uQKEtZYc", + type: MediaType.song, + ), + label: const Text( + "Random Song", + style: TextStyle( + color: Colors.black, + fontWeight: FontWeight.bold, + ), + ), + style: TextButton.styleFrom( + backgroundColor: Colors.white, + ), + ) + ], + ), + ); + } - final song = state!.currentSource!.tag as SongModel; - final songs = state.sequence; + if (state?.sequence.isEmpty ?? true) { + return const Center( + child: Text("Nothing To Play"), + ); + } - return BlurImageContainer( - image: song.images[2].url, - child: Row( - children: [ - Expanded( - child: SizedBox( - height: MediaQuery.of(context).size.height, - child: SingleChildScrollView( + final song = state!.currentSource!.tag as SongModel; + final songs = state.sequence; + + return BlurImageContainer( + image: song.images[2].url, + child: SplitViewContainer( + rightChild: getRightChild( + context: context, + ref: ref, + id: player.sequenceState?.currentSource?.tag.id ?? "", + ), + leftChild: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + song.images[2].url, + width: 500, + height: 500, + ), + ), + ), + Container( + padding: const EdgeInsets.all(8), + width: 500, + height: 100, + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, children: [ - ClipRRect( - borderRadius: BorderRadius.circular(10), - child: Image.network( - song.images[2].url, - ), - ), - Container( - padding: const EdgeInsets.all(8), - width: 500, - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Column( - children: [ - Text( - song.title, - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - Text( - song.albumName, - style: const TextStyle( - fontSize: 18, - ), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - flex: 1, - child: StreamBuilder( - stream: ref - .watch(playerControllerProvider.notifier) - .positionDataStream, - builder: (context, snapshot) { - final positionData = snapshot.data; - return ProgressBar( - progress: positionData?.position ?? - Duration.zero, - buffered: - positionData?.bufferedPosition ?? - Duration.zero, - total: positionData?.duration ?? - Duration.zero, - progressBarColor: Colors.teal, - baseBarColor: - Colors.white.withOpacity(0.24), - bufferedBarColor: - Colors.white.withOpacity(0.24), - thumbColor: Colors.white, - timeLabelLocation: - TimeLabelLocation.sides, - timeLabelType: TimeLabelType.totalTime, - barHeight: 3.0, - thumbRadius: 4.0, - onSeek: (duration) { - player.seek(duration); - }, - ); - }, - ), - ), - PlayerControllerButtons( - player: player, - ), - ], + Text( + song.title, + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + overflow: TextOverflow.ellipsis, ), + maxLines: 1, ), - Container( - padding: const EdgeInsets.all(8), - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Padding( - padding: EdgeInsets.all(10.0), - child: Text( - 'Next Songs.', - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ), - ), - Wrap( - children: [ - BackButton( - onPressed: () => ref - .watch(appScreenConfigProvider.notifier) - .onIndex(0), - ), - IconButton( - tooltip: "More", - onPressed: () {}, - icon: const Icon(Icons.more_vert_rounded), - ), - ], - ), - ], + Text( + song.albumName, + style: const TextStyle( + fontSize: 18, + overflow: TextOverflow.ellipsis, ), + maxLines: 1, ), - Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: ListView.builder( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: songs.length, - itemBuilder: (context, index) { - final s = songs[index].tag as SongModel; - return MediaCard( - onTap: () {}, - onDoubleTap: () => Navigator.of(context).push( - SongView.route(s.id), - ), - image: s.images[1].url, - title: s.title, - subtitle: - "${formatNumber(s.playCount)} listens, ${s.label}", - explicitContent: s.explicitContent, + ], + ), + ), + Container( + height: 70, + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 1, + child: StreamBuilder( + stream: ref + .watch(playerControllerProvider.notifier) + .positionDataStream, + builder: (context, snapshot) { + final positionData = snapshot.data; + return ProgressBar( + progress: + positionData?.position ?? Duration.zero, + buffered: positionData?.bufferedPosition ?? + Duration.zero, + total: positionData?.duration ?? Duration.zero, + progressBarColor: Colors.teal, + baseBarColor: Colors.white.withOpacity(0.24), + bufferedBarColor: + Colors.white.withOpacity(0.24), + thumbColor: Colors.white, + timeLabelLocation: TimeLabelLocation.sides, + timeLabelType: TimeLabelType.totalTime, + barHeight: 3.0, + thumbRadius: 4.0, + onSeek: (duration) { + player.seek(duration); + }, ); - // return ListTile( - // onTap: () {}, - // title: Text(s.title), - // subtitle: Text( - // "${formatNumber(s.playCount)} listens, ${formatDuration(song.duration)} long", - // ), - // leading: CircleAvatar( - // backgroundImage: NetworkImage( - // s.images[1].url, - // ), - // ), - // ); }, ), ), + PlayerControllerButtons( + player: player, + ), ], ), ), - ), - ), - - // SUGGESTIONS - Visibility( - visible: MediaQuery.of(context).size.width > 750, - child: Container( - margin: const EdgeInsets.all(8), - width: MediaQuery.of(context).size.width * 0.3, - height: double.infinity, - decoration: BoxDecoration( - color: Colors.black12, - borderRadius: BorderRadius.circular(10), - ), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + Container( + height: 70, + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Padding( - padding: EdgeInsets.all(8.0), + padding: EdgeInsets.all(10.0), child: Text( - 'Artists.', + 'Next Songs.', style: TextStyle( - fontSize: 20, + fontSize: 24, fontWeight: FontWeight.bold, ), ), ), - ListView.builder( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemCount: song.artists.length, - itemBuilder: (context, index) { - final artist = song.artists[index]; - return MediaCard( - onTap: () => Navigator.of(context) - .push(ArtistView.route(artist.id)), - image: artist.image, - title: artist.name, - subtitle: artist.type, - explicitContent: false, - onMenuTap: () {}, - ); - }, - ), - const Padding( - padding: EdgeInsets.all(8.0), - child: Text( - 'Trending.', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, + Wrap( + children: [ + BackButton( + onPressed: () => ref + .watch(appScreenConfigProvider.notifier) + .onIndex(0), ), - ), - ), - Container( - child: ref.watch(getTrendingSongsProvider).when( - data: (data) { - return ListView( - shrinkWrap: true, - physics: - const NeverScrollableScrollPhysics(), - children: [ - ...data.songs.map( - (song) => MediaCard( - onTap: () => - Navigator.of(context).push( - SongView.route(song.id), - ), - image: song.images[0].url, - title: song.title, - subtitle: song.albumName, - badgeIcon: Icons.music_note_rounded, - explicitContent: song.explicitContent, - ), - ), - ...data.albums.map( - (album) => MediaCard( - onTap: () => - Navigator.of(context).push( - AlbumView.route(album.id), - ), - image: album.images[0].url, - title: album.title, - subtitle: album.artists - .map((e) => e.name) - .join(','), - badgeIcon: Icons.album_rounded, - explicitContent: - album.explicitContent, - onDoubleTap: () {}, - ), - ), - ...data.playlists.map( - (playlist) => MediaCard( - onTap: () => - Navigator.of(context).push( - PlaylistView.route(playlist.id), - ), - image: playlist.images[0].url, - title: playlist.title, - subtitle: playlist.subtitle, - badgeIcon: - Icons.playlist_play_rounded, - explicitContent: - playlist.explicitContent, - onDoubleTap: () {}, - ), - ), - ], - ); - }, - error: (er, st) => ErrorPage( - error: er.toString(), - ), - loading: () => const LoadingPage(), - ), + IconButton( + tooltip: "More", + onPressed: () {}, + icon: const Icon(Icons.more_vert_rounded), + ), + ], ), ], ), ), - ), + Container( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: songs.length, + itemBuilder: (context, index) { + final s = songs[index].tag as SongModel; + return MediaCard( + onTap: () {}, + onDoubleTap: () => Navigator.of(context).push( + SongView.route(s.id), + ), + image: s.images[1].url, + title: s.title, + subtitle: + "${formatNumber(s.playCount)} listens, ${s.label}", + explicitContent: s.explicitContent, + ); + }, + ), + ), + ], ), - ], - ), - ); - }, - ); + ), + ); + }); + + // return BlurImageContainer( + // image: "assets/background.jpg", + // isAsset: true, + // child: SplitViewContainer( + // leftChild: StreamBuilder( + // stream: player.sequenceStateStream, + // builder: (context, snapshot) { + // final state = snapshot.data; + // if (snapshot.connectionState == ConnectionState.waiting) { + // return const SizedBox( + // width: 400, + // child: Center( + // child: CircularProgressIndicator( + // color: Colors.white, + // ), + // ), + // ); + // } + + // if (state?.sequence.isEmpty ?? true) { + // return const Center( + // child: Text("Nothing To Play"), + // ); + // } + + // final song = state!.currentSource!.tag as SongModel; + // final songs = state.sequence; + + // return Column( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // ClipRRect( + // borderRadius: BorderRadius.circular(10), + // child: Image.network( + // song.images[2].url, + // ), + // ), + // Container( + // padding: const EdgeInsets.all(8), + // width: 500, + // margin: const EdgeInsets.symmetric(vertical: 10), + // decoration: BoxDecoration( + // color: Colors.black12, + // borderRadius: BorderRadius.circular(10), + // ), + // child: Column( + // children: [ + // Text( + // song.title, + // style: const TextStyle( + // fontSize: 20, + // fontWeight: FontWeight.bold, + // ), + // ), + // Text( + // song.albumName, + // style: const TextStyle( + // fontSize: 18, + // ), + // ), + // ], + // ), + // ), + // Container( + // padding: const EdgeInsets.all(8), + // margin: const EdgeInsets.symmetric(vertical: 10), + // decoration: BoxDecoration( + // color: Colors.black12, + // borderRadius: BorderRadius.circular(10), + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Expanded( + // flex: 1, + // child: StreamBuilder( + // stream: ref + // .watch(playerControllerProvider.notifier) + // .positionDataStream, + // builder: (context, snapshot) { + // final positionData = snapshot.data; + // return ProgressBar( + // progress: positionData?.position ?? Duration.zero, + // buffered: positionData?.bufferedPosition ?? + // Duration.zero, + // total: positionData?.duration ?? Duration.zero, + // progressBarColor: Colors.teal, + // baseBarColor: Colors.white.withOpacity(0.24), + // bufferedBarColor: Colors.white.withOpacity(0.24), + // thumbColor: Colors.white, + // timeLabelLocation: TimeLabelLocation.sides, + // timeLabelType: TimeLabelType.totalTime, + // barHeight: 3.0, + // thumbRadius: 4.0, + // onSeek: (duration) { + // player.seek(duration); + // }, + // ); + // }, + // ), + // ), + // PlayerControllerButtons( + // player: player, + // ), + // ], + // ), + // ), + // Container( + // padding: const EdgeInsets.all(8), + // margin: const EdgeInsets.symmetric(vertical: 10), + // decoration: BoxDecoration( + // color: Colors.black12, + // borderRadius: BorderRadius.circular(10), + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // const Padding( + // padding: EdgeInsets.all(10.0), + // child: Text( + // 'Next Songs.', + // style: TextStyle( + // fontSize: 24, + // fontWeight: FontWeight.bold, + // ), + // ), + // ), + // Wrap( + // children: [ + // BackButton( + // onPressed: () => ref + // .watch(appScreenConfigProvider.notifier) + // .onIndex(0), + // ), + // IconButton( + // tooltip: "More", + // onPressed: () {}, + // icon: const Icon(Icons.more_vert_rounded), + // ), + // ], + // ), + // ], + // ), + // ), + // Container( + // padding: const EdgeInsets.symmetric(vertical: 10), + // child: ListView.builder( + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // scrollDirection: Axis.vertical, + // itemCount: songs.length, + // itemBuilder: (context, index) { + // final s = songs[index].tag as SongModel; + // return MediaCard( + // onTap: () {}, + // onDoubleTap: () => Navigator.of(context).push( + // SongView.route(s.id), + // ), + // image: s.images[1].url, + // title: s.title, + // subtitle: + // "${formatNumber(s.playCount)} listens, ${s.label}", + // explicitContent: s.explicitContent, + // ); + // }, + // ), + // ), + // ], + // ); + // }, + // ), + // rightChild: ), + // ); } } + +Widget getRightChild({ + required BuildContext context, + required WidgetRef ref, + required String id, +}) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Trending.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + child: ref.watch(getTrendingSongsProvider).when( + data: (data) { + return ListView( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + semanticChildCount: data.total, + children: [ + ...data.songs.map( + (song) => MediaCard( + onTap: () => Navigator.of(context).push( + SongView.route(song.id), + ), + image: song.images[0].url, + title: song.title, + subtitle: song.albumName, + badgeIcon: Icons.music_note_rounded, + explicitContent: song.explicitContent, + ), + ), + ...data.albums.map( + (album) => MediaCard( + onTap: () => Navigator.of(context).push( + AlbumView.route(album.id), + ), + image: album.images[0].url, + title: album.title, + subtitle: album.artists.map((e) => e.name).join(','), + badgeIcon: Icons.album_rounded, + explicitContent: album.explicitContent, + onDoubleTap: () {}, + ), + ), + ...data.playlists.map( + (playlist) => MediaCard( + onTap: () => Navigator.of(context).push( + PlaylistView.route(playlist.id), + ), + image: playlist.images[0].url, + title: playlist.title, + subtitle: playlist.subtitle, + badgeIcon: Icons.playlist_play_rounded, + explicitContent: playlist.explicitContent, + onDoubleTap: () {}, + ), + ), + ], + ); + }, + error: (er, st) => ErrorPage( + error: er.toString(), + ), + loading: () => const LoadingPage(), + ), + ), + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Related Songs.', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + child: ref.watch(getRelatedSongsProvider(id)).when( + data: (data) { + return ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: data.songs.length, + itemBuilder: (context, index) { + final song = data.songs[index]; + return MediaCard( + onTap: () => Navigator.of(context).push( + SongView.route(song.id), + ), + image: song.images[0].url, + title: song.title, + subtitle: song.albumName, + badgeIcon: Icons.music_note_rounded, + explicitContent: song.explicitContent, + ); + }, + ); + }, + error: (er, st) => ErrorPage( + error: er.toString(), + ), + loading: () => const LoadingPage(), + ), + ), + ], + ); +} diff --git a/lib/functions/player/widgets/base_audio_player.dart b/lib/functions/player/widgets/base_audio_player.dart index 4c03307..427f39f 100644 --- a/lib/functions/player/widgets/base_audio_player.dart +++ b/lib/functions/player/widgets/base_audio_player.dart @@ -39,6 +39,7 @@ class _BaseAudioPlayerState extends ConsumerState { final metadata = state!.currentSource!.tag as SongModel; return Card( + elevation: 0, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, From d4d747ea65b79958cb5d739571a0078ac7cd23ef Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 16:11:57 +0530 Subject: [PATCH 15/20] settings ui hot fix --- .../player/views/current_playing_view.dart | 181 +----------------- .../settings/views/settings_view.dart | 11 +- .../widgets/playback_quality_setting.dart | 75 ++++++-- 3 files changed, 64 insertions(+), 203 deletions(-) diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index f8b3545..eb311ad 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -252,181 +252,6 @@ class _CurrentPlayingViewState extends ConsumerState { ), ); }); - - // return BlurImageContainer( - // image: "assets/background.jpg", - // isAsset: true, - // child: SplitViewContainer( - // leftChild: StreamBuilder( - // stream: player.sequenceStateStream, - // builder: (context, snapshot) { - // final state = snapshot.data; - // if (snapshot.connectionState == ConnectionState.waiting) { - // return const SizedBox( - // width: 400, - // child: Center( - // child: CircularProgressIndicator( - // color: Colors.white, - // ), - // ), - // ); - // } - - // if (state?.sequence.isEmpty ?? true) { - // return const Center( - // child: Text("Nothing To Play"), - // ); - // } - - // final song = state!.currentSource!.tag as SongModel; - // final songs = state.sequence; - - // return Column( - // mainAxisAlignment: MainAxisAlignment.start, - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // ClipRRect( - // borderRadius: BorderRadius.circular(10), - // child: Image.network( - // song.images[2].url, - // ), - // ), - // Container( - // padding: const EdgeInsets.all(8), - // width: 500, - // margin: const EdgeInsets.symmetric(vertical: 10), - // decoration: BoxDecoration( - // color: Colors.black12, - // borderRadius: BorderRadius.circular(10), - // ), - // child: Column( - // children: [ - // Text( - // song.title, - // style: const TextStyle( - // fontSize: 20, - // fontWeight: FontWeight.bold, - // ), - // ), - // Text( - // song.albumName, - // style: const TextStyle( - // fontSize: 18, - // ), - // ), - // ], - // ), - // ), - // Container( - // padding: const EdgeInsets.all(8), - // margin: const EdgeInsets.symmetric(vertical: 10), - // decoration: BoxDecoration( - // color: Colors.black12, - // borderRadius: BorderRadius.circular(10), - // ), - // child: Row( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // Expanded( - // flex: 1, - // child: StreamBuilder( - // stream: ref - // .watch(playerControllerProvider.notifier) - // .positionDataStream, - // builder: (context, snapshot) { - // final positionData = snapshot.data; - // return ProgressBar( - // progress: positionData?.position ?? Duration.zero, - // buffered: positionData?.bufferedPosition ?? - // Duration.zero, - // total: positionData?.duration ?? Duration.zero, - // progressBarColor: Colors.teal, - // baseBarColor: Colors.white.withOpacity(0.24), - // bufferedBarColor: Colors.white.withOpacity(0.24), - // thumbColor: Colors.white, - // timeLabelLocation: TimeLabelLocation.sides, - // timeLabelType: TimeLabelType.totalTime, - // barHeight: 3.0, - // thumbRadius: 4.0, - // onSeek: (duration) { - // player.seek(duration); - // }, - // ); - // }, - // ), - // ), - // PlayerControllerButtons( - // player: player, - // ), - // ], - // ), - // ), - // Container( - // padding: const EdgeInsets.all(8), - // margin: const EdgeInsets.symmetric(vertical: 10), - // decoration: BoxDecoration( - // color: Colors.black12, - // borderRadius: BorderRadius.circular(10), - // ), - // child: Row( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // const Padding( - // padding: EdgeInsets.all(10.0), - // child: Text( - // 'Next Songs.', - // style: TextStyle( - // fontSize: 24, - // fontWeight: FontWeight.bold, - // ), - // ), - // ), - // Wrap( - // children: [ - // BackButton( - // onPressed: () => ref - // .watch(appScreenConfigProvider.notifier) - // .onIndex(0), - // ), - // IconButton( - // tooltip: "More", - // onPressed: () {}, - // icon: const Icon(Icons.more_vert_rounded), - // ), - // ], - // ), - // ], - // ), - // ), - // Container( - // padding: const EdgeInsets.symmetric(vertical: 10), - // child: ListView.builder( - // shrinkWrap: true, - // physics: const NeverScrollableScrollPhysics(), - // scrollDirection: Axis.vertical, - // itemCount: songs.length, - // itemBuilder: (context, index) { - // final s = songs[index].tag as SongModel; - // return MediaCard( - // onTap: () {}, - // onDoubleTap: () => Navigator.of(context).push( - // SongView.route(s.id), - // ), - // image: s.images[1].url, - // title: s.title, - // subtitle: - // "${formatNumber(s.playCount)} listens, ${s.label}", - // explicitContent: s.explicitContent, - // ); - // }, - // ), - // ), - // ], - // ); - // }, - // ), - // rightChild: ), - // ); } } @@ -461,7 +286,7 @@ Widget getRightChild({ onTap: () => Navigator.of(context).push( SongView.route(song.id), ), - image: song.images[0].url, + image: song.images[1].url, title: song.title, subtitle: song.albumName, badgeIcon: Icons.music_note_rounded, @@ -473,7 +298,7 @@ Widget getRightChild({ onTap: () => Navigator.of(context).push( AlbumView.route(album.id), ), - image: album.images[0].url, + image: album.images[1].url, title: album.title, subtitle: album.artists.map((e) => e.name).join(','), badgeIcon: Icons.album_rounded, @@ -526,7 +351,7 @@ Widget getRightChild({ onTap: () => Navigator.of(context).push( SongView.route(song.id), ), - image: song.images[0].url, + image: song.images[1].url, title: song.title, subtitle: song.albumName, badgeIcon: Icons.music_note_rounded, diff --git a/lib/functions/settings/views/settings_view.dart b/lib/functions/settings/views/settings_view.dart index 8efae09..34e791d 100644 --- a/lib/functions/settings/views/settings_view.dart +++ b/lib/functions/settings/views/settings_view.dart @@ -7,10 +7,13 @@ class SettingsView extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - return const Column( - children: [ - PlaybackQualitySetting(), - ], + return const Padding( + padding: EdgeInsets.all(8.0), + child: Column( + children: [ + PlaybackQualitySetting(), + ], + ), ); } } diff --git a/lib/functions/settings/widgets/playback_quality_setting.dart b/lib/functions/settings/widgets/playback_quality_setting.dart index 5a9d1b1..890d545 100644 --- a/lib/functions/settings/widgets/playback_quality_setting.dart +++ b/lib/functions/settings/widgets/playback_quality_setting.dart @@ -18,32 +18,65 @@ class _PlaybackQualitySettingState @override Widget build(BuildContext context) { var items = SongQuality.values - .map((e) => PopupMenuItem( - child: Text(e.name), - onTap: () async { - final prefs = await SharedPreferences.getInstance(); - await prefs.setString(SharedPrefs.songQuality, e.quality); - ref.invalidate(songQualityProvider); - setState(() {}); - }, - )) + .map( + (e) => PopupMenuItem( + child: Text(e.name), + onTap: () async { + final prefs = await SharedPreferences.getInstance(); + await prefs.setString(SharedPrefs.songQuality, e.quality); + ref.invalidate(songQualityProvider); + setState(() {}); + }, + ), + ) .toList(); return ref.watch(songQualityProvider).when( - data: (data) => ListTile( - title: const Text("Playback Quality"), - trailing: PopupMenuButton( - child: Text( - data.name.toUpperCase(), - style: const TextStyle( - fontSize: 20, + data: (data) { + return Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("Playback Quality"), + ClipRRect( + borderRadius: BorderRadius.circular(20), + child: PopupMenuButton( + itemBuilder: (context) { + return items; + }, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + data.name, + style: const TextStyle( + fontSize: 18, + ), + ), + ), + ), + ), + ], ), ), - itemBuilder: (context) { - return items; - }, - ), - ), + ); + + // ListTile( + // title: const Text("Playback Quality"), + // trailing: PopupMenuButton( + // child: Text( + // data.name, + // style: const TextStyle( + // fontSize: 18, + // ), + // ), + // itemBuilder: (context) { + // return items; + // }, + // ), + // ) + }, error: (er, st) => Text(er.toString()), loading: () => const CircularProgressIndicator(), ); From d8d7f1f63abea92f83fc05f5c9963acea6a44582 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 17:44:30 +0530 Subject: [PATCH 16/20] search function hot fixes and improved --- lib/core/utils.dart | 82 +++++++ lib/functions/explore/views/explore_view.dart | 20 -- .../search/controllers/search_controller.dart | 31 ++- lib/functions/search/views/search_view.dart | 225 ++++++++++++++++-- lib/main.dart | 4 + 5 files changed, 310 insertions(+), 52 deletions(-) diff --git a/lib/core/utils.dart b/lib/core/utils.dart index fc355bd..507a8c1 100644 --- a/lib/core/utils.dart +++ b/lib/core/utils.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; +import 'package:sangeet_api/models.dart'; void showSnackBar(BuildContext context, String content) { ScaffoldMessenger.of(context).showSnackBar( @@ -37,3 +38,84 @@ String formatDuration(int value) { String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60).abs()); return "$twoDigitMinutes:$twoDigitSeconds"; } + +List mergeAllMediaForSearch(SearchTopQueryModel data) { + final lis = [ + ...data.albums.map( + (album) => TrendClass( + id: album.id, + type: album.type, + image: album.images[1].url, + title: album.title, + subtitle: album.description, + badgeIcon: Icons.album_rounded, + explicitContent: album.explicitContent, + position: 0, + ), + ), + ...data.songs.map( + (song) => TrendClass( + id: song.id, + type: song.type, + image: song.images[1].url, + title: song.title, + subtitle: song.description, + badgeIcon: Icons.music_note_rounded, + explicitContent: song.explicitContent, + position: song.ctr, + ), + ), + ...data.playlists.map( + (playlist) => TrendClass( + id: playlist.id, + type: playlist.type, + image: playlist.images[1].url, + title: playlist.title, + subtitle: playlist.description, + badgeIcon: Icons.playlist_play_rounded, + explicitContent: playlist.explicitContent, + position: 0, + ), + ), + ...data.artists.map( + (artist) => TrendClass( + id: artist.id, + type: artist.type, + image: artist.images[1].url, + title: artist.title, + subtitle: artist.description, + badgeIcon: Icons.mic_external_on_rounded, + explicitContent: false, + position: artist.position, + ), + ), + ]; + + lis.shuffle(); + + return lis; +} + +class TrendClass { + final String type; + final String id; + final String image; + final String title; + final String subtitle; + final IconData badgeIcon; + final bool explicitContent; + final Color? accentColor; + final int position; + + TrendClass({ + required this.image, + required this.position, + required this.id, + required this.type, + required this.title, + required this.subtitle, + required this.badgeIcon, + required this.explicitContent, + this.accentColor, + }); +} diff --git a/lib/functions/explore/views/explore_view.dart b/lib/functions/explore/views/explore_view.dart index beef65b..97dc24e 100644 --- a/lib/functions/explore/views/explore_view.dart +++ b/lib/functions/explore/views/explore_view.dart @@ -18,25 +18,5 @@ class _ExploreViewState extends ConsumerState { isAsset: true, child: ExploreList(), ); - // return Container( - // decoration: const BoxDecoration( - // image: DecorationImage( - // image: AssetImage('assets/background.jpg'), - // fit: BoxFit.cover, - // ), - // ), - // child: Container( - // decoration: BoxDecoration( - // gradient: LinearGradient( - // colors: [ - // Colors.black.withOpacity(1), - // Colors.grey.withOpacity(0.5), - // Colors.black.withOpacity(1), - // ], - // ), - // ), - // child: const ExploreList(), - // ), - // ); } } diff --git a/lib/functions/search/controllers/search_controller.dart b/lib/functions/search/controllers/search_controller.dart index 62e9cef..7135a92 100644 --- a/lib/functions/search/controllers/search_controller.dart +++ b/lib/functions/search/controllers/search_controller.dart @@ -1,21 +1,40 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:sangeet/core/api_provider.dart'; import 'package:sangeet_api/models.dart'; +import 'package:sangeet_api/sangeet_api.dart'; final searchControllerProvider = StateNotifierProvider((ref) { - return SearchController(); + return SearchController( + api: ref.watch(sangeetAPIProvider), + ); }); -final searchDataProvider = FutureProvider>((ref) async { - return ref.watch(searchControllerProvider.notifier).searchData; +final searchDataProvider = FutureProvider((ref) async { + final r = ref.watch(searchControllerProvider.notifier).searchData; + // if (r == null) { + // throw Error.throwWithStackTrace("Can't find right now", StackTrace.empty); + // } + return r; }); class SearchController extends StateNotifier { - SearchController() : super(false); + final SangeetAPI _api; + SearchController({required SangeetAPI api}) + : _api = api, + super(false); // ADD SEARCH METHODS - List searchData = []; + SearchResultModel? searchData; - Future searchSong({required String query}) async {} + Future searchSong({required String query}) async { + final results = await _api.search.global(query: query); + if (results == null) { + searchData = null; + throw Error.throwWithStackTrace("Can't find right now", StackTrace.empty); + } + + searchData = results; + } } diff --git a/lib/functions/search/views/search_view.dart b/lib/functions/search/views/search_view.dart index fa9620b..23d098f 100644 --- a/lib/functions/search/views/search_view.dart +++ b/lib/functions/search/views/search_view.dart @@ -1,9 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; -import 'package:sangeet/functions/search/controllers/search_controller.dart'; -import 'package:sangeet/functions/search/widgets/searchbar.dart'; -import 'package:sangeet/functions/search/widgets/song_tile.dart'; +import 'package:sangeet/core/widgets/media_card.dart'; +import 'package:sangeet/functions/album/view/album_view.dart'; +import 'package:sangeet/functions/artist/view/artist_view.dart'; +import 'package:sangeet/functions/playlist/view/playlist_view.dart'; +import 'package:sangeet/functions/search/controllers/search_controller.dart' + as c; +import 'package:sangeet/functions/song/view/song_view.dart'; class SearchView extends ConsumerStatefulWidget { const SearchView({super.key}); @@ -13,46 +17,215 @@ class SearchView extends ConsumerStatefulWidget { } class _SearchViewState extends ConsumerState { - final TextEditingController _searchController = TextEditingController(); + final SearchController _controller = SearchController(); void search(String q) async { - await ref.watch(searchControllerProvider.notifier).searchSong(query: q); - ref.invalidate(searchDataProvider); + await ref.watch(c.searchControllerProvider.notifier).searchSong(query: q); + ref.invalidate(c.searchDataProvider); } @override Widget build(BuildContext context) { + final List suggestions = [ + 'One Love', + "Love you for thousand years", + "Sajni re", + "Shape of you", + ]; + return Column( children: [ - BaseSearchBar( - controller: _searchController, - onPressed: () => search(_searchController.text), - onSubmit: (value) => search(value), + SearchAnchor( + searchController: _controller, + builder: (context, controller) { + return SearchBar( + controller: controller, + backgroundColor: MaterialStateProperty.all(Colors.transparent), + padding: const MaterialStatePropertyAll( + EdgeInsets.symmetric(horizontal: 16.0)), + onTap: () { + controller.openView(); + }, + onChanged: (_) { + // controller.openView(); + }, + onSubmitted: (value) { + search(value); + }, + leading: const Icon(Icons.search), + ); + }, + // viewOnChanged: (value) { + // _controller.closeView(value); + // search(value); + // }, + viewOnSubmitted: (value) { + _controller.closeView(value); + search(value); + }, + suggestionsBuilder: (context, controller) { + return List.from(suggestions.map((item) { + return ListTile( + trailing: const Icon(Icons.trending_up_rounded), + title: Text(item), + onTap: () { + setState(() { + controller.closeView(item); + }); + }, + ); + })); + }, ), Expanded( - child: (ref.watch(searchDataProvider).when( + child: (ref.watch(c.searchDataProvider).when( skipLoadingOnRefresh: false, - data: (songs) { - if (songs.isEmpty) { + data: (result) { + if (result == null) { return const Center( child: Text('Search results will be displayed here!'), ); } - return ListView( - physics: const AlwaysScrollableScrollPhysics(), - children: [ - for (final song in songs) - SearchSongTile(song: song, onTap: () {} - // ref - // .read(playerControllerProvider.notifier) - // .setSong(song: song), + return Container( + padding: const EdgeInsets.all(8.0), + child: ListView( + physics: const AlwaysScrollableScrollPhysics(), + children: [ + Visibility( + visible: + mergeAllMediaForSearch(result.top).isNotEmpty, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text( + "Top Results", + style: TextStyle( + fontSize: 16, + ), + ), + ), + ), + for (final item in mergeAllMediaForSearch(result.top)) + MediaCard( + onTap: () { + if (item.type == 'song') { + Navigator.of(context) + .push(SongView.route(item.id)); + } + if (item.type == 'album') { + Navigator.of(context) + .push(AlbumView.route(item.id)); + } + if (item.type == 'playlist') { + Navigator.of(context) + .push(PlaylistView.route(item.id)); + } + if (item.type == 'artist') { + Navigator.of(context) + .push(ArtistView.route(item.id)); + } + }, + image: item.image, + title: item.title, + subtitle: item.subtitle, + explicitContent: item.explicitContent, + badgeIcon: item.badgeIcon, + showMenu: false, + ), + Visibility( + visible: result.songs.results.isNotEmpty, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text( + "Songs", + style: TextStyle( + fontSize: 16, + ), + ), + ), + ), + for (final song in result.songs.results) + MediaCard( + onTap: () => Navigator.of(context) + .push(SongView.route(song.id)), + image: song.images[1].url, + title: song.title, + subtitle: song.subtitle, + explicitContent: song.explicitContent, + badgeIcon: Icons.music_note_rounded, + showMenu: false, + ), + Visibility( + visible: result.albums.results.isNotEmpty, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text( + "Albums", + style: TextStyle( + fontSize: 16, + ), + ), + ), + ), + for (final item in result.albums.results) + MediaCard( + onTap: () => Navigator.of(context) + .push(AlbumView.route(item.id)), + image: item.images[1].url, + title: item.title, + subtitle: item.description, + explicitContent: item.explicitContent, + badgeIcon: Icons.album_rounded, + showMenu: false, + ), + Visibility( + visible: result.artists.results.isNotEmpty, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text( + "Artists", + style: TextStyle( + fontSize: 16, + ), + ), + ), + ), + for (final item in result.artists.results) + MediaCard( + onTap: () => Navigator.of(context) + .push(ArtistView.route(item.id)), + image: item.images[1].url, + title: item.title, + subtitle: item.description, + explicitContent: false, + badgeIcon: Icons.mic_external_on_rounded, + showMenu: false, + ), + Visibility( + visible: result.playlists.results.isNotEmpty, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text( + "Playlists", + style: TextStyle( + fontSize: 16, + ), ), - const Center( - child: Text( - 'Only 24 results because this feature is in test phase.'), - ) - ], + ), + ), + for (final item in result.playlists.results) + MediaCard( + onTap: () => Navigator.of(context) + .push(PlaylistView.route(item.id)), + image: item.images[1].url, + title: item.title, + subtitle: item.description, + explicitContent: item.explicitContent, + badgeIcon: Icons.album_rounded, + showMenu: false, + ), + ], + ), ); }, error: (error, st) => ErrorPage(error: error.toString()), diff --git a/lib/main.dart b/lib/main.dart index db97e25..54bbd29 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -33,6 +33,10 @@ class MyApp extends StatelessWidget { ), darkTheme: ThemeData.dark().copyWith( textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), + colorScheme: ColorScheme.fromSeed( + seedColor: Colors.lightBlueAccent, + brightness: Brightness.dark, + ), cardTheme: const CardTheme( color: Colors.transparent, elevation: .5, From 04a99ca60b5cfd3bd6d5d38247df6eb551e19564 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 19:26:34 +0530 Subject: [PATCH 17/20] theme fix --- lib/main.dart | 2 +- pubspec.lock | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 54bbd29..e09da1c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,7 +29,7 @@ class MyApp extends StatelessWidget { title: 'Sangeet', debugShowCheckedModeBanner: false, theme: ThemeData( - colorSchemeSeed: Colors.grey, + colorSchemeSeed: Colors.lightBlueAccent, ), darkTheme: ThemeData.dark().copyWith( textTheme: GoogleFonts.ubuntuTextTheme(ThemeData.dark().textTheme), diff --git a/pubspec.lock b/pubspec.lock index 5f4da31..4546fa2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -141,10 +141,18 @@ packages: dependency: transitive description: name: dio - sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5" + sha256: "77befdddf51050e1635a04d2bcfff230089ce7294e642d00da58cd079c0de0c8" url: "https://pub.dev" source: hosted - version: "5.4.3+1" + version: "5.5.0" + dio_web_adapter: + dependency: transitive + description: + name: dio_web_adapter + sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac" + url: "https://pub.dev" + source: hosted + version: "1.0.1" fake_async: dependency: transitive description: @@ -541,7 +549,7 @@ packages: description: path: "." ref: main - resolved-ref: "9e85662d7a3111d1ecfcf2b509634170a2d26340" + resolved-ref: ef9d3e03751a7a7a3eda402b49bbaf471038eba4 url: "https://github.com/priyanshuverma-dev/sangeet-api" source: git version: "0.1.3" From 3e908caeff79e78c2781d7ed0636a4916e6a856c Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 20:26:03 +0530 Subject: [PATCH 18/20] loading hot fix --- .../skeletions/explore_loading_skeletion.dart | 313 ++++++++++++++++++ .../skeletions/media_loading_skeletion.dart | 73 ++++ .../skeletions/screen_loading_skeleton.dart | 215 ++++++++++++ lib/functions/album/view/album_view.dart | 3 +- lib/functions/artist/view/artist_view.dart | 3 +- lib/functions/charts/view/charts_view.dart | 3 +- .../explore/widgets/explore_list.dart | 3 +- .../player/views/current_playing_view.dart | 15 +- .../playlist/view/playlist_view.dart | 3 +- lib/functions/song/view/song_view.dart | 6 +- 10 files changed, 623 insertions(+), 14 deletions(-) create mode 100644 lib/core/skeletions/explore_loading_skeletion.dart create mode 100644 lib/core/skeletions/media_loading_skeletion.dart create mode 100644 lib/core/skeletions/screen_loading_skeleton.dart diff --git a/lib/core/skeletions/explore_loading_skeletion.dart b/lib/core/skeletions/explore_loading_skeletion.dart new file mode 100644 index 0000000..06af166 --- /dev/null +++ b/lib/core/skeletions/explore_loading_skeletion.dart @@ -0,0 +1,313 @@ +import 'package:flutter/material.dart'; +import 'package:skeletonizer/skeletonizer.dart'; + +class ExploreLoader extends StatelessWidget { + const ExploreLoader({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black, + body: SingleChildScrollView( + child: Skeletonizer( + ignoreContainers: true, + enabled: true, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Trendings section + Padding( + padding: const EdgeInsets.all(10.0), + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + child: Container( + width: 150, + height: 30, + color: Colors.grey, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 290.0, + child: ListView.builder( + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: 5, + itemBuilder: (context, index) { + return Container( + width: 200, + margin: const EdgeInsets.all(8.0), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 150, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 80, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ); + }, + ), + ), + + // New Albums section + Padding( + padding: const EdgeInsets.all(10.0), + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + child: Container( + width: 150, + height: 30, + color: Colors.grey, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: ListView.builder( + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: 5, + itemBuilder: (context, index) { + return Container( + width: 200, + margin: const EdgeInsets.all(8.0), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 150, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 80, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ); + }, + ), + ), + + // Top Charts section + Padding( + padding: const EdgeInsets.all(10.0), + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + child: Container( + width: 150, + height: 30, + color: Colors.grey, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 200.0, + child: ListView.builder( + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: 5, + itemBuilder: (context, index) { + return Container( + width: 200, + margin: const EdgeInsets.all(8.0), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 150, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 80, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ); + }, + ), + ), + + // Radios section + Padding( + padding: const EdgeInsets.all(10.0), + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + child: Container( + width: 150, + height: 30, + color: Colors.grey, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: ListView.builder( + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: 5, + itemBuilder: (context, index) { + return Container( + width: 200, + margin: const EdgeInsets.all(8.0), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 150, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 80, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ); + }, + ), + ), + + // New Playlists section + Padding( + padding: const EdgeInsets.all(10.0), + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + child: Container( + width: 150, + height: 30, + color: Colors.grey, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 20.0), + height: 400.0, + child: ListView.builder( + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemCount: 5, + itemBuilder: (context, index) { + return Container( + width: 200, + margin: const EdgeInsets.all(8.0), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 150, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 80, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/core/skeletions/media_loading_skeletion.dart b/lib/core/skeletions/media_loading_skeletion.dart new file mode 100644 index 0000000..3f87ac0 --- /dev/null +++ b/lib/core/skeletions/media_loading_skeletion.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:skeletonizer/skeletonizer.dart'; + +class MediaLoader extends StatelessWidget { + const MediaLoader({super.key}); + + @override + Widget build(BuildContext context) { + return Skeletonizer( + ignoreContainers: true, + enabled: true, + child: SizedBox( + height: 400, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + // Songs list + ListView.builder( + itemCount: 5, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric(vertical: 16.0), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 8.0), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 50, + height: 50, + color: Colors.grey[300], + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: double.infinity, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ), + ], + ), + ); + }, + ), + ], + ), + ), + ); + } +} diff --git a/lib/core/skeletions/screen_loading_skeleton.dart b/lib/core/skeletions/screen_loading_skeleton.dart new file mode 100644 index 0000000..f81b67a --- /dev/null +++ b/lib/core/skeletions/screen_loading_skeleton.dart @@ -0,0 +1,215 @@ +import 'package:flutter/material.dart'; +import 'package:skeletonizer/skeletonizer.dart'; + +class ScreenLoading extends StatelessWidget { + const ScreenLoading({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black, + body: SingleChildScrollView( + child: Skeletonizer( + ignoreContainers: true, + enabled: true, + child: Column( + children: [ + // Top Details Container skeleton + Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 100, + color: Colors.grey[300], + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: double.infinity, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ), + ], + ), + ), + // Action bar skeleton + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const BackButton(color: Colors.grey), + IconButton( + icon: + Icon(Icons.more_vert_rounded, color: Colors.grey), + onPressed: () {}, + ), + ], + ), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 100, + height: 20, + color: Colors.grey[300], + ), + ), + IconButton( + icon: Icon(Icons.play_arrow_rounded, color: Colors.grey), + onPressed: () {}, + ), + ], + ), + ), + // Songs list skeleton + ListView.builder( + itemCount: 5, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric(vertical: 16.0), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 8.0), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 50, + height: 50, + color: Colors.grey[300], + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: double.infinity, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ), + ], + ), + ); + }, + ), + // Artists list skeleton + Padding( + padding: const EdgeInsets.all(16.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: double.infinity, + height: 20, + color: Colors.grey[300], + ), + ), + ), + ListView.builder( + itemCount: 3, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric(vertical: 16.0), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 8.0), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 50, + height: 50, + color: Colors.grey[300], + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: double.infinity, + height: 20, + color: Colors.grey[300], + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Container( + width: 150, + height: 20, + color: Colors.grey[300], + ), + ), + ], + ), + ), + ], + ), + ); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/functions/album/view/album_view.dart b/lib/functions/album/view/album_view.dart index 17ed1e6..bb94868 100644 --- a/lib/functions/album/view/album_view.dart +++ b/lib/functions/album/view/album_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/widgets/play_button.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; @@ -154,7 +155,7 @@ class AlbumView extends ConsumerWidget { ); }, error: (err, st) => ErrorPage(error: err.toString()), - loading: () => const LoadingPage(), + loading: () => const ScreenLoading(), ); } } diff --git a/lib/functions/artist/view/artist_view.dart b/lib/functions/artist/view/artist_view.dart index 89fce9d..62922e7 100644 --- a/lib/functions/artist/view/artist_view.dart +++ b/lib/functions/artist/view/artist_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; import 'package:sangeet/core/widgets/play_button.dart'; @@ -138,7 +139,7 @@ class ArtistView extends ConsumerWidget { ); }, error: (err, st) => ErrorPage(error: err.toString()), - loading: () => const LoadingPage(), + loading: () => const ScreenLoading(), ); } diff --git a/lib/functions/charts/view/charts_view.dart b/lib/functions/charts/view/charts_view.dart index 264b985..f8332f6 100644 --- a/lib/functions/charts/view/charts_view.dart +++ b/lib/functions/charts/view/charts_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; import 'package:sangeet/core/widgets/play_button.dart'; @@ -147,7 +148,7 @@ class ChartView extends ConsumerWidget { ); }, error: (err, st) => ErrorPage(error: err.toString()), - loading: () => const LoadingPage(), + loading: () => const ScreenLoading(), ); } } diff --git a/lib/functions/explore/widgets/explore_list.dart b/lib/functions/explore/widgets/explore_list.dart index 453431e..9496966 100644 --- a/lib/functions/explore/widgets/explore_list.dart +++ b/lib/functions/explore/widgets/explore_list.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/explore_loading_skeletion.dart'; import 'package:sangeet/functions/explore/widgets/browse_card.dart'; import 'package:sangeet/functions/explore/widgets/trend_card.dart'; @@ -266,7 +267,7 @@ class ExploreList extends ConsumerWidget { error: error.toString(), ); }, - loading: () => const Loader(), + loading: () => const ExploreLoader(), ); } } diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index eb311ad..e386856 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -4,6 +4,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:just_audio/just_audio.dart'; import 'package:sangeet/core/core.dart'; import 'package:sangeet/core/app_config.dart'; +import 'package:sangeet/core/skeletions/media_loading_skeletion.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; import 'package:sangeet/core/widgets/split_view_container.dart'; @@ -35,7 +37,8 @@ class _CurrentPlayingViewState extends ConsumerState { stream: player.sequenceStateStream, builder: (context, snapshot) { final state = snapshot.data; - if (snapshot.connectionState == ConnectionState.waiting) { + + if (state?.sequence.isEmpty ?? false) { return Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -76,10 +79,8 @@ class _CurrentPlayingViewState extends ConsumerState { ); } - if (state?.sequence.isEmpty ?? true) { - return const Center( - child: Text("Nothing To Play"), - ); + if (snapshot.connectionState == ConnectionState.waiting) { + return const ScreenLoading(); } final song = state!.currentSource!.tag as SongModel; @@ -325,7 +326,7 @@ Widget getRightChild({ error: (er, st) => ErrorPage( error: er.toString(), ), - loading: () => const LoadingPage(), + loading: () => const MediaLoader(), ), ), const Padding( @@ -363,7 +364,7 @@ Widget getRightChild({ error: (er, st) => ErrorPage( error: er.toString(), ), - loading: () => const LoadingPage(), + loading: () => const MediaLoader(), ), ), ], diff --git a/lib/functions/playlist/view/playlist_view.dart b/lib/functions/playlist/view/playlist_view.dart index cc647aa..2013025 100644 --- a/lib/functions/playlist/view/playlist_view.dart +++ b/lib/functions/playlist/view/playlist_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; @@ -147,7 +148,7 @@ class PlaylistView extends ConsumerWidget { ); }, error: (err, st) => ErrorPage(error: err.toString()), - loading: () => const LoadingPage(), + loading: () => const ScreenLoading(), ); } diff --git a/lib/functions/song/view/song_view.dart b/lib/functions/song/view/song_view.dart index b597c81..6924ced 100644 --- a/lib/functions/song/view/song_view.dart +++ b/lib/functions/song/view/song_view.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sangeet/core/core.dart'; +import 'package:sangeet/core/skeletions/media_loading_skeletion.dart'; +import 'package:sangeet/core/skeletions/screen_loading_skeleton.dart'; import 'package:sangeet/core/utils.dart'; import 'package:sangeet/core/widgets/blur_image_container.dart'; import 'package:sangeet/core/widgets/media_card.dart'; @@ -138,7 +140,7 @@ class _SongViewState extends ConsumerState { ); }, error: (er, st) => ErrorPage(error: er.toString()), - loading: () => const Loader(), + loading: () => const MediaLoader(), ), ), ], @@ -179,7 +181,7 @@ class _SongViewState extends ConsumerState { ); }, error: (err, st) => ErrorPage(error: err.toString()), - loading: () => const LoadingPage(), + loading: () => const ScreenLoading(), ); } } From 712557a2b47b4a2f0aad3a906199a0c22d2a4326 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 20:44:31 +0530 Subject: [PATCH 19/20] build action --- .github/workflows/build.yml | 44 +++++++++++++++++++ .../player/views/current_playing_view.dart | 4 +- pubspec.yaml | 2 +- 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..28ce636 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,44 @@ +on: + pull_request: + branches: + - main + - master + push: + branches: + - main + - master + - dev + + +name: "Build & Release" + +jobs: + build: + name: Build & Release + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: '3.19.5' + - name: Dependencies install + run: flutter pub get + - name: Build For Windows + run: flutter build windows --release --build-name 1.1.${{ github.run_number }} --build-number ${{ github.run_number }} + - name: Archive Release + uses: thedoctor0/zip-release@master + with: + type: 'zip' + filename: Sangeet-v1.1.${{ github.run_number }}_windows_x64.zip + directory: build/windows/x64/runner/Release + - name: Push to Releases + uses: ncipollo/release-action@v1 + with: + artifacts: "build/windows/x64/runner/Release/Sangeet-v1.1.${{ github.run_number }}_windows_x64.zip" + tag: v1.1.${{ github.run_number }} + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/lib/functions/player/views/current_playing_view.dart b/lib/functions/player/views/current_playing_view.dart index e386856..bad200c 100644 --- a/lib/functions/player/views/current_playing_view.dart +++ b/lib/functions/player/views/current_playing_view.dart @@ -38,7 +38,7 @@ class _CurrentPlayingViewState extends ConsumerState { builder: (context, snapshot) { final state = snapshot.data; - if (state?.sequence.isEmpty ?? false) { + if (snapshot.connectionState == ConnectionState.waiting) { return Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -79,7 +79,7 @@ class _CurrentPlayingViewState extends ConsumerState { ); } - if (snapshot.connectionState == ConnectionState.waiting) { + if (state?.sequence.isEmpty ?? false) { return const ScreenLoading(); } diff --git a/pubspec.yaml b/pubspec.yaml index 6978b3e..b8123d7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 +version: 1.1.0+1 environment: sdk: '>=3.3.3 <4.0.0' From 1a575909444f6f2f18df4d73ec8425196e303591 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Wed, 3 Jul 2024 21:09:53 +0530 Subject: [PATCH 20/20] github properties --- github.properties | 1 + 1 file changed, 1 insertion(+) create mode 100644 github.properties diff --git a/github.properties b/github.properties new file mode 100644 index 0000000..c71373c --- /dev/null +++ b/github.properties @@ -0,0 +1 @@ +gpr.usr=priyanshuverma-dev \ No newline at end of file

      @d@4QRq@Nk(70tA@xK3GuR{pbVYpXMmh9f-*vp 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�_=U+X-+y{ui7 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