package Ġba ish u ai . github . io . sms forward . ui Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . preference . CheckBox Preference Ċ import Ġandroid . support . v 7 . preference . Preference Ċ import Ġandroid . support . v 7 . preference . Preference Fragment Compat Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġba ish u ai . github . io . sms forward . I App Ċ import Ġba ish u ai . github . io . sms forward . R Ċ import Ġba ish u ai . github . io . sms forward . databinding . Dialog Token Binding Ċ import Ġba ish u ai . github . io . sms forward . forward . Forward Repo Api Ċ import Ġba ish u ai . github . io . sms forward . forward . direct sms . Direct Sms Repo Ċ import Ġba ish u ai . github . io . sms forward . forward . fe ige . Fe ige Repo Ċ import Ġba ish u ai . github . io . sms forward . forward . slack . Slack Repo Ċ import Ġba ish u ai . github . io . sms forward . service . Forward Service Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġb ai Ġon Ġ 1 7 - 6 - 1 7 . Ċ Ġ*/ Ċ Ċ class ĠP refs Fragment Ġ: ĠPreference Fragment Compat () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġthe Ġpreferences Ġfrom Ġan ĠXML Ġresource ĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . preferences , Ġroot Key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠMainActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). clear Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġtodo Ġ, Ġimplement Ġsms ĊĠĠĠĠĠĠĠ Ġfind Preference ( getString ( R . string . direct _ sms _ checkbox _ preference )) ?. isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Preference Tree Click ( preference : ĠPreference ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d ( preference . key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( preference Ġis ĠCheckBox Preference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( preference . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġlayout Ġinflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Dialog Token Binding >( activity . layout Inflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . dialog _ token , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Binding ( binding , Ġpreference . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInf late Ġand Ġset Ġthe Ġlayout Ġfor Ġthe Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPass Ġnull Ġas Ġthe Ġparent Ġview Ġbecause Ġits Ġgoing Ġin Ġthe Ġdialog Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( binding . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . confirm , Ġ{ Ġdialog , Ġ_ Ġ-> ĠonClick ( dialog , Ġbinding , Ġpreference ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel , Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create (). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Repos () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue Ġ// super . on Preference Tree Click ( preference ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Repos () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Intent Ġ= ĠIntent ( activity , ĠForward Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġservice Intent . action Ġ= ĠUPDATE _ RE POS ĊĠĠĠĠĠĠĠ Ġcontext . start Service ( service Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick ( dialog : ĠDialog Interface , Ġbinding : ĠDialog Token Binding , Ġpreference : ĠCheckBox Preference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= ĠProgress Dialog . show ( context , Ġ" check Ġtoken ", Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġbinding . channel . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġbinding . token . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġrepo : ĠForward Repo Api Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( preference . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . slack _ checkbox _ preference ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Repo ( context , ĠI App [ context ]. application Component . forward Comp on em t (). slack Api (), Ġtoken , Ġchannel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . fe ige _ checkbox _ preference ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFe ige Repo ( context , ĠI App [ context ]. application Component . forward Comp on em t (). fe ige Api (), Ġtoken , Ġchannel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirect Sms Repo ( context , Ġchannel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepo . check Token And Save () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġprogress . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠgetString ( R . string . un valid _ config ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Repos () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġsetup Binding ( binding : ĠDialog Token Binding , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . slack _ checkbox _ preference ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . token . setText ( shared Preferences . getString ( Slack Repo . SL ACK _ TOKEN , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . token . hint Ġ= ĠgetString ( R . string . slack _ token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . channel . setText ( shared Preferences . getString ( Slack Repo . SL ACK _ CHANNEL , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . channel . hint Ġ= ĠgetString ( R . string . slack _ channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . fe ige _ checkbox _ preference ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . token . setText ( shared Preferences . getString ( Fe ige Repo . FE IG E _ TOKEN , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . token . hint Ġ= ĠgetString ( R . string . fe ige _ secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . channel . setText ( shared Preferences . getString ( Fe ige Repo . FE IG E _ UID , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . channel . hint Ġ= ĠgetString ( R . string . fe ige _ uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . direct _ sms _ checkbox _ preference ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . channel . hint Ġ= ĠgetString ( R . string . phone _ number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . token . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠUPDATE _ RE POS Ġ= Ġthis :: class . java . canonical Name Ġ+ Ġ" UPDATE _ RE POS " ĊĠĠĠ Ġ} Ċ }