package Ġcom . alex andre . sk ire sort . data Ċ Ċ import Ġcom . alex andre . sk ire sort . db . Sk i Res ort Dao Ċ import Ġcom . alex andre . sk ire sort . db . model . Sk i Res ort Local Model Ċ import Ġcom . alex andre . sk ire sort . domain . model .* Ċ import Ġcom . alex andre . sk ire sort . service . Sk i Res ort List Service Ċ import Ġcom . alex andre . sk ire sort . service . model . Sk i Res ort Remote Model Ċ import Ġkotlinx . coroutines . flow .* Ċ Ċ class ĠSk i Res ort Repo ( private Ġval Ġsk i Res ort List Service : ĠSk i Res ort List Service , Ġprivate Ġval Ġsk i Res ort Dao : ĠSk i Res ort Dao ) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Remote Res ort s (): ĠFlow < List < Sk i Res ort Remote Model >> Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Result Ġ= Ġsk i Res ort List Service . get Sk i Res ort s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( network Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsk i Res ort Dao . insert All ( prepare Insert With Fav Status ( to Db Model ( network Result ))) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Sk i Res ort s (): ĠFlow < List < Sk i Res ort Ui Model >> Ġ= ĊĠĠĠĠĠĠĠ Ġsk i Res ort Dao . getAll Sk i Res ort s (). combine ( getAll Remote Res ort s ()) Ġ{ Ġlocal , Ġremote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Ui Model ( local , Ġremote ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Sk i Res ort Fav ( ski Res ort Id : ĠInt , Ġis Fav : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsk i Res ort Dao . update Fav ( ski Res ort Id , Ġis Fav ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġprepare Insert With Fav Status ( ski Res ort Local Models : ĠList < Sk i Res ort Local Model >): ĠList < Sk i Res ort Local Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmutable Iterator Ġ= Ġsk i Res ort Local Models . iterator () ĊĊĠĠĠĠĠĠĠ Ġ// Ġiterator () Ġextension Ġis Ġcalled Ġhere ĊĠĠĠĠĠĠĠ Ġfor Ġ( ski Res ort Ġin Ġmutable Iterator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsk i Res ort . is Fav Ġ= Ġsk i Res ort Dao . is Fav ( ski Res ort . ski Res ort Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsk i Res ort Local Models ĊĠĠĠ Ġ} Ċ } Ċ