package Ġcom . ch ans ax . places . data . favorite Ċ Ċ import Ġcom . ch ans ax . places . data . favorite . model . Favorite Place Ċ import Ġcom . ch ans ax . places . data . favorite . cache . Fav Place Db Ċ import Ġcom . ch ans ax . places . data . search . model . Business Ċ import Ġcom . ch ans ax . places . util . to Boolean Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ ĠCreated Ġby Ġch and an Ġon Ġ 5 / 1 6 / 2 1 Ċ Ġ**/ Ċ class ĠF avorites Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġdb : ĠF av Place Db Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfav Place Dao Ġ= Ġdb . fav Place Dao () ĊĊĠĠĠ Ġsuspend Ġfun Ġset Favorite ( value : ĠF avorite Place ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfav Place Dao . insert ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcheck Favorite ( place : ĠString ): ĠF avorite Place ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfav Place Dao . favorite Place ( place ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcheck F avorites ( places : ĠArray < String >): ĠList < Favorite Place >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfav Place Dao . favorite Places ( places ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcheck F avorites ( business : ĠList < Business >): ĠMap < String , ĠBoolean >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplace Ids Ġ= Ġbusiness . map NotNull Ġ{ Ġit . place _ id Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġreturn Ġplace Ids . isNotEmpty (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck F avorites ( place Ids )?. let Ġ{ Ġplace List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace List . associate By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Selector Ġ= Ġ{ Ġit . place Id Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Transform Ġ= Ġ{ Ġit . is Favorite . to Boolean () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ