/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġim . vector . ri ot x . features . reactions Ċ Ċ import Ġcom . air bnb . mv rx . Mv Rx State Ċ import Ġcom . air bnb . mv rx . Mv Rx ViewModel Factory Ċ import Ġcom . air bnb . mv rx . ViewModel Context Ċ import Ġim . vector . ri ot x . core . platform . Vector ViewModel Ċ Ċ data Ġclass ĠEmoji SearchResult ViewState ( ĊĠĠĠĠĠĠĠ Ġval Ġquery : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġval Ġresults : ĠList < Emoji DataSource . Emoji Item > Ġ= Ġempty List () Ċ ) Ġ: ĠM v Rx State Ċ Ċ class ĠEmoji SearchResult ViewModel ( val ĠdataSource : ĠEmoji DataSource , ĠinitialState : ĠEmoji SearchResult ViewState ) ĊĠĠĠ Ġ: ĠVector ViewModel < Emoji SearchResult ViewState , ĠEmoji Search Action >( initialState ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( action : ĠEmoji Search Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEmoji Search Action . Update Query Ġ-> Ġupdate Query ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Query ( action : ĠEmoji Search Action . Update Query ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġaction . queryString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= ĠdataSource . raw Data ?. emo jis ?. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġit . second Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . contains ( action . queryString , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġaction . queryString . split ("\\ s ". to Regex ()). fold ( true , Ġ{ Ġprev , Ġq Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Ġ&& Ġ( it . keywords ?. any Ġ{ Ġit . contains ( q , Ġtrue ) Ġ} Ġ?: Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠM v Rx ViewModel Factory < Emoji SearchResult ViewModel , ĠEmoji SearchResult ViewState > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( viewModel Context : ĠViewModel Context , Ġstate : ĠEmoji SearchResult ViewState ): ĠEmoji SearchResult ViewModel ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġget Ġthe Ġdata Ġsource Ġfrom Ġactivity ? Ġshare Ġit Ġwith Ġother Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEmoji SearchResult ViewModel ( Emoji DataSource ( viewModel Context . activity ), Ġstate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ