package Ġcom . android . stores _ app . ui Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġandroidx . paging . Paging Data Ċ import Ġandroidx . paging . cached In Ċ import Ġcom . android . stores _ app . data . model . Stores Ċ import Ġcom . android . stores _ app . domain . Stores Repository Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠStores ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġstores Repository : ĠStores Repository ) Ġ: ĊĠĠĠ ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Longitude Value : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Latitude Value : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġstores Flow : ĠFlow < Paging Data < Stores >> ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Stores ( longitude : ĠDouble , Ġlatitude : ĠDouble ): ĠFlow < Paging Data < Stores >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Result Ġ= Ġstores Flow ĊĠĠĠĠĠĠĠ Ġif Ġ( longitude Ġ== Ġcurrent Longitude Value Ġ&& Ġlatitude Ġ== Ġcurrent Latitude Value Ġ&& Ġlast Result Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlast Result ĊĊĠĠĠĠĠĠĠ Ġcurrent Longitude Value Ġ= Ġlongitude ĊĠĠĠĠĠĠĠ Ġcurrent Latitude Value Ġ= Ġlatitude ĊĠĠĠĠĠĠĠ Ġval Ġnew Result : ĠFlow < Paging Data < Stores >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstores Repository . get Stores Result Stream ( longitude , Ġlatitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cached In ( viewModel Scope ) ĊĊĠĠĠĠĠĠĠ Ġstores Flow Ġ= Ġnew Result ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Result ĊĠĠĠ Ġ} Ċ }