package Ġcom . test w ther . ui . datasource Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . test w ther . domain . data . dto . City DTO Ċ import Ġcom . test w ther . domain . resources . Resource Reader Ċ import Ġcom . test w ther . domain . use Case . Weather UseCase Ċ import Ġcom . test w ther . ui . common . to Ui Entity Ċ import Ġcom . test w ther . ui . data . City Tab Ċ import Ġcom . test w ther . ui . data . Weather Ui Entity Ċ Ċ class ĠWeather DataSource ( ĊĠĠĠ Ġprivate Ġval Ġweather UseCase : ĠWeather UseCase , ĊĠĠĠ Ġprivate Ġval Ġresources : ĠResource Reader Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ current : ĠWeather Ui Entity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Source . post Value ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcurrent Source Ġ= ĠMutable LiveData < Weather Ui Entity >() ĊĠĠĠ Ġval Ġcurrent : ĠLive Data < Weather Ui Entity > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcurrent Source ĊĊĠĠĠ Ġprivate Ġvar Ġ_ daily : ĠList < Weather Ui Entity > Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdaily Source . post Value ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdaily Source Ġ= ĠMutable LiveData < List < Weather Ui Entity >>() ĊĠĠĠ Ġval Ġdaily : ĠLive Data < List < Weather Ui Entity >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdaily Source ĊĊĠĠĠ Ġsuspend Ġfun Ġinvalidate ( city Tab : ĠCity Tab ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweather UseCase . get Weather By City ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCity DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Name Ġ= Ġcity Tab . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġcity Tab . location . lat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlon Ġ= Ġcity Tab . location . lon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ current Ġ= Ġit . current . to Ui Entity ( resources ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ daily Ġ= Ġit . daily . map Ġ{ Ġit . to Ui Entity ( resources ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġinvalidate ( lat : ĠDouble , Ġlon : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweather UseCase . get Weather ( lat , Ġlon ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ current Ġ= Ġit . current . to Ui Entity ( resources ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ daily Ġ= Ġit . daily . map Ġ{ Ġit . to Ui Entity ( resources ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }