package Ġes . na ut ic apps . spot y media . ui . artist Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . google . android . material . tabs . Tab Layout Mediator Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġes . na ut ic apps . spot y media . R Ċ import Ġes . na ut ic apps . spot y media . base . Base Extra Data Ċ import Ġes . na ut ic apps . spot y media . base . Base Fragment Ċ import Ġes . na ut ic apps . spot y media . databinding . Fragment Artist Binding Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ class ĠArtist Fragment Ġ: ĠBase Fragment < Artist List State , ĠArtist ViewModel , ĠFragment Artist Binding >() Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBase ĠVariables ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġvar ĠviewModel Class Ġ= ĠArtist ViewModel :: class . java ĊĠĠĠ Ġlateinit Ġvar Ġvm Ġ: ĠArtist ViewModel ĊĊĠĠĠ Ġoverride Ġval Ġbinding Inflater : Ġ( LayoutInflater , ĠViewGroup ?, ĠBoolean ) Ġ-> ĠFragment Artist Binding Ġ= ĠFragment Artist Binding :: inflate ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom ĠVariables ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġlateinit Ġvar Ġpager Adapter Ġ: ĠArtist ViewPager Adapter ĊĠĠĠ Ġval Ġargs Ġ: ĠArtist Fragment Args Ġby Ġnav Args () ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Up ĠView ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġsetup View ( viewModel : ĠArtist ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvm Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġvm . get Information ( args . artist ) ĊĊĠĠĠĠĠĠĠ Ġpager Adapter Ġ= ĠArtist ViewPager Adapter ( this , Ġargs . artist . id ) Ġ{ Ġalbum Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( Artist Fragment Directions . action Artist Fragment To Tracks Fragment ( album )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . artist ViewPager 2 . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠ ĠTab Layout Mediator ( binding . artist Tab Layout , Ġbinding . artist ViewPager 2 ) Ġ{ Ġtab , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= Ġwhen ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 -> Ġ" Top ĠTrack s " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 -> Ġ" Album s " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 -> Ġ" Related ĠArt ists " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. attach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠState ĠManagement ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġon Normal ( data : ĠArtist List State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . artist ?. let Ġ{ Ġmy artist Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . art Text Name . text Ġ= Ġmy artist . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . artist Fragment Gen res . text Ġ= ĠgetAll Gen res ( my artist . genres ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . artist Fragment Follow ers Text . text Ġ= Ġmy artist . followers . total . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . artist Fragment Ranking Text . text Ġ= Ġmy artist . pop ularity . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmy Image Ġ= Ġ" https :// images - assets . nasa . gov / image / PI A 1 7 6 6 9 / PI A 1 7 6 6 9 ~ thumb . jpg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ġmy Image Ġ= Ġmy artist . images . first OrNull ()?. url . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( my Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resize ( 1 2 0 , 1 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ extr ater rest re ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . art Image ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loading ( data Loading : ĠBase Extra Data ?) Ġ{ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( data Error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġwhen Ġ( data Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHttp Exception Ġ-> Ġ" Network ĠError : Ġ" Ġ+ Ġdata Error . code (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnknown Host Exception Ġ-> Ġ" Please , ĠInternet Ġconnection Ġneeded Ġ!! " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" O ops ĠUnknown ĠError , ĠPlease Ġtry Ġlater Ġ!! " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠToast . makeText ( require Activity (), Ġmsg , ĠToast . LENGTH _ LONG ). show (); ĊĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom ĠTools ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Gen res ( artists : ĠList < String >) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġartists . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġif Ġ( result . isEmpty ()) Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ"$ result , Ġ$ it " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĊĊ Ċ }