package Ġorg . wikipedia . talk Ċ Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . core . content . getSystem Service Ċ import Ġio . reactivex . rx java 3 . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ import Ġorg . wikipedia . Constants Ċ import Ġorg . wikipedia . R Ċ import Ġorg . wikipedia . auth . Account Util Ċ import Ġorg . wikipedia . csrf . Cs rf Token Client Ċ import Ġorg . wikipedia . datac lient . Service Factory Ċ import Ġorg . wikipedia . datac lient . Wiki Site Ċ import Ġorg . wikipedia . datac lient . okhttp . HttpStatus Exception Ċ import Ġorg . wikipedia . edit . Edit Ċ import Ġorg . wikipedia . page . Page Title Ċ import Ġorg . wikipedia . util . StringUtil Ċ import Ġorg . wikipedia . util . log . L Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠNotification Direct Reply Helper Ġ{ ĊĠĠĠ Ġconst Ġval ĠDIRECT _ REPLY _ EDIT _ COMMENT Ġ= Ġ"# direct reply - 1 . 0 " ĊĊĠĠĠ Ġfun Ġhandle Reply ( context : ĠContext , Ġwiki : ĠWiki Site , Ġtitle : ĠPage Title , Ġreply Text : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply To : ĠString , Ġnotification Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . notifications _ direct _ reply _ progress , Ġreply To ), ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠ ĠObservable . zip ( Cs rf Token Client ( wiki ). token . subscribe On ( Schedulers . io ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠService Factory . get Rest ( wiki ). get Talk Page ( title . prefix ed Text ). subscribe On ( Schedulers . io ()), Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , Ġresponse Ġ-> ĠPair ( token , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopic Ġ= Ġpair . second . topics !!. find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ> Ġ 0 Ġ&& Ġit . html ?. trim (). or Empty () Ġ== ĠString Util . remove Un ders cores ( title . fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( topic Ġ== Ġnull Ġ|| Ġtitle . fragment . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( Edit ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopic Depth Ġ= Ġtopic . replies ?. last OrNull ()?. depth Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠTalk Topic Activity . add Default Formatting ( reply Text , Ġtopic Depth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠService Factory . get ( wiki ). post Edit Submit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . prefix ed Text , Ġtopic . id . toString (), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDIRECT _ REPLY _ EDIT _ COMMENT , Ġif Ġ( Account Util . is LoggedIn ) Ġ" user " Ġelse Ġnull , Ġnull , Ġbody , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpair . second . revision , Ġpair . first , Ġnull , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . edit ?. edit Succeeded Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Updated Revision ( context , Ġwiki , Ġtitle , Ġit . edit . new Rev Id , Ġnotification Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfall Back To Talk Page ( context , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfall Back To Talk Page ( context , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠwaitFor Updated Revision ( context : ĠContext , Ġwiki : ĠWiki Site , Ġtitle : ĠPage Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Revision : ĠLong , Ġnotification Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠService Factory . get Rest ( wiki ). get Talk Page ( title . prefix ed Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delay ( 2 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . revision Ġ< Ġnew Revision ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . revision ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. retry ( 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġis ĠIllegalStateException ) Ġ|| Ġ( it Ġis ĠHttpStatus Exception Ġ&& Ġit . code Ġ== Ġ 4 0 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Terminate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification ( context , Ġnotification Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrevision For Undo Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . notifications _ direct _ reply _ success , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfall Back To Talk Page ( context , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfall Back To Talk Page ( context : ĠContext , Ġtitle : ĠPage Title ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . notifications _ direct _ reply _ error , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Talk Topics Activity . new Intent ( context , Ġtitle , ĠConstants . Invoke Source . NOTIFICATION )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Notification ( context : ĠContext , Ġnotification Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ<= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext . getSystem Service < Notification Manager >() ?. active Notifications ?. find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ== Ġnotification Id ĊĠĠĠĠĠĠĠ Ġ} ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= ĠNotification Compat . Builder ( context , Ġthis . notification ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Remote Input History ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibrate ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTimeout After ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager Compat . from ( context ). notify ( notification Id , Ġn ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ