package Ġcom . d cr android . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . core . widget . Nested ScrollView Ċ import Ġcom . d cr android . Build Config Ċ import Ġcom . d cr android . R Ċ import Ġcom . d cr android . data . Constants Ċ import Ġcom . d cr android . data . Proposal Ċ import Ġcom . d cr android . extensions . hide Ċ import Ġcom . d cr android . extensions . show Ċ import Ġcom . d cr android . util . Utils Ċ import Ġio . not ies . mark won . Mark won Ċ import Ġio . not ies . mark won . ext . tables . Table Aware Movement Method Ċ import Ġio . not ies . mark won . ext . tables . Table Plugin Ċ import Ġio . not ies . mark won . link ify . Link ify Plugin Ċ import Ġio . not ies . mark won . movement . Movement Method Plugin Ċ import Ġkotlinx . android . synt hetic . main . activity _ proposal _ details .* Ċ import Ġkotlinx . android . synt hetic . main . info _ dialog .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġjava . util .* Ċ Ċ class ĠProposal Details Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproposal : ĠProposal ĊĠĠĠ Ġprivate Ġvar Ġdescription Loader : ĠJob ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmark won : ĠMark won ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ proposal _ details ) ĊĠĠĠĠĠĠĠ Ġmark won Ġ= ĠMark won . builder ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Plugin ( Link ify Plugin . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Plugin ( Table Plugin . create ( application Context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuse ĠTable Aware Link Movement Method Ġto Ġhandle Ġclicks Ġinside Ġtables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Plugin ( Movement Method Plugin . create ( Table Aware Movement Method . create ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġproposal Id Ġ= Ġintent . get Serializable Extra ( Constants . PRO POS AL _ ID ) Ġas ĠLong ĊĠĠĠĠĠĠĠ Ġproposal Ġ= ĠProposal . from ( multi Wallet !!. pol ite ia . get Proposal ByID Raw ( proposal Id )) ĊĠĠĠĠĠĠĠ Ġload Proposal Details () ĊĊĠĠĠĠĠĠĠ Ġopen _ proposal . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠBuild Config . Pol ite ia Host Ġ+ Ġ"/ record /" Ġ+ Ġproposal . token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . data Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshare _ proposal . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare . type Ġ= ĠgetString ( R . string . text _ pain ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ DOCUMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare . putExtra ( Intent . EXTRA _ SUBJECT , Ġproposal . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . EXTRA _ TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . Pol ite ia Host Ġ+ Ġ"/ record /" Ġ+ Ġproposal . token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( share , ĠgetString ( R . string . share _ proposal ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnested _ scroll _ view . setOn Scroll ChangeListener ( Nested ScrollView . On Scroll ChangeListener Ġ{ Ġ_, Ġ_, Ġscroll Y , Ġ_, Ġold Scroll Y Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Y Ġ> Ġold Scroll Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ bar . elevation Ġ= Ġresources . get Dimension ( R . dim en . app _ bar _ elevation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Y Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ bar . elevation Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġgo _ back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( description Loader Ġ!= Ġnull Ġ&& Ġdescription Loader !!. isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Loader ?. cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Proposal Details () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġproposal _ title . text Ġ= Ġproposal . name ĊĠĠĠĠĠĠĠ Ġproposal _ author . text Ġ= Ġproposal . username ĊĠĠĠĠĠĠĠ Ġproposal _ timestamp . text Ġ= ĠUtils . calculate Time ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 Ġ- Ġproposal . published At , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproposal _ comments . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( Locale . getDefault (), ĠgetString ( R . string . comments ), Ġproposal . num comments ) ĊĠĠĠĠĠĠĠ Ġproposal _ version . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( Locale . getDefault (), ĠgetString ( R . string . version _ number ), Ġproposal . version ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġload Ġfile Ġfrom Ġserver Ġif Ġit Ġis Ġnot Ġyet Ġloaded Ġor Ġoutdated . ĊĠĠĠĠĠĠĠ Ġif Ġ( proposal . index File !!. isNotEmpty () Ġ&& Ġproposal . index File Version Ġ== Ġproposal . version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġmarkdown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmark won . set Markdown ( proposal _ description , Ġproposal . index File !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription _ progress . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Loader Ġ= ĠGlobal Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkeep Ġtrying Ġto Ġload Ġthe Ġdescription Ġwhile Ġdisplaying Ġany Ġerrors Ġfrom Ġthe Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Wallet !!. pol ite ia . fetch Proposal Description ( proposal . token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription _ progress ?. hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġmarkdown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmark won . set Markdown ( proposal _ description , Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ description ?. text Ġ= Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġvote Ġstatus . ĊĠĠĠĠĠĠĠ Ġif Ġ( proposal . vote Status Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvote _ summary . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġyes _ votes . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . yes _ votes _ percent , Ġproposal . yes Votes , Ġproposal . yes Percentage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno _ votes . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . no _ votes _ percent , Ġproposal . no Votes , Ġproposal . no Percentage ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . max Ġ= Ġproposal . total Votes ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . progress Ġ= Ġproposal . yes Votes ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . secondary Progress Ġ= Ġproposal . total Votes ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġproposal Ġstatus . ĊĠĠĠĠĠĠĠ Ġif Ġ( proposal . status Ġ== Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bg _ light _ orange _ corners _ 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ ab and oned ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proposal . vote Status Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ invalid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proposal . vote Status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . orange _ bg _ corners _ 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ not _ authorized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proposal . vote Status Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ app _ button _ bg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ authorized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proposal . vote Status Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ app _ button _ bg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ vote _ started ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proposal . vote Status Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proposal . approved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bg _ dark _ green _ corners _ 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ approved ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . orange _ bg _ corners _ 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ rejected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proposal . vote Status Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . background Ġ= ĠAppCompat Resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Proposal Details Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . orange _ bg _ corners _ 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ status . text Ġ= ĠgetString ( R . string . status _ non _ existent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }