package Ġbr . com . ped ro ab re ude v . books . domain . use case Ċ Ċ import Ġbr . com . ped ro ab re ude v . books . domain . exception . Invalid Email Exception Ċ import Ġbr . com . ped ro ab re ude v . books . domain . exception . Invalid Password Exception Ċ import Ġbr . com . ped ro ab re ude v . books . domain . model . User Ċ import Ġbr . com . ped ro ab re ude v . books . domain . repositories . Login Repository Ċ import Ġbr . com . ped ro ab re ude v . books . domain . utils . UseCase Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . flow . Flow Ċ Ċ class ĠLogin UseCase ( ĊĠĠĠ Ġprivate Ġval Ġlogin Repository : ĠLogin Repository , ĊĠĠĠ Ġscope : ĠCor outine Scope , Ċ ) Ġ: ĠUse Case < Login UseCase . Params , ĠUser >( scope Ġ= Ġscope ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrun ( params : ĠParams ?): ĠFlow < User > Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġparams ?. email ?. isEmpty () Ġ== Ġtrue Ġ-> Ġthrow ĠInvalid Email Exception () ĊĠĠĠĠĠĠĠ Ġparams ?. password ?. isEmpty () Ġ== Ġtrue Ġ-> Ġthrow ĠInvalid Password Exception () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlogin Repository . login ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġparams ?. email Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġparams ?. password Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠParams ( ĊĠĠĠĠĠĠĠ Ġval Ġemail : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString , ĊĠĠĠ Ġ) Ċ }