package Ġcom . bo gd an . co def or ces watcher . features . problems Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . bo gd an . co def or ces watcher . R Ċ import Ġio . xor um . co def or ces watcher . features . problems . redux . requests . Problems Requests Ċ import Ġio . xor um . co def or ces watcher . features . problems . redux . states . Problems State Ċ import Ġcom . bo gd an . co def or ces watcher . util . Analytics Ċ import Ġcom . bo gd an . co def or ces watcher . util . Refresh Ċ import Ġkotlinx . android . synt hetic . main . fragment _ problems .* Ċ import Ġio . xor um . co def or ces watcher . redux . store Ċ import Ġtw . geo things . re kotlin . Store Subscriber Ċ Ċ class ĠPro blems Fragment Ġ: ĠFragment (), ĠStore Subscriber < Problems State >, ĠSw ipe Refresh Layout . On Refresh Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproblems Adapter : ĠPro blems Adapter ĊĠĠĠ Ġprivate Ġvar Ġsearch View : ĠSearch View ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= Ġinflater . inflate ( R . layout . fragment _ problems , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater ?. inflate ( R . menu . menu _ search , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu ?. find Item ( R . id . action _ search ) ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġsearch Item ?. action View Ġas ? ĠSearch View ĊĊĠĠĠĠĠĠĠ Ġadjust Search View Hint () ĊĊĠĠĠĠĠĠĠ Ġsearch View ?. ime Options Ġ= ĠEditor Info . IME _ ACTION _ DONE ĊĠĠĠĠĠĠĠ Ġsearch View ?. setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?) Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblems Adapter . filter . filter ( new Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadjust Search View Hint () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Search Ġ= Ġsearch View ?. findViewById < View >( android x . appcompat . R . id . search _ src _ text ) Ġas ĠEditText ? ĊĠĠĠĠĠĠĠ Ġtext Search ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġresources . getString ( R . string . search _ for _ problems ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Hint TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener ( this ) ĊĠĠĠĠĠĠĠ Ġproblems Adapter Ġ= ĠPro blems Adapter ( require Context ()) Ġ{ ĠstartActivity ( Problem Activity . new Intent ( require Context (), Ġit . identify ())) Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġproblems Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . dispatch ( Problems Requests . Fetch Problems ( true )) ĊĠĠĠĠĠĠĠ ĠAnalytics . log Refresh ing Data ( Refresh . ACTION S ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġstore . subscribe ( this ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . skip Repe ats Ġ{ Ġold State , ĠnewState Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold State . problems . status Ġ== ĠnewState . problems . status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold State . problems . is F avour ite Ġ== ĠnewState . problems . is F avour ite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. select Ġ{ Ġit . problems Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġstore . unsubscribe ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠnewState ( state : ĠPro blems State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġ( state . status Ġ== ĠPro blems State . Status . PENDING ) ĊĠĠĠĠĠĠĠ Ġproblems Adapter . set Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . is F avour ite ) Ġstate . problems . filter Ġ{ Ġit . is F avour ite Ġ}. sorted By Descending Ġ{ Ġit . contest Time Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġstate . problems . sorted By Descending Ġ{ Ġit . contest Time Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. query ?. toString (). or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . is F avour ite ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ