package Ġcom . kick starter . ui . activities Ċ Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . jak ew h art on . r xb ind ing . view . Rx View Ċ import Ġcom . jak ew h art on . r xb ind ing . widget . Rx TextView Ċ import Ġcom . kick starter . R Ċ import Ġcom . kick starter . databinding . Deprecated Comments Layout Binding Ċ import Ġcom . kick starter . libs . Activity Request Codes Ċ import Ġcom . kick starter . libs . Base Activity Ċ import Ġcom . kick starter . libs . RecyclerView Paginator Ċ import Ġcom . kick starter . libs . Swipe Refresh er Ċ import Ġcom . kick starter . libs . qual ifiers . Requires Activity ViewModel Ċ import Ġcom . kick starter . libs . rx . transformers . Transform ers Ċ import Ġcom . kick starter . libs . utils . Object Utils Ċ import Ġcom . kick starter . libs . utils . Transition Utils Ċ import Ġcom . kick starter . libs . utils . View Utils Ċ import Ġcom . kick starter . models . Project Ċ import Ġcom . kick starter . ui . Intent Key Ċ import Ġcom . kick starter . ui . adapters . Deprecated Comments Adapter Ċ import Ġcom . kick starter . ui . data . Login Reason Ċ import Ġcom . kick starter . ui . view holders . Empty Comments ViewHolder Ċ import Ġcom . kick starter . ui . view holders . Project Context ViewHolder Ċ import Ġcom . kick starter . view models . Deprecated Comments ViewModel Ċ import Ġcom . trello . rx lifecycle . Activity Event Ċ import Ġrx . Observable Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . subjects . Publish Subject Ċ Ċ @ Requires Activity ViewModel ( Deprecated Comments ViewModel . ViewModel :: class ) Ċ class ĠDeprecated Comments Activity Ġ: ĠBase Activity < Deprecated Comments ViewModel . ViewModel >(), ĠDeprecated Comments Adapter . Delegate Ġ{ ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠDeprecated Comments Adapter ( this ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView Paginator : ĠRecyclerView Paginator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Refresh er : ĠSw ipe Refresh er ĊĠĠĠ Ġprivate Ġval Ġalert Dialog Ġ= ĠPublish Subject . create < AlertDialog >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠDeprecated Comments Layout Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠDeprecated Comments Layout Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ ĠsetContentView ( view ) ĊĊĠĠĠĠĠĠĠ Ġbinding . comments RecyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġbinding . comments RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView Paginator Ġ= ĠRecyclerView Paginator ( binding . comments RecyclerView , Ġ{ ĠviewModel . inputs . next Page () Ġ}, ĠviewModel . outputs . is Fetching Comments ) ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh er Ġ= ĠSw ipe Refresh er ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġbinding . comments Swipe Refresh Layout , Ġ{ ĠviewModel . inputs . refresh () Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĠviewModel . outputs . is Fetching Comments Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcomment Body EditText Ġ= Ġalert Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit ?. findViewById < TextView >( R . id . comment _ body ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpost Comment Button Ġ= Ġalert Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit ?. findViewById < TextView >( R . id . post _ button ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcancel Button Ġ= Ġalert Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit ?. findViewById < TextView >( R . id . cancel _ button ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġcancel Button ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Map Ġ{ Ġit ?. let Ġ{ ĠRx View . click s ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĠviewModel . inputs . comment Dialog Dis missed () Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost Comment Button ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Map Ġ{ Ġit ?. let Ġ{ ĠRx View . click s ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĠviewModel . inputs . post Comment Clicked () Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomment Body EditText ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Map Ġ{ Ġit ?. let Ġ{ Ġview Ġ-> ĠRx TextView . text Changes ( view ). skip ( 1 ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġobj : ĠCharSequence Ġ-> Ġobj . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĠviewModel . inputs . comment Body Changed ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . outputs . current Comment Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Transform ers . take Pair When ( comment Body EditText )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġit . second ?. append ( it . first ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . outputs . comments Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġadapter . take Data ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . outputs . enable Post Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Transform ers . combine Latest Pair ( post Comment Button )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġset Post Button Enabled ( it . second , Ġit . first ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . outputs . comment Button Hidden () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( View Utils . set G one ( binding . comments Toolbar . comment Button )) ĊĊĠĠĠĠĠĠĠ ĠviewModel . outputs . show Comment Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . first Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġshow Comment Dialog ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Transform ers . take When ( viewModel . outputs . dismiss Comment Dialog ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġdismiss Comment Dialog ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġlifecycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Transform ers . combine Latest Pair ( alert Dialog )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . first Ġ== ĠActivity Event . DESTROY Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . second Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNB : ĠWe Ġdont Ġwant Ġto Ġbind Ġto Ġlifecycle Ġbecause Ġwe Ġwant Ġthe Ġdestroy Ġevent . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġdismiss Comment Dialog ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoast Messages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( bind To Lifecycle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( View Utils . show Toast ( this )) ĊĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . project _ context _ view )?. setOnClickListener Ġ{ Ġproject Context View Click () Ġ} ĊĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . comment _ button )?. setOnClickListener Ġ{ Ġcomment Button Clicked () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġre cyclerView Paginator . stop () ĊĠĠĠĠĠĠĠ Ġbinding . comments RecyclerView . adapter Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproject Context View Click () Ġ= Ġback () ĊĊĠĠĠ Ġprivate Ġfun Ġcomments Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin T out Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( Intent Key . LOGIN _ REASON , ĠLogin Reason . COMMENT _ FEED ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠActivity Request Codes . LOGIN _ FLOW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcomment Button Clicked () Ġ= ĠviewModel . inputs . comment Button Clicked () ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss Comment Dialog ( dialog : ĠAlertDialog ?) Ġ= Ġdialog ?. dismiss () ĊĊĠĠĠ Ġprivate Ġfun Ġshow Comment Dialog ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomment Dialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( R . layout . deprecated _ comment _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġcomment Dialog . show () ĊĠĠĠĠĠĠĠ Ġcomment Dialog . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ ALWAYS _ VISIBLE ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠToolbar ĠUI Ġactions Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName TextView Ġ= Ġcomment Dialog . findViewById < TextView >( R . id . comment _ project _ name ) ĊĠĠĠĠĠĠĠ ĠprojectName TextView ?. text Ġ= Ġproject . name () ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġcancel - click Ġregion Ġoutside Ġof Ġdialog Ġmodal . ĊĠĠĠĠĠĠĠ Ġcomment Dialog . setOn Cancel Listener Ġ{ Ġdialog Interface : ĠDialog Interface Ġ-> ĠviewModel . inputs . comment Dialog Dis missed () Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . onNext ( comment Dialog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Post Button Enabled ( post Comment Button : ĠTextView ?, Ġenabled : ĠBoolean ) Ġ= Ġpost Comment Button ?. let Ġ{ Ġit . isEnabled Ġ= Ġenabled Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġproject Context Clicked ( view Holder : ĠProject Context ViewHolder ?) Ġ= Ġback () ĊĊĠĠĠ Ġoverride Ġfun Ġempty Comments Login Clicked ( view Holder : ĠEmpty Comments ViewHolder ?) Ġ= Ġcomments Login () ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġintent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ!= ĠActivity Request Codes . LOGIN _ FLOW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . inputs . login Success () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexit Transition () Ġ= ĠTransition Utils . slide In From Left () ĊĊĠĠĠ Ġprivate Ġfun Ġtoast Messages (): ĠObservable < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel . outputs . show Post Comment Error Toast () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Object Utils . co alesce With ( getString ( R . string . social _ error _ could _ not _ post _ try _ again ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. merge With ( viewModel . outputs . show Comment Posted Toast (). map Ġ{ ĠgetString ( R . string . project _ comments _ posted ) Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ