/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠPeter ĠKen ji ĠY aman aka Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . py am soft . f ridge . item Ċ Ċ import Ġandroidx . annotation . Check Result Ċ import Ġcom . py am soft . f ridge . db . Db Insert Ċ import Ġcom . py am soft . f ridge . db . entry . F ridge Entry Ċ import Ġcom . py am soft . f ridge . db . item . F ridge Item Ċ import Ġcom . py am soft . f ridge . db . item . F ridge Item Insert Dao Ċ import Ġcom . py am soft . py d roid . core . En for cer Ċ import Ġcom . py am soft . py d roid . core . Result Wrapper Ċ import Ġcom . py am soft . py d roid . util . if Not Cancellation Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ Ċ @ Singleton Ċ internal Ġclass ĠItem Create Interactor Impl Ċ @ Inject Ċ internal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġentry Gu arante e : ĠEntry Gu arante e , ĊĠĠĠ Ġprivate Ġval Ġitem Insert Dao : ĠF ridge Item Insert Dao , Ċ ) Ġ: ĠItem Create Interactor Ġ{ ĊĊĠ Ġoverride Ġsuspend Ġfun Ġupdate ( item : ĠF ridge Item ): ĠResult Wrapper < Db Insert . Insert Result < F ridge Item >> Ġ= ĊĠĠĠĠĠ Ġwith Context ( context Ġ= ĠDispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEn for cer . assert Off MainThread () ĊĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġentry Gu arante e . ensure Existing Entry ( item . entry Id (), ĠF ridge Entry . DEFAULT _ NAME ) ĊĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Gu arante e Ġentry Ġexists : Ġ$ entry ") ĊĠĠĠĠĠĠĠĠĠ ĠResult Wrapper . success ( commit Item ( item )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġe . if Not Cancellation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e , Ġ" Error Ġcommit ting Ġitem : Ġ$ item ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult Wrapper . failure ( e ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġ@ Check Result ĊĠ Ġprivate Ġsuspend Ġfun Ġcommit Item ( item : ĠF ridge Item ): ĠDb Insert . Insert Result < F ridge Item > Ġ{ ĊĠĠĠ ĠEn for cer . assert Off MainThread () ĊĠĠĠ ĠTim ber . d (" Insert Ġor Ġreplace Ġitem Ġ[ ${ item . id ()} ]: Ġ$ item ") ĊĠĠĠ Ġreturn Ġitem Insert Dao . insert ( item ) ĊĠ Ġ} Ċ } Ċ