/* Ċ Ġ* Ġ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 . R Ċ import Ġcom . al gor and . android . models . Account Ċ import Ġcom . al gor and . android . models . Base Account Address Ċ import Ġcom . al gor and . android . models . Signed Transaction Detail Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Detail Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Media . Gif Collect ible Media Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Media . Image Collect ible Media Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Media . No Media Collect ible Media Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Media . Unsupported Collect ible Media Ċ import Ġcom . al gor and . android . nft . domain . model . Base Collect ible Media . Video Collect ible Media Ċ import Ġcom . al gor and . android . nft . mapper . Collect ible Detail Mapper Ċ import Ġcom . al gor and . android . nft . mapper . Collect ible Detail Preview Mapper Ċ import Ġcom . al gor and . android . nft . mapper . Collect ible Media Item Mapper Ċ import Ġcom . al gor and . android . nft . ui . model . Base Collect ible Media Item Ċ import Ġcom . al gor and . android . nft . ui . model . Collect ible Detail Preview Ċ import Ġcom . al gor and . android . nft . utils . Collect ible Utils Ċ import Ġcom . al gor and . android . use case . Account Address UseCase Ċ import Ġcom . al gor and . android . use case . Account Asset Removal UseCase Ċ import Ġcom . al gor and . android . use case . Account Detail UseCase Ċ import Ġcom . al gor and . android . use case . Send Signed Transaction UseCase Ċ import Ġcom . al gor and . android . utils . Event Ċ import Ġjavax . inject . Inject Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . flow . map Ċ Ċ open Ġclass ĠCollect ible Detail Preview UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġaccount Detail UseCase : ĠAccount Detail UseCase , ĊĠĠĠ Ġprivate Ġval Ġcollect ible Detail Mapper : ĠCollect ible Detail Mapper , ĊĠĠĠ Ġprivate Ġval Ġcollect ible Detail Preview Mapper : ĠCollect ible Detail Preview Mapper , ĊĠĠĠ Ġprivate Ġval Ġcollect ible Utils : ĠCollect ible Utils , ĊĠĠĠ Ġprivate Ġval Ġcollect ible Detail UseCase : ĠGet Collect ible Detail UseCase , ĊĠĠĠ Ġprivate Ġval Ġcollect ible Media Item Mapper : ĠCollect ible Media Item Mapper , ĊĠĠĠ Ġprivate Ġval Ġsend Signed Transaction UseCase : ĠSend Signed Transaction UseCase , ĊĠĠĠ Ġprivate Ġval Ġaccount Asset Removal UseCase : ĠAccount Asset Removal UseCase , ĊĠĠĠ Ġprivate Ġval Ġaccount Address UseCase : ĠAccount Address UseCase Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget Collect able Detail Preview Flow ( collect ible Asset Id : ĠLong , ĠpublicKey : ĠString ) Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( collect ible Detail Preview Mapper . map To Loading ()) ĊĠĠĠĠĠĠĠ Ġval Ġaccount Detail List Ġ= Ġaccount Detail UseCase . get Cached Account Details () ĊĠĠĠĠĠĠĠ Ġval Ġowner Account Ġ= Ġcollect ible Utils ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Collect ible OwnerAccount OrNull ( account Detail List , Ġcollect ible Asset Id , ĠpublicKey ) ĊĠĠĠĠĠĠĠ Ġval Ġis Hold ing By Watch Account Ġ= Ġowner Account ?. type Ġ== ĠAccount . Type . WATCH ĊĠĠĠĠĠĠĠ Ġval Ġis Owned By The User Ġ= Ġcollect ible Utils . is Collect ible Owned By The User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Detail UseCase . get Cached Account Detail ( publicKey ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Asset Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcollect ible Detail UseCase . get Collect ible Detail ( collect ible Asset Id ). collect Ġ{ Ġcollect ible Detail Resource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Resource . use Sus pended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġbase Collect ible Detail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollect ible Detail Preview Ġ= Ġon Collect ible Detail F etched Successfully ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Collect ible Detail Ġ= Ġbase Collect ible Detail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Owned By The User Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Ġ= Ġowner Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account Ġ= Ġis Hold ing By Watch Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account PublicKey Ġ= ĠpublicKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( collect ible Detail Preview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠShow Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsend Signed Transaction ( ĊĠĠĠĠĠĠĠ Ġsigned Transaction Detail : ĠSigned Transaction Detail . Asset Operation , ĊĠĠĠĠĠĠĠ Ġprevious State : ĠCollect ible Detail Preview ĊĠĠĠ Ġ) Ġ= Ġflow < Collect ible Detail Preview > Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Signed Transaction UseCase . send Signed Transaction ( signed Transaction Detail ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . use Sus pended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Asset Removal UseCase . add Asset Deletion To Account Cache ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġsigned Transaction Detail . account Cache Data . account . address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Id Ġ= Ġsigned Transaction Detail . asset Information . asset Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( previous State . copy ( opt Out Success Event Ġ= ĠEvent ( Unit ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġit . exception ?. message . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( previous State . copy ( isLoading Visible Ġ= Ġfalse , Ġglobal Error Event Ġ= ĠEvent ( errorMessage ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Loading Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( previous State . copy ( isLoading Visible Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. collect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Collect ible Detail F etched Successfully ( ĊĠĠĠĠĠĠĠ Ġbase Collect ible Detail : ĠBase Collect ible Detail , ĊĠĠĠĠĠĠĠ Ġis Owned By The User : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġowner Account PublicKey : ĠString , ĊĠĠĠĠĠĠĠ Ġowner Account : ĠAccount ?, ĊĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account : ĠBoolean ĊĠĠĠ Ġ): ĠCollect ible Detail Preview Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 4 . 0 3 . 2 0 2 2 ĠIs Ġerror Ġdisplay Ġtext Ġcorrect ? ĊĠĠĠĠĠĠĠ Ġval Ġerror Display Text Ġ= Ġbase Collect ible Detail . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbase Collect ible Detail . fullName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbase Collect ible Detail . short Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbase Collect ible Detail . asset Id . toString () ĊĠĠĠĠĠĠĠ Ġval Ġis N ft Explorer Visible Ġ= Ġ! base Collect ible Detail . nft Explorer Url . isNull Or Blank () ĊĠĠĠĠĠĠĠ Ġval Ġowner Account Address Ġ= Ġaccount Address UseCase . create Account Address ( owner Account PublicKey ) ĊĠĠĠĠĠĠĠ Ġval Ġcreator Account Address Ġ= Ġget Creator Account Address ( base Collect ible Detail . asset Creator ?. publicKey ) ĊĠĠĠĠĠĠĠ Ġval Ġcollect ible Detail Ġ= Ġwhen Ġ( base Collect ible Detail ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase Collect ible Detail . Image Collect ible Detail Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Mapper . map To Collect ible Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Collect ible Detail Ġ= Ġbase Collect ible Detail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Owned By The User Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Address Ġ= Ġowner Account Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Display Text Ġ= Ġerror Display Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account Ġ= Ġis Hold ing By Watch Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis N ft Explorer Visible Ġ= Ġis N ft Explorer Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Type Ġ= Ġowner Account ?. type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Address Ġ= Ġcreator Account Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase Collect ible Detail . Video Collect ible Detail Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Mapper . map To Collect ible Video ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Collect ible Detail Ġ= Ġbase Collect ible Detail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Owned By The User Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Address Ġ= Ġowner Account Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Display Text Ġ= Ġerror Display Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account Ġ= Ġis Hold ing By Watch Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis N ft Explorer Visible Ġ= Ġis N ft Explorer Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Type Ġ= Ġowner Account ?. type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Address Ġ= Ġcreator Account Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase Collect ible Detail . Mixed Collect ible Detail Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Mapper . map To Collect ible Mixed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmixed Collect ible Detail Ġ= Ġbase Collect ible Detail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Owned By The User Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Address Ġ= Ġowner Account Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account Ġ= Ġis Hold ing By Watch Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis N ft Explorer Visible Ġ= Ġis N ft Explorer Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Med ias Ġ= Ġmap To Mixed Media Item ( base Collect ible Detail , Ġis Owned By The User , Ġerror Display Text ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Type Ġ= Ġowner Account ?. type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Address Ġ= Ġcreator Account Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase Collect ible Detail . NotSupported Collect ible Detail Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Mapper . map To Unsupported Collect ible ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunsupported Collect ible Ġ= Ġbase Collect ible Detail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Owned By The User Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Address Ġ= Ġowner Account Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Display Text Ġ= Ġerror Display Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Hold ing By Watch Account Ġ= Ġis Hold ing By Watch Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarning Text Res Ġ= ĠR . string . we _ don _ t _ support , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis N ft Explorer Visible Ġ= Ġis N ft Explorer Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Account Type Ġ= Ġowner Account ?. type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Address Ġ= Ġcreator Account Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcollect ible Detail Preview Mapper . map To ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Visible Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Send Button Visible Ġ= Ġis Owned By The User , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Visible Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ible Detail Ġ= Ġcollect ible Detail ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap To Mixed Media Item ( ĊĠĠĠĠĠĠĠ Ġcollect ible Detail : ĠBase Collect ible Detail , ĊĠĠĠĠĠĠĠ Ġis Owned By The User : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġerror Display Text : ĠString ĊĠĠĠ Ġ): ĠList < Base Collect ible Media Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollect ible Detail . collect ible Med ias ?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( collect ible Detail ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( collect ible Media Item Mapper ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImage Collect ible Media Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap To Image Collect ible Media Item ( asset Id , Ġis Owned By The User , Ġerror Display Text , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnsupported Collect ible Media Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap To Unsupported Collect ible Media Item ( asset Id , Ġis Owned By The User , Ġerror Display Text , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVideo Collect ible Media Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreview Url Ġ= Ġ( it . preview Url Ġ?: Ġit . download Url ). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap To Video Collect ible Media Item ( asset Id , Ġis Owned By The User , Ġerror Display Text , Ġit , Ġpreview Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG if Collect ible Media Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap To Gif Collect ible Media Item ( asset Id , Ġis Owned By The User , Ġerror Display Text , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNo Media Collect ible Media Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap To No Media Collect ible Media Item ( asset Id , Ġis Owned By The User , Ġerror Display Text , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. or Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Sending Collect ible Is Fraction al ( ĊĠĠĠĠĠĠĠ Ġprevious State : ĠCollect ible Detail Preview ? ĊĠĠĠ Ġ) Ġ= Ġflow < Collect ible Detail Preview ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollect ible Detail Ġ= Ġprevious State ?. collect ible Detail ĊĠĠĠĠĠĠĠ Ġval Ġis Collect ible Pure Ġ= Ġcollect ible Detail ?. is Pure Ġ?: Ġreturn @ flow ĊĠĠĠĠĠĠĠ Ġemit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfraction al Collect ible Send Event Ġ= Ġif Ġ( is Collect ible Pure . not ()) ĠEvent ( Unit ) Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpure Collect ible Send Event Ġ= Ġif Ġ( is Collect ible Pure ) ĠEvent ( Unit ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Creator Account Address ( publicKey : ĠString ?): ĠBase Account Address . Account Address ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( publicKey Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġaccount Address UseCase . create Account Address ( publicKey ) ĊĠĠĠ Ġ} Ċ } Ċ