/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠEm man uel ĠMac Ca ull Ċ Ġ* Ċ Ġ* Ġ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 Ġio . github . em ac ca ull . sweet nothing s . core . data Ċ Ċ import Ġio . github . em ac ca ull . sweet nothing s . core . S weet Nothing Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ Ċ /** Ċ Ġ* ĠRetrieves Ġa Ġ[ S weet Nothing ] Ġfrom Ġsome Ġtype Ġof Ġpersistent Ġstorage . ĠCan Ġbe Ġlocal Ġor Ġnetwork . Ċ Ġ*/ Ċ interface ĠMessage DataSource Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF etches Ġa Ġrandom Ġ[ S weet Nothing ] Ġfrom Ġstorage Ġaccording Ġthe Ġ` filter `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġdetermines Ġwhich ĠS weet Nothing s Ġto Ġexclude Ġfrom Ġthe Ġrandom Ġresult . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ` S weet Nothing ` Ġif Ġone Ġcould Ġbe Ġfound Ġfor Ġthe Ġgiven Ġ` filter `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch Random Message ( filter : ĠMessage Filter ): ĠMaybe < S weet Nothing > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF etches Ġthe Ġ[ S weet Nothing ] Ġwith Ġthe Ġgiven Ġ` id `, Ġif Ġit Ġexists . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe ĠID Ġof Ġthe Ġmessage Ġto Ġfetch . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ` S weet Nothing ` Ġif Ġone Ġcould Ġbe Ġfound Ġfor Ġthe Ġgiven Ġ` id `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch Message ( id : ĠString ): ĠMaybe < S weet Nothing > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS ear ches Ġfor Ġa Ġ[ S weet Nothing ] Ġwith Ġthe Ġmessage Ġ` exact Message `. ĠOnly Ġan Ġexact ĊĠĠĠĠ Ġ* Ġmatch Ġwill Ġreturn Ġa Ġresult . ĠIf Ġmore Ġthan Ġone Ġ` S weet Nothing ` Ġmatches , Ġthen Ġone Ġof Ġthem ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexact Message Ġthe Ġexact Ġmessage Ġto Ġmatch Ġin Ġthe Ġsearch . ĊĠĠĠĠ Ġ* Ġ@ return Ġone Ġof Ġthe Ġmatching Ġ` S weet Nothing ` Ġif Ġat Ġleast Ġone Ġcould Ġbe Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsearch ( exact Message : ĠString ): ĠMaybe < S weet Nothing > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġthe ĠS weet Nothing Ġwith Ġthe Ġgiven Ġ` id ` Ġas Ġused . ĠOnce Ġa ĠS weet Nothing Ġis Ġused , Ġit Ġcan ĊĠĠĠĠ Ġ* Ġbe Ġexcluded Ġfrom Ġsubsequent Ġqueries Ġby Ġusing Ġthe Ġappropriate Ġ[ Message Filter ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe ĠID Ġof Ġthe ĠS weet Nothing Ġto Ġmark . ĊĠĠĠĠ Ġ* Ġ@ return Ġa ĠComp letable Ġthat Ġcompletes Ġsuccessfully Ġwhen Ġmarking Ġas Ġused Ġis Ġsuccessful . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmark Used ( id : ĠString ): ĠComp letable ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠS weet Nothing Ġand Ġadds Ġit Ġto Ġstorage . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġthe Ġnew Ġsweet Ġnothing Ġtext Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnewly Ġcreated Ġ[ S weet Nothing ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate ( message : ĠString ): ĠSingle < S weet Nothing > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġnew ĠS weet Nothing s Ġand Ġadds Ġthem Ġto Ġthe Ġdata Ġstore Ġfor Ġall Ġ` messages ` Ġthat Ġdo ĊĠĠĠĠ Ġ* Ġnot Ġexist Ġin Ġthe Ġstore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmessages Ġlist Ġof Ġsweet Ġsay ings . ĠIf Ġnull Ġor Ġempty , Ġthis Ġmethod Ġis Ġa Ġno - op . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnewly Ġcreated Ġ[ S weet Nothing s ][ S weet Nothing ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate IfNot Present ( var arg Ġmessages : ĠString ): ĠSingle < List < S weet Nothing >> Ċ } Ċ