package Ġnetwork . o 3 . o 3 wallet . D app Ċ Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . URL Util Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . air bnb . lott ie . Lot tie Animation View Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . github . sal om on br ys . kot son . fromJson Ċ import Ġcom . google . gson . Gson Ċ import Ġnetwork . o 3 . o 3 wallet .* Ċ import Ġorg . jetbrains . ank o . coroutines . experimental . bg Ċ import Ġorg . jetbrains . ank o . find Ċ import Ġorg . jetbrains . ank o . image Ċ import Ġorg . jetbrains . ank o . sdk 2 7 . coroutines . onClick Ċ import Ġorg . jetbrains . ank o . support . v 4 . on Ui Thread Ċ import Ġorg . jetbrains . ank o . textColor Ċ import Ġorg . json . JSONObject Ċ import Ġorg . open graph . Open Graph Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . net . URL Ċ Ċ class ĠD app Request Send Bottom Sheet Ġ: ĠRo unded Bottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġm View : ĠView ĊĠĠĠ Ġlateinit Ġvar Ġsend Request : ĠNeo D app Protocol . Send Request ĊĠĠĠ Ġlateinit Ġvar Ġd app Message : ĠD app Message ĊĊĠĠĠ Ġlateinit Ġvar Ġopen Graph Title TextView : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġopen Graph Logo View : ĠImageView ĊĠĠĠ Ġlateinit Ġvar Ġfrom Wallet Name TextView : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġto Wallet Address TextView : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġmemo TextView : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġtotal TextView : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġasset Logo ImageView : ĠImageView ĊĊĠĠĠ Ġlateinit Ġvar Ġsend Button : ĠButton ĊĠĠĠ Ġlateinit Ġvar Ġcancel Button : ĠButton ĊĊĠĠĠ Ġlateinit Ġvar Ġloading Animation View : ĠL ot tie Animation View ĊĠĠĠ Ġlateinit Ġvar Ġloading TextView : ĠTextView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġinflater . inflate ( R . layout . d app _ send _ request _ bottom _ sheet , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsend Request Ġ= ĠGson (). fromJson ( arguments !!. getString (" send _ request ") !! ) ĊĠĠĠĠĠĠĠ Ġbind Views () ĊĠĠĠĠĠĠĠ Ġset Fee Controls () ĊĠĠĠĠĠĠĠ Ġload Open Graph Details () ĊĠĠĠĠĠĠĠ Ġreturn Ġm View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Graph Title TextView Ġ= Ġm View . find ( R . id . open Graph Title View ) ĊĠĠĠĠĠĠĠ Ġopen Graph Logo View Ġ= Ġm View . find ( R . id . open Graph Logo View ) ĊĠĠĠĠĠĠĠ Ġfrom Wallet Name TextView Ġ= Ġm View . find ( R . id . from Wallet Name TextView ) ĊĠĠĠĠĠĠĠ Ġto Wallet Address TextView Ġ= Ġm View . find ( R . id . to Wallet Address TextView ) ĊĠĠĠĠĠĠĠ Ġmemo TextView Ġ= Ġm View . find ( R . id . memo TextView ) ĊĠĠĠĠĠĠĠ Ġtotal TextView Ġ= Ġm View . find ( R . id . total TextView ) ĊĠĠĠĠĠĠĠ Ġasset Logo ImageView Ġ= Ġm View . find ( R . id . asset Logo ImageView ) ĊĠĠĠĠĠĠĠ Ġval Ġimage URL Ġ= ĠString . format (" https :// cdn . o 3 . network / img / neo /% s . png ", Ġsend Request . asset . toUpperCase ()) ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). load ( image URL ). into ( asset Logo ImageView ) ĊĊĠĠĠĠĠĠĠ Ġsend Button Ġ= Ġm View . find ( R . id . accept Send Button ) ĊĠĠĠĠĠĠĠ Ġcancel Button Ġ= Ġm View . find ( R . id . reject Send Button ) ĊĊĠĠĠĠĠĠĠ Ġloading Animation View Ġ= Ġm View . find ( R . id . loading Animation View ) ĊĠĠĠĠĠĠĠ Ġloading TextView Ġ= Ġm View . find ( R . id . loading State TextView ) ĊĊĊĠĠĠĠĠĠĠ Ġfrom Wallet Name TextView . text Ġ= Ġ( activity Ġas ĠD app Container Activity ). d app ViewModel . wallet For Session Name ĊĠĠĠĠĠĠĠ Ġto Wallet Address TextView . text Ġ= Ġsend Request . to Address ĊĠĠĠĠĠĠĠ Ġmemo TextView . text Ġ= Ġsend Request . remark ĊĠĠĠĠĠĠĠ Ġtotal TextView . text Ġ= Ġsend Request . amount Ġ+ Ġ" Ġ" Ġ+ Ġsend Request . asset ĊĊĠĠĠĠĠĠĠ Ġcancel Button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġ( activity Ġas ĠD app Container Activity ). d app ViewModel . handle Send ( d app Message !! , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsend Button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sending State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġ( activity Ġas ĠD app Container Activity ). d app ViewModel . handle Send ( d app Message !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= Ġmap Of (" blockchain " Ġto Ġ" NE O ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" net " Ġto ĠPersistent Store . get Network Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" method " Ġto Ġ" send ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url " Ġto Ġarguments !!. getString (" url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" domain " Ġto ĠURL ( arguments !!. getString (" url ")). authority ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnalytics Service . D API . log D api Tx Accepted ( JSONObject ( attrs )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Sending ( success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( dialog : ĠDialog Interface ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cancel ( dialog ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠD app Container Activity ). d app ViewModel . handle Send ( d app Message !! , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Sending State () Ġ{ ĊĠĠĠĠĠĠ Ġon Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancel able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Animation View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . text Ġ= Ġresources . getString ( R . string . D APP _ processing _ transaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfinish Sending ( success : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancel able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Animation View . set Animation ( R . raw . claim _ success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Animation View . play Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . textColor Ġ= ĠContext Compat . getColor ( context !! , ĠR . color . color Gain ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . text Ġ= Ġresources . getString ( R . string . D APP _ transaction _ succeeded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Animation View . set Animation ( R . raw . task _ failed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Animation View . play Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . textColor Ġ= ĠContext Compat . getColor ( context !! , ĠR . color . color Loss ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading TextView . text Ġ= Ġresources . getString ( R . string . D APP _ transaction _ failed ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed Ġ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 8 0 0 ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Open Graph Details () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġarguments !!. getString (" url ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd app Ġ= ĠOpen Graph ( url , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġd app . getContent (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġd app . getContent (" image ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( title Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Graph Title TextView . text Ġ= Ġurl !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Graph Logo View . image Ġ= ĠContext Compat . get Drawable ( context !! , ĠR . drawable . ic _ unknown _ app ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Graph Title TextView . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( URL Util . is Network Url ( image )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( m View ). load ( image ). into ( open Graph Logo View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( m View ). load ( URL ( url !! ). protocol Ġ+ Ġ" ://" Ġ+ Ġ ĠURL ( url !! ). authority Ġ+ Ġimage ). into ( open Graph Logo View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Graph Logo View . image Ġ= ĠContext Compat . get Drawable ( context !! , ĠR . drawable . ic _ unknown _ app ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Graph Title TextView . text Ġ= Ġurl !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Fee Controls () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠcheckBox Ġ= Ġm View . find < CheckBox >( R . id . fee Checkbox ) ĊĠĠĠĠĠĠĠ Ġvar Ġfee Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfee Ġ= ĠBigDecimal ( send Request . fee ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠException ) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( fee Ġ!= ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View . find < TextView >( R . id . d app Fee Title TextView ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee . toDouble (). remove Trailing Z eros () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checkBox . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Request . fee Ġ= Ġ" 0 . 0 0 1 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd app Message . data Ġ= Ġsend Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Request . fee Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd app Message . data Ġ= Ġsend Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠD app Request Send Bottom Sheet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD app Request Send Bottom Sheet () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ