package Ġcom . kar th ik . splash . home screen . bottom lik et ab Ċ Ċ import Ġandroidx . compose . foundation . is System In Dark Theme Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . State Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġcom . kar th ik . network . home . bottom lik et ab . models . Photos Ċ import Ġcom . kar th ik . network . home . models . Home Screen Login State Ċ import Ġcom . kar th ik . splash . R Ċ import Ġcom . kar th ik . splash . ui .* Ċ Ċ @ Experimental Material Api Ċ @ Composable Ċ fun ĠBottom Like Tab ( ĊĠĠĠ Ġlogin State : ĠState < Home Screen Login State ? >, ĊĠĠĠ Ġbottom like view model : ĠBottom Like ViewModel Ċ ) Ġ{ ĊĠĠĠ ĠSpl ash Theme Ġ{ ĊĊĠĠĠĠĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( login State . value Ġis ĠHome Screen Login State . Login Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Like Photos ( viewModel Ġ= Ġbottom like view model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Login Screen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom like view model . login Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Material Api Ċ @ Composable Ċ fun Ġrender Like Photos ( viewModel : ĠBottom Like ViewModel ) Ġ{ ĊĊĠĠĠ ĠviewModel . get Lik ed Photos () ĊĠĠĠ Ġval Ġscreen State Ġ= ĠviewModel . network Network Status Like . observe As State () ĊĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( screen State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLike Screen Network Status . Show Progress Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Indicator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLike Screen Network Status . Error Fetching Photos Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Error State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLike Screen Network Status . User Lik ed Photos Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( screen State . value Ġas ĠLike Screen Network Status . User Lik ed Photos ). lik ed Photos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! photos . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender ListOf Lik ed Photos ( viewModel Ġ= ĠviewModel , Ġlik ed Photos Ġ= Ġphotos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġrender Error State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġrender Login Screen ( onClick : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( Dimensions . six teen Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width (), ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSpl ash Brand Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage ResourceId Ġ= ĠR . drawable . cold _ image , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġstring Resource ( id Ġ= ĠR . string . welcome _ back ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . wrap Content Height ( align Ġ= ĠAlignment . Center Vert ically ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= Ġif Ġ( is System In Dark Theme ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Filter . tint ( color Ġ= ĠColor . White ) Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . welcome _ back _ subtitle ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . caption ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( Dimensions . tw enty Four Dp )) ĊĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= ĠonClick , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( Dimensions . tw enty Four Dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . login ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 6 . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġrender Error State () Ġ{ ĊĠĠĠ ĠSpl ash Brand Layout ( ĊĠĠĠĠĠĠĠ Ġimage ResourceId Ġ= ĠR . drawable . broken _ heart , ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġstring Resource ( id Ġ= ĠR . string . zero _ likes ), ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( Dimensions . six teen Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Height ( align Ġ= ĠAlignment . Center Vert ically ), ĊĠĠĠĠĠĠĠ Ġcolor Filter Ġ= Ġif Ġ( is System In Dark Theme ()) ĠColor Filter . tint ( color Ġ= ĠColor . White ) Ġelse Ġnull ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Experimental Material Api Ċ @ Composable Ċ private Ġfun Ġrender ListOf Lik ed Photos ( viewModel : ĠBottom Like ViewModel , Ġlik ed Photos : ĠList < Photos >) Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ ĠTool Bar ( title Ġ= Ġstring Resource ( id Ġ= ĠR . string . title _ likes )) ĊĠĠĠĠĠĠĠ ĠLazy Column ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( lik ed Photos ) Ġ{ Ġlik ed Photo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Row ( lik ed Photo ) Ġ{ Ġphoto Clicked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Photo Item Clicked ( photo Clicked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Composable Ċ @ Preview Ċ fun Ġpreview Login State () Ġ{ ĊĠĠĠ ĠSpl ash Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Login Screen ({}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ @ Preview Ċ fun Ġpreview Error State () Ġ{ ĊĠĠĠ ĠSpl ash Theme Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Error State () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ @ Preview Ċ fun Ġpreview Lik ed Photo State () Ġ{ ĊĠĠĠ ĠSpl ash Theme Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ