package Ġwin . ca . demo . my application . domain . use case . base Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . launch Ċ import Ġwin . ca . demo . my application . data . api . model . response . base . Failure Ċ import Ġwin . ca . demo . my application . data . arch . Either Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠS ud han shu ĠSing h Ġon Ġ 2 9 / 0 1 / 2 2 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase UseCase < out ĠT , Ġin ĠP > Ġ{ ĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġcall Api ( request : ĠP ?): ĠEither < Failure , ĠT > ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġscope : ĠCor outine Scope , ĊĠĠĠĠĠĠĠ Ġrequest : ĠP ?, ĊĠĠĠĠĠĠĠ Ġon Result : Ġ( Either < Failure , ĠT >) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjob Ġ= Ġscope . async Ġ{ Ġcall Api ( request ) Ġ} ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġon Result ( job . await ()) Ġ} ĊĠĠĠ Ġ} Ċ }