package Ġcom . ser ge y rod in . c iti est ask . info . view Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . ser ge y rod in . c iti est ask . info . City Info Ċ import Ġcom . ser ge y rod in . c iti est ask . info . inter actor . IC ity Info Interactor Ċ import Ġjava . lang . Exception Ċ Ċ class ĠCity Info Presenter ( private Ġval Ġcity Info Interactor : ĠI City Info Interactor ): ĠI City Info Presenter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ loading Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġoverride Ġval Ġloading : ĠLive Data < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ loading ĊĊĠĠĠ Ġprivate Ġval Ġ_ city Info Ġ= ĠMutable LiveData < City Info >() ĊĠĠĠ Ġoverride Ġval Ġcity Info : ĠLive Data < City Info > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ city Info ĊĊĠĠĠ Ġprivate Ġval Ġ_ error Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġoverride Ġval Ġerror : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ error ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch City Info ( country : ĠString , Ġcity : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (_ city Info . value Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ loading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ city Info . value Ġ= Ġcity Info Interactor . fetch City Info ( country , Ġcity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error . value Ġ= Ġe . localized Message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} finally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ loading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }