package Ġcom . an ang kur . budget ku . dashboard . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . an ang kur . budget ku . base . Base Activity Ċ import Ġcom . an ang kur . budget ku . base . Base Error View Ċ import Ġcom . an ang kur . budget ku . dashboard . R Ċ import Ġcom . an ang kur . budget ku . dashboard . databinding . Activity Home Binding Ċ import Ġcom . an ang kur . budget ku . mapper . Project Mapper Ċ import Ġcom . an ang kur . budget ku . dashboard . mapper . User Mapper Ċ import Ġcom . an ang kur . budget ku . dashboard . model . User Intent Ċ import Ġcom . an ang kur . budget ku . model . Project Intent Ċ import Ġcom . an ang kur . budget ku . presentation . features . dashboard . Home ViewModel Ċ import Ġcom . an ang kur . budget ku . utils .* Ċ import Ġcom . an ang kur . budget ku . utils . Navigation . go ToAdd Project Activity Ċ import Ġcom . an ang kur . budget ku . utils . Navigation . goTo Detail Project Activity Ċ import Ġcom . an ang kur . budget ku . utils . Navigation . goTo Profile Activity Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġcom . an ang kur . budget ku . R Ġas Ġapp R Ċ Ċ class ĠHome Activity Ġ: ĠBase Activity < Activity Home Binding , ĠHome ViewModel >(), ĠHome Activity ActionListener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATE _ FORMAT _ HOME Ġ= Ġ" EEEE , ĠM MM Ġdd Ġy yyy " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġm ViewModel : ĠHome ViewModel ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġobtain ViewModel ( Home ViewModel :: class . java ) ĊĠĠĠ Ġoverride Ġval Ġm Toolbar : ĠToolbar ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠ Ġoverride Ġval Ġm Title Toolbar : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( app R . string . app _ name ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject Adapter : ĠProject Adapter ĊĊĠĠĠ Ġprivate Ġval Ġproject Mapper Ġ= ĠProject Mapper . getInstance () ĊĠĠĠ Ġprivate Ġval Ġuser Mapper Ġ= ĠUser Mapper . getInstance () ĊĊĠĠĠ Ġoverride Ġfun Ġsetup View (): ĠActivity Home Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠActivity Home Binding . inflate ( layout Inflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup Date View ( Calendar . getInstance (). time ) ĊĠĠĠĠĠĠĠ Ġsetup Recycler Project () ĊĠĠĠĠĠĠĠ Ġsetup ClickListener () ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġm ViewModel . getProject () ĊĠĠĠĠĠĠĠ Ġm ViewModel . getUser () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Add Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġgo ToAdd Project Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Edit Profile () Ġ{ ĊĠĠĠĠĠĠĠ Ġgo To Profile Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Item ( data : ĠProject Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgo To Detail Project Activity ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġm ViewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Get Project . observe ( this @ Home Activity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . show Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . end Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Get Project . observe ( this @ Home Activity , ĠObserver Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . recycler Project . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . show Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= ĠgetString ( R . string . error _ project _ empty ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Type Ġ= ĠBase Error View . ERROR _ NULL _ DATA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . recycler Project . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Adapter . set Recycler Data ( list . map Ġ{ Ġproject Mapper . map To Intent ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Get Project . observe ( this @ Home Activity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . ev Project . show Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Error String Ġ= ĠgetString ( R . string . btn _ retry ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Type Ġ= ĠBase Error View . ERROR _ GENERAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading GetUser . observe ( this @ Home Activity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . layout Profile . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . pb Profile . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . layout Profile . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout . pb Profile . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess GetUser . observe ( this @ Home Activity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup User View ( user Mapper . map To Intent ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror GetUser . observe ( this @ Home Activity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar Short ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup User View ( data : ĠUser Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Layout . iv Profile . setImage Url ( data . profile Photo Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġm Layout . tv Name . text Ġ= Ġdata . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Recycler Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Adapter Ġ= ĠProject Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġm Layout . recycler Project . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup RecyclerView Linear ( this @ Home Activity , ĠRecyclerView . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġproject Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Date View ( date : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( DATE _ FORMAT _ HOME , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġm Layout . tv Date . text Ġ= ĠdateFormat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ClickListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Layout . btn Add Project . setOnClickListener Ġ{ Ġthis . onClick Add Project () Ġ} ĊĠĠĠĠĠĠĠ Ġm Layout . btn Edit Profile . setOnClickListener Ġ{ Ġthis . onClick Edit Profile () Ġ} ĊĠĠĠ Ġ} Ċ }