package Ġcom . snow d ango . num ac . actions . app recent ly Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . snow d ango . num ac . dispatcher . Dispatcher Ċ import Ġcom . snow d ango . num ac . domain . use case . Save Recent ly App Ċ import Ġcom . snow d ango . num ac . utility . C ancellable Coroutine Scope Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠRecent ly App Database Action Creator ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcoroutine Scope : ĠCor outine Scope , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdispatcher : ĠDispatcher , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsave Recent ly App : ĠSave Recent ly App Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġexecute Update ( packageName : ĠString ){ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . Default ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Recent ly App ( packageName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute Get (){ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Recent ly App () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate Recent ly App ( packageName : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġaction State Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( val Ġresult Ġ= Ġsave Recent ly App . update Recent ly App List ( packageName )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Recent ly App . Save Recent ly App Result . Success Ġ-> Ġ ĠRecent ly App Database Action State . Success ( result . recent ly App List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Recent ly App . Save Recent ly App Result . Failed Ġ-> ĠRecent ly App Database Action State . Failed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch Recent ly ( Recent ly App Database Action ( action State )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Recent ly App (){ ĊĠĠĠĠĠĠĠ Ġval Ġaction State Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( val Ġresult Ġ= Ġsave Recent ly App . get Recent ly App List ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Recent ly App . Save Recent ly App Result . Success Ġ-> ĠRecent ly App Database Action State . Success ( result . recent ly App List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Recent ly App . Save Recent ly App Result . Failed Ġ-> ĠRecent ly App Database Action State . Failed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d (" get Recent ly ", action State . toString ()) ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch Recent ly ( Recent ly App Database Action ( action State )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}}