package Ġcom . weather . android . ui . weather Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . weather . android . logic . Api Repository Ċ import Ġcom . weather . android . logic . Choose Place Repository Ċ import Ġcom . weather . android . logic . model . Choose Place Data Ċ import Ġcom . weather . android . logic . model . Location Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠWeather Fragment ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġlocation LiveData Ġ= ĠMutable LiveData < Location >() ĊĊĠĠĠ Ġvar Ġlocation Lng Ġ= Ġ"" ĊĠĠĠ Ġvar Ġlocation Lat Ġ= Ġ"" ĊĠĠĠ Ġvar Ġplace Name Ġ= Ġ"" ĊĠĠĠ Ġvar Ġid Ġ= Ġ"" ĊĊĠĠĠ Ġval Ġweather L ived ata Ġ= ĠTransform ations . switch Map ( location LiveData ){ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠ ĠApi Repository . refresh City Weather ( location . lng , location . lat ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Weather ( lng : String , lat : String ){ ĊĠĠĠĠĠĠĠ Ġlocation LiveData . value Ġ= ĠLocation ( lng , lat ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Choose Place ( choose Place Data : ĠChoose Place Data ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChoose Place Repository . insert Choose Place ( choose Place Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Choose Place ( name Ġ: ĠString , sky con : String , description Ġ: ĠString , temperature Ġ: ĠInt , max Ġ: ĠInt , min Ġ: ĠInt ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChoose Place Repository . update Choose Place ( name , sky con , description , temperature , max , min ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Loc ate Place ( name Ġ: ĠString , lng : String , lat : String , sky con : String , description Ġ: ĠString , temperature Ġ: ĠInt , max Ġ: ĠInt , min Ġ: ĠInt ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChoose Place Repository . update Loc ate Place ( name , lng , lat , sky con , description , temperature , max , min ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }