package Ġcom . example . android . prox imo . view models Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . example . android . prox imo . models . Category Ċ import Ġcom . example . android . prox imo . network . Api Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ enum Ġclass ĠM ars Api Status Ġ{ ĠLO ADING , ĠERROR , ĠDONE Ġ} Ċ Ċ class ĠType Services ViewModel ( county : ĠString , Ġdistrict : ĠString , Ġapp : ĠApplication ) Ġ: ĠAndroid ViewModel ( app ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ status Ġ= ĠMutable LiveData < M ars Api Status >() ĊĊĠĠĠ Ġval Ġstatus : ĠLive Data < M ars Api Status > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ status ĊĊĠĠĠ Ġprivate Ġval Ġ_ properties Ġ= ĠMutable LiveData < List < Category >>() ĊĊĠĠĠ Ġval Ġproperties : ĠLive Data < List < Category >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ properties ĊĊĠĠĠ Ġprivate Ġval Ġ_ navigate To Selected Property Ġ= ĠMutable LiveData < Category >() ĊĊĠĠĠ Ġval Ġnavigate To Selected Property : ĠLive Data < Category > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ navigate To Selected Property ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġget Services Categories () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Services Categories () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Properties Deferred Ġ= ĠApi . ret rofit Service . get Services Types Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠM ars Api Status . LOADING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Result Ġ= Ġget Properties Deferred . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠM ars Api Status . DONE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" debug ", Ġ"${ list Result . categories }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ properties . value Ġ= Ġlist Result . categories ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" error ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠM ars Api Status . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ properties . value Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisplay Property Details ( selected Types Of Services : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Selected Property . value Ġ= Ġselected Types Of Services ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisplay Property Details Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Selected Property . value Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }