package Ġcom . sum mit . jet example . state . li ved ata . ui Ċ Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . ui . graphics .* Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . sum mit . jet example . R Ċ import Ġcom . sum mit . jet example . state . li ved ata . data . model . User Ċ import Ġcom . sum mit . jet example . state . li ved ata . presentation . User ViewModel Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . draw . shadow Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġcom . sum mit . jet example . utils . Result Ċ import Ġcom . sum mit . jet example . utils . showMessage Ċ import Ġdev . chr is ban es . ac comp an ist . co il . Co il Image Ċ Ċ /** Ċ Ġ* Ġ[ EN ] Ċ Ġ* ĠUser List Screen Ġis Ġa ĠUI Ġclass Ġthat Ġholds Ġhow Ġeach Ġrow Ġshould Ġbe Ġdisplayed Ċ Ġ* Ġand Ġgenerates Ġa Ġlist Ġof ĠUsers Ġbased Ġon Ġthe Ġdata Ġthat Ġcomes Ġfrom Ġa ĠViewModel . Ċ Ġ* ĠWe Ġonly Ġexpose Ġthe ĠUser Screen Ġimplementation Ġwhich Ġis Ġthe Ġrespons able Ġof Ġdraw Ġthe Ġentire Ġlist Ċ Ġ* Ġof Ġusers . Ċ Ġ*/ Ċ Ċ /** Ċ Ġ*[ ES ] Ċ Ġ* ĠUser List Screen Ġes Ġuna Ġp ant alla Ġde ĠUI Ġque Ġcont iene Ġcada Ġelemento Ġque Ġmo str amos Ġen Ġp ant alla Ċ Ġ* Ġy Ġgener a Ġuna Ġlista Ġde ĠUs uarios Ġbas ado Ġen Ġla ĠinformaciÃ³n Ġprov ista Ġpor Ġel ĠViewModel . Ċ Ġ* ĠSo lo Ġexp on emos Ġel Ġmet odo ĠUser Screen Ġque Ġes Ġel Ġenc arg ado Ġde Ġdi bu jar Ġen Ġp ant alla Ġla Ġlista Ġde Ġusuarios . Ċ Ġ*/ Ċ Ċ @ Composable Ċ private Ġfun ĠUser Row ( user : ĠUser , Ġon User Click : Ġ( User ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . click able ( onClick Ġ= Ġ{ Ġon User Click ( user ) Ġ}). fill Max Width (). padding ( 8 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Modifier Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . required Size ( 4 6 . dp ). shadow ( elevation Ġ= Ġ 4 . dp , Ġshape Ġ= ĠCircle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( color Ġ= ĠColor . White , Ġshape Ġ= ĠCircle Shape ) ĊĠĠĠĠĠĠĠ ĠCo il Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġuser . profile Pic ut re , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġimage Modifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Profile Ġpicture " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp ). align ( Alignment . Center Vert ically )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġuser . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġuser . bio , Ġstyle Ġ= ĠMaterial Theme . typography . body 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠUser List ( user List : ĠList < User >) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ ĠLazy Column Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( user List ) Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Row ( user Ġ= Ġuser , Ġon User Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( context , Ġ" You Ġclicked Ġ${ user . name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠUser Screen ( user ViewModel : ĠUser ViewModel ) Ġ{ ĊĠĠĠ Ġval Ġitems : ĠResult < List < User >> Ġby Ġuser ViewModel . fetch UserList . observe As State ( ĊĠĠĠĠĠĠĠ ĠResult . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġwhen Ġ( items ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠResult . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShow Progress Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( items Ġas ĠResult . Success < List < User >> ). data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser List ( user List Ġ= Ġ( items Ġas ĠResult . Success < List < User >> ). data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Empty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ EN ] ĠSince Ġits Ġa Ġsynchronous Ġcall Ġwe Ġdo Ġnot Ġhandle Ġexceptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ ES ] ĠY a Ġque Ġes Ġuna Ġllam ada Ġsync ron a Ġno Ġman ej amos Ġex ce pc iones ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠShow Progress Dialog () Ġ{ ĊĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (), Ġcontent Alignment Ġ= ĠAlignment . Center ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCircular Progress Indicator () ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Loading ...", Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 8 . dp )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠShow Empty List () Ġ{ ĊĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (), Ġcontent Alignment Ġ= ĠAlignment . Center ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ baseline _ error _ outline _ 2 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Baseline Ġerror Ġoutline " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" There Ġis Ġno Ġdata ", Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 8 . dp )) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ fun ĠUser Row Preview () Ġ{ ĊĠĠĠ ĠUser Row ( User ("", Ġ" G ast Ã³n ĠS ail l Ã©n ", Ġ" Android ĠEngineer "), Ġon User Click Ġ= Ġ{}) Ċ }