package Ġat . m inte ch . nft maker . ui . create N ft Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġat . m inte ch . nft maker . data . Ip fs Manager Ċ import Ġat . m inte ch . nft maker . domain . GetUser Address Ċ import Ġat . m inte ch . nft maker . domain . Mint N ft Ċ import Ġat . m inte ch . nft maker . domain . Persist N ft Ċ import Ġat . m inte ch . nft maker . domain . entities . Mint Params Ċ import Ġat . m inte ch . nft maker . helper . config . IP FS _ URL Ċ import Ġat . m inte ch . nft maker . helper . config . to N ft Ċ import Ġorg . orbit m vi . orbit . Container Host Ċ import Ġorg . orbit m vi . orbit . syntax . simple . intent Ċ import Ġorg . orbit m vi . orbit . syntax . simple . reduce Ċ import Ġorg . orbit m vi . orbit . syntax . simple . post Side Effect Ċ import Ġorg . orbit m vi . orbit . view model . container Ċ import Ġjava . math . BigInteger Ċ Ċ data Ġclass ĠCreate N ft ViewModel State ( ĊĠĠĠ Ġval Ġn ft Url : ĠString Ġ= Ġ"", ĊĠĠĠ Ġval ĠfileType : ĠString Ġ= Ġ"" Ċ ) Ċ Ċ sealed Ġclass ĠCreate N ft ViewModel Side Effects Ġ{ ĊĠĠĠ Ġobject ĠLoading Ġ: ĠCreate N ft ViewModel Side Effects () ĊĠĠĠ Ġobject ĠContent Loaded Ġ: ĠCreate N ft ViewModel Side Effects () ĊĠĠĠ Ġdata Ġclass ĠShow Error ( val Ġerror : ĠString ) Ġ: ĠCreate N ft ViewModel Side Effects () Ċ } Ċ Ċ internal Ġclass ĠCreate N ft ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġip fs Manager : ĠIp fs Manager , ĊĠĠĠ Ġprivate Ġval ĠgetUser Address : ĠGetUser Address , ĊĠĠĠ Ġprivate Ġval Ġmint N ft : ĠM int N ft , ĊĠĠĠ Ġprivate Ġval Ġpersist N ft : ĠPers ist N ft Ċ ) Ġ: ĠViewModel (), ĠContainer Host < Create N ft ViewModel State , ĠCreate N ft ViewModel Side Effects > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcontainer Ġ= ĊĠĠĠĠĠĠĠ Ġcontainer < Create N ft ViewModel State , ĠCreate N ft ViewModel Side Effects >( Create N ft ViewModel State ()) ĊĊĠĠĠ Ġfun Ġupload Data ( data : ĠByteArray , ĠfileType : ĠString ) Ġ= Ġintent Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Side Effect ( Create N ft ViewModel Side Effects . Loading ) ĊĠĠĠĠĠĠĠ Ġval Ġip fs Url Ġ= ĠIP FS _ URL Ġ+ Ġip fs Manager . add File ( FILENAME , Ġdata ) ĊĠĠĠĠĠĠĠ Ġreduce Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . copy ( nft Url Ġ= Ġip fs Url , ĠfileType Ġ= ĠfileType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpost Side Effect ( Create N ft ViewModel Side Effects . Content Loaded ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmint N ft () Ġ= Ġintent Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Side Effect ( Create N ft ViewModel Side Effects . Loading ) ĊĊĠĠĠĠĠĠĠ Ġmint N ft ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM int Params ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetUser Address ( Unit ). get OrDefault ( DEFAULT _ ADDRESS ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigInteger (" 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . nft Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). fold ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpersist N ft ( state . to N ft ()). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce Ġ{ Ġstate . copy ( nft Url Ġ= Ġ"", ĠfileType Ġ= Ġ"") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpost Side Effect ( Create N ft ViewModel Side Effects . Show Error ( it . message Ġ?: ĠDEFAULT _ ERROR _ MSG )) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpost Side Effect ( Create N ft ViewModel Side Effects . Content Loaded ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFIL ENAME Ġ= Ġ" Test file " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ ADDRESS Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ ERROR _ MSG Ġ= Ġ" An Ġunknown Ġerror Ġhappened " ĊĠĠĠ Ġ} Ċ Ċ }