package Ġcom . synt ex _ error . j ep ack compose . view models Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . compose . runtime . Mutable State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . synt ex _ error . j ep ack compose . models . Dog Model Ċ import Ġcom . synt ex _ error . j ep ack compose . networking . Api Provider Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Experimental Cor outines Api Ċ class ĠDog List ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġpage : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġvar ĠisLoading Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġvar Ġis End Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġvar Ġis Error Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġvar Ġis Msg Ġ= Ġmutable State Of ("") ĊĠĠĠ Ġval Ġdog List : ĠMutable State < List < Dog Model >> Ġ= Ġmutable State Of ( ArrayList ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġint ial Dog s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġint ial Dog s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= ĠApi Provider . data Api . get Dog s B reed s ( 1 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . is Successful Ġ&& Ġcall . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdo gs Ġ= Ġcall . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dog s Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdog List . value Ġ= Ġdo gs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Msg . value Ġ= Ġ" Error Ġ: Ġ${ call . code () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" get News : Ġ${ ex . localized Message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Msg . value Ġ= Ġ" Error Ġ: Ġ${ ex . localized Message }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget More Dog s () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= ĠApi Provider . data Api . get Dog s B reed s ( page Ġ+ Ġ 1 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . is Successful Ġ&& Ġcall . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdo gs Ġ= Ġcall . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dog s Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġapi Ġsend Ġempty Ġlist Ġwhen Ġthere Ġis Ġno Ġdo gs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dog s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġits Ġthe Ġend ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis End . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Msg . value Ġ= Ġ" You ĠAre ĠAt ĠThe ĠLast ĠPage Ġ!! " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd New Dog s ToList ( dog s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Msg . value Ġ= Ġ" Error Ġ: Ġ${ call . code () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd New Dog s ToList ( dog s : ĠMutable List < Dog Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent List Ġ= ĠArrayList ( dog List . value ) ĊĠĠĠĠĠĠĠ Ġcurrent List . addAll ( dog s ) ĊĠĠĠĠĠĠĠ Ġdog List . value Ġ= Ġcurrent List ĊĠĠĠĠĠĠĠ Ġpage Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ Ċ }