package Ġcom . friends app . github . repository Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġcom . friends app . github . database . Database User ListItem Ċ import Ġcom . friends app . github . database . Users Database Ċ import Ġcom . friends app . github . database . as Domain Model Ċ import Ġcom . friends app . github . domain . User ListItem Ċ import Ġcom . friends app . github . network . UserList Service Ċ Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . ArrayList Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUser List Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser List Service : ĠUser List Service , ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠUsers Database Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġitems Array : ĠArrayList < Database User ListItem > Ġ= ĠArrayList () ĊĠĠĠ Ġval Ġusers : ĠLive Data < List < User ListItem >> Ġ= ĊĠĠĠĠĠĠĠ ĠTransform ations . map ( database . users Dao . get Database Users ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . as Domain Model () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġrefresh UserList () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġuser List Service . getUser List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( users . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġusers . body ()?. result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġitems . count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġi ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAvatar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavatar Ġ= Ġitems [ i ]. picture . medium Ġ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlarge Avatar Ġ= Ġitems [ i ]. picture . large Ġ?: Ġ" N / A " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUser Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfirstName Ġ= Ġitems [ i ]. name . first ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlastName Ġ= Ġitems [ i ]. name . last ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= ĠfirstName Ġ+ Ġ"" Ġ+ ĠlastName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcity Ġ= Ġitems [ i ]. location . city ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġitems [ i ]. location . state ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġitems [ i ]. location . country ?: Ġ" N / A " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġitems [ i ]. email ?: Ġ" N / A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Phone Ġ= Ġitems [ i ]. cell ?: Ġ" N / A " ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase User ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell Phone , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlarge Avatar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Array . add ( model ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . users Dao . insert All ( items Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }