/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠP era ĠWallet , ĠL DA Ċ Ġ* Ġ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 . al gor and . android . nft . domain . use case Ċ Ċ import Ġcom . al gor and . android . nft . mapper . Request Opt In Confirmation Mapper Ċ import Ġcom . al gor and . android . nft . ui . model . Request Opt In Confirmation Preview Ċ import Ġcom . al gor and . android . utils . Data Resource Ċ import Ġcom . al gor and . android . utils . Event Ċ import Ġjavax . inject . Inject Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . flow Ċ Ċ class ĠRequest Opt In Confirmation Preview UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrequest Opt In Confirmation Mapper : ĠRequest Opt In Confirmation Mapper , ĊĠĠĠ Ġprivate Ġval Ġsend Asset Opt In Request UseCase : ĠSend Asset Opt In Request UseCase Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Initial Preview State ( receiver PublicKey : ĠString ): ĠRequest Opt In Confirmation Preview Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequest Opt In Confirmation Mapper . map To InitialState ( receiver PublicKey ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Opt In Request ( ĊĠĠĠĠĠĠĠ Ġcollect ible Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġsender PublicKey : ĠString , ĊĠĠĠĠĠĠĠ Ġprevious State : ĠRequest Opt In Confirmation Preview ĊĠĠĠ Ġ) Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( previous State . copy ( isLoading Visible Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠ Ġwith ( previous State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Asset Opt In Request UseCase . send Asset Opt In Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender PublicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver PublicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData Resource . Success Ġ-> Ġemit ( get Success State Of Opt In Request ( previous State )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData Resource . Error Ġ-> Ġemit ( getError State Of Opt In Request ( previous State , Ġit . exception )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Success State Of Opt In Request ( ĊĠĠĠĠĠĠĠ Ġpreview State : ĠRequest Opt In Confirmation Preview ĊĠĠĠ Ġ): ĠRequest Opt In Confirmation Preview Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpreview State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Visible Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Send Success Event Ġ= ĠEvent ( Unit ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Error State Of Opt In Request ( ĊĠĠĠĠĠĠĠ Ġpreview State : ĠRequest Opt In Confirmation Preview , ĊĠĠĠĠĠĠĠ Ġexception : ĠThrowable ? ĊĠĠĠ Ġ): ĠRequest Opt In Confirmation Preview Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpreview State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Visible Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Error Event Ġ= Ġif Ġ( exception ?. message . isNull Or Blank ()) Ġnull Ġelse ĠEvent ( exception ?. message . or Empty ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ