package Ġcom . one gravity . bloc . sample . books Ċ Ċ import Ġcom . one gravity . bloc . Stream Ċ import Ġcom . one gravity . bloc . bloc Ċ import Ġcom . one gravity . bloc . context . Bloc Context Ċ import Ġkotlinx . coroutines . delay Ċ Ċ /** Ċ Ġ* ĠImplements Ġthe ĠBooks UseCase Ġwith Ġa Ġsingle Ġ[ Bloc ] Ġand Ġ[ Thunk ] s Ċ Ġ*/ Ċ class ĠBooks UseCase Impl Simple ( ĊĠĠĠ Ġcontext : ĠB loc Context , ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠBooks Repository , Ċ ) Ġ: ĠBooks UseCase Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġb loc Ġ= Ġb loc < Book State , ĠBook Event >( context , ĠBook State . Empty ) Ġ{ ĊĠĠĠĠĠĠĠ Ġth unk Matching < Book Event . Load > Ġ{ Ġ_, Ġaction , Ġdispatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( Book Event . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Action Ġ= Ġrepository . load Books (). to Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( next Action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġdoes Ġthe Ġsame Ġas Ġthe Ġth unk Ġabove Ċ // ĠĠĠĠĠĠĠ Ġth unk Ġ{ Ġ_, Ġaction , Ġdispatch Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠBook Event . Load ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( Book Event . Loading ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Action Ġ= Ġrepository . load Books (). to Action () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( next Action ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwithout Ġthis Ġno Ġother Ġaction Ġwould Ġreach Ġthe Ġreducer Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( action ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreduce Ġ{ Ġstate , Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBook Event . Clear Ġ-> ĠBook State . Empty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBook Event . Loading Ġ-> ĠBook State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBook Event . Load Complete Ġ-> Ġaction . result . to State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġstate : ĠStream < Book State > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġb loc ĊĊĠĠĠ Ġoverride Ġfun Ġload () Ġ{ ĊĠĠĠĠĠĠĠ Ġb loc . emit ( Book Event . Load ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġb loc . emit ( Book Event . Clear ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ