package Ġcom . news blur . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . news blur . Nb Application Ċ import Ġcom . news blur . R Ċ import Ġcom . news blur . activity . Nb Activity Ċ import Ġcom . news blur . database . Blur Database Helper Ċ import Ġcom . news blur . domain .* Ċ import Ġcom . news blur . fragment . Reading Action Confirmation Fragment Ċ import Ġcom . news blur . network . API Constants Ċ import Ġcom . news blur . network . API Manager Ċ import Ġcom . news blur . service . NB Sync Service Ċ import Ġcom . news blur . service . NB Sync Receiver Ċ import Ġcom . news blur . service . NB Sync Receiver . Companion . UPDATE _ METADATA Ċ import Ġcom . news blur . service . NB Sync Receiver . Companion . UPDATE _ SO CIAL Ċ import Ġcom . news blur . service . NB Sync Receiver . Companion . UPDATE _ ST ORY Ċ import Ġjava . util .* Ċ Ċ object ĠFeed Utils Ġ{ ĊĊĠĠĠ Ġ// Ġthese Ġare Ġapp - level Ġsing letons Ġstored Ġhere Ġfor Ġconvenience . Ġhowever , Ġthey ĊĠĠĠ Ġ// Ġcannot Ġbe Ġcreated Ġl az ily Ġor Ġvia Ġstatic Ġinit , Ġthey Ġhave Ġto Ġbe Ġcreated Ġwhen ĊĠĠĠ Ġ// Ġthe Ġmain Ġapp Ġcontext Ġis Ġcreated Ġand Ġit Ġoffers Ġa Ġreference ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġdb Helper : ĠBl ur Database Helper ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġicon Loader : ĠImage Loader ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġthumbnail Loader : ĠImage Loader ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġstory Image Cache : ĠFile Cache ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġthis Ġis Ġg ross , Ġbut Ġthe Ġfeed set Ġcan 't Ġhold Ġa Ġfolder Ġtitle ĊĠĠĠ Ġ// Ġwithout Ġbeing Ġmist aken Ġfor Ġa Ġfolder Ġfeed . ĊĠĠĠ Ġ// ĠThe Ġalternative Ġis Ġto Ġpass Ġit Ġthrough Ġalong side Ġall Ġinstances ĊĠĠĠ Ġ// Ġof Ġthe Ġfeed set ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġcurrent Folder Name : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġoffer Init Context ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( db Helper Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper Ġ= ĠBl ur Database Helper ( context . application Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( icon Loader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Loader Ġ= ĠImage Loader . as Icon Loader ( context . application Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( story Image Cache Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstory Image Cache Ġ= ĠFile Cache . as Story Image Cache ( context . application Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( thumbnail Loader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Loader Ġ= ĠImage Loader . as Thumbnail Loader ( context . application Context , Ġstory Image Cache ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġtrigger Sync ( c : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNB : Ġwhen Ġour Ġmin SDK version Ġhits Ġ 2 8 , Ġit Ġcould Ġbe Ġpossible Ġto Ġstart Ġthe Ġservice Ġvia Ġthe ĠJob Scheduler ĊĠĠĠĠĠĠĠ Ġ// Ġwith Ġthe Ġset Important While Foreground () Ġflag Ġvia Ġan Ġenqueue () Ġand Ġget Ġrid Ġof Ġall Ġlegacy Ġstart Service ĊĠĠĠĠĠĠĠ Ġ// Ġcode Ġpaths ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( c , ĠNB Sync Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġc . start Service ( i ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdrop And Re create Tables () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Helper !!. drop And Re create Tables () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġprepare Reading Session ( fs : ĠFeed Set ?, Ġreset First : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reset First ) ĠNB Sync Service . reset Reading Session ( db Helper ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNB Sync Service . prepare Reading Session ( db Helper , Ġfs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġa ĠUI Ġhint ing Ġcall Ġand Ġmight Ġfail Ġif Ġthe ĠDB Ġis Ġbeing Ġreset , Ġbut Ġthat Ġis Ġfine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Story Saved ( story Hash : ĠString ?, Ġsaved : ĠBoolean , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Tags : ĠMutable List < String ?> Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( current Folder Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Tags . add ( current Folder Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Story Saved ( story Hash , Ġsaved , Ġcontext , Ġuser Tags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Story Saved ( story : ĠStory , Ġsaved : ĠBoolean , Ġcontext : ĠContext , Ġuser Tags : ĠList < String ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Story Saved ( story . story Hash , Ġsaved , Ġcontext , Ġuser Tags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Story Saved ( story Hash : ĠString ?, Ġsaved : ĠBoolean , Ġcontext : ĠContext , Ġuser Tags : ĠList < String ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġra Ġ= Ġif Ġ( saved ) ĠReading Action . save Story ( story Hash , Ġuser Tags ) Ġelse ĠReading Action . un save Story ( story Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ ST ORY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdelete Saved Search ( feed Id : ĠString ?, Ġquery : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI Manager ( context ). delete Search ( feed Id , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ Ġnews Blur Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! news Blur Response . isError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. delete Saved Search ( feed Id , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ METADATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsave Search ( feed Id : ĠString ?, Ġquery : ĠString ?, Ġcontext : ĠContext , Ġapi Manager : ĠAPI Manager ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Manager . save Search ( feed Id , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ Ġnews Blur Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! news Blur Response . isError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNB Sync Service . force Feed s Folders () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdelete Feed ( feed Id : ĠString ?, Ġfolder Name : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI Manager ( context ). delete Feed ( feed Id , Ġfolder Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġwe Ġcan 't Ġcheck Ġresult . isError () Ġbecause Ġthe Ġdelete Ġcall Ġsets Ġthe Ġ. message Ġproperty Ġon Ġall Ġcalls . Ġfind Ġa Ġbetter Ġerror Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. delete Feed ( feed Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ METADATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdelete Social Feed ( userId : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI Manager ( context ). un follow User ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġwe Ġcan 't Ġcheck Ġresult . isError () Ġbecause Ġthe Ġdelete Ġcall Ġsets Ġthe Ġ. message Ġproperty Ġon Ġall Ġcalls . Ġfind Ġa Ġbetter Ġerror Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. delete Social Feed ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ METADATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdelete Folder ( folder Name : ĠString ?, Ġin Folder : ĠString ?, Ġcontext : ĠContext , Ġapi Manager : ĠAPI Manager ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Manager . delete Folder ( folder Name , Ġin Folder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . isError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNB Sync Service . force Feed s Folders () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsync Offline St ories ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Helper !!. delete St ories () ĊĠĠĠĠĠĠĠ ĠNB Sync Service . force Feed s Folders () ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġrename Folder ( folder Name : ĠString ?, Ġnew Folder Name : ĠString ?, Ġin Folder : ĠString ?, Ġcontext : ĠContext , Ġapi Manager : ĠAPI Manager ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Manager . rename Folder ( folder Name , Ġnew Folder Name , Ġin Folder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . isError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNB Sync Service . force Feed s Folders () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmark Story Un read ( story : ĠStory , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Story Read State ( story , Ġcontext , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmark Story As Read ( story : ĠStory , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Story Read State ( story , Ġcontext , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Story Read State ( story : ĠStory , Ġcontext : ĠContext , Ġread : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġshouldn 't Ġthrow Ġerrors , Ġbut Ġcrash Ġlogs Ġsuggest Ġsomething Ġis Ġr acing Ġit Ġfor ĠDB Ġresources . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcapture Ġlogs Ġin Ġhop es Ġof Ġfinding Ġthe Ġcorre lated Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. touch Story ( story . story Hash ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Feed Utils :: class . java . name , Ġ" error Ġtouch ing Ġstory Ġstate Ġin ĠDB ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( story . read Ġ== Ġread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġtell Ġthe Ġsync Ġservice Ġwe Ġneed Ġto Ġmark Ġread ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= Ġif Ġ( read ) ĠReading Action . mark Story Read ( story . story Hash ) Ġelse ĠReading Action . mark Story Un read ( story . story Hash ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġupdate Ġunread Ġstate Ġand Ġunread Ġcounts Ġin Ġthe Ġlocal ĠDB ĊĠĠĠĠĠĠĠ Ġval Ġimpact ed Feed s Ġ= Ġdb Helper !!. set Story Read State ( story , Ġread ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ ST ORY ) ĊĊĠĠĠĠĠĠĠ ĠNB Sync Service . add Re count Candidates ( imp acted Feed s ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark Ġa Ġstory Ġ( un ) read Ġwhen Ġonly Ġthe Ġhash Ġis Ġknown . ĠThis Ġcan Ġand Ġwill Ġcause Ġa Ġbrief Ġmismatch Ġin ĊĠĠĠĠ Ġ* Ġunread Ġcounts , Ġor Ġa Ġlonger Ġmismatch Ġif Ġoffline . Ġ ĠThis Ġmethod Ġshould Ġonly Ġbe Ġused Ġfrom Ġoutside ĊĠĠĠĠ Ġ* Ġthe Ġapp , Ġsuch Ġas Ġfrom Ġa Ġnot ifi ation Ġhandler . Ġ ĠYou Ġmust Ġuse Ġset Story Read State ( Story , ĠContext , Ġboolean ) ĊĠĠĠĠ Ġ* Ġwhen Ġcalling Ġfrom Ġwithin Ġthe ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Story Read State External ( story Hash : ĠString ?, Ġcontext : ĠContext , Ġread : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= Ġif Ġ( read ) ĠReading Action . mark Story Read ( story Hash ) Ġelse ĠReading Action . mark Story Un read ( story Hash ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfeed Id Ġ= Ġinfer Feed Id ( story Hash ) ĊĠĠĠĠĠĠĠ Ġval Ġimpact ed Feed Ġ= ĠFeed Set . single Feed ( feed Id ) ĊĠĠĠĠĠĠĠ ĠNB Sync Service . add Re count Candidates ( imp acted Feed ) ĊĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġsome Ġor Ġall Ġof Ġthe Ġstories Ġin Ġa ĠFeed Set Ġas Ġread Ġfor Ġan Ġactivity , Ġhandling Ġconfirmation Ġdialog ues Ġas Ġnecessary . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmark Read ( activity : ĠNb Activity , Ġfs : ĠFeed Set , Ġolder Than : ĠLong ?, Ġnewer Than : ĠLong ?, Ġchoices R id : ĠInt , Ġfinish After : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra : ĠReading Action Ġ= Ġif Ġ( fs . is All Normal Ġ&& Ġ( older Than Ġ!= Ġnull Ġ|| Ġnewer Than Ġ!= Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġmark - all - read ĠAPI Ġdoesn 't Ġsupport Ġrange Ġbounding , Ġso Ġwe Ġneed Ġto Ġpass Ġeach Ġand Ġevery ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfeed ĠID Ġto Ġthe ĠAPI Ġinstead . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Feed Set Ġ= ĠFeed Set . folder (" all ", Ġdb Helper !!. all Active Feed s ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . mark Feed Read ( new Feed Set , Ġolder Than , Ġnewer Than ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fs . single Feed Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! fs . is Mut ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . mark Feed Read ( fs , Ġolder Than , Ġnewer Than ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġshould Ġnot Ġbe Ġpossible Ġif Ġappropriate Ġmenus Ġhave Ġbeen Ġaltered . ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( activity , Ġ" dis reg arding Ġmark - read Ġfor Ġmut ed Ġfeed .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( fs . is Folder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeed Ids Ġ= Ġfs . multiple Feed s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Active Feed Ids Ġ= Ġdb Helper !!. all Active Feed s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Feed Ids : ĠMutable Set < String > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Feed Ids . addAll ( feed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Feed Ids . retain All ( all Active Feed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Fs Ġ= ĠFeed Set . folder ( fs . folder Name , Ġactive Feed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . mark Feed Read ( filtered Fs , Ġolder Than , Ġnewer Than ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . mark Feed Read ( fs , Ġolder Than , Ġnewer Than ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġis Ġit Ġokay Ġto Ġjust Ġdo Ġthe Ġmark ? Ġotherwise Ġwe Ġwill Ġseek Ġconfirmation ĊĠĠĠĠĠĠĠ Ġvar Ġdo Immediate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġset , Ġthis Ġmessage Ġwill Ġbe Ġdisplayed Ġinstead Ġof Ġthe Ġoptions Ġto Ġactually Ġmark Ġread . Ġused Ġin ĊĠĠĠĠĠĠĠ Ġ// Ġsituations Ġwhere Ġmarking Ġall Ġread Ġis Ġalmost Ġcertainly Ġnot Ġwhat Ġthe Ġuser Ġwants Ġto Ġdo ĊĠĠĠĠĠĠĠ Ġvar Ġoptional Override Message : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( older Than Ġ!= Ġnull Ġ|| Ġnewer Than Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthis Ġis Ġa Ġrange Ġmark , Ġcheck Ġthat Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Prefs Utils . is Confirm Mark Range Read ( activity )) Ġdo Immediate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthis Ġis Ġan Ġall Ġmark , Ġcheck Ġthat Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirmation Ġ= ĠP refs Utils . get Mark All Read Confirmation ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( confirmation . feed Set Requires Confirmation ( fs )) Ġdo Immediate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmarks Ġhit Ġall Ġstories , Ġeven Ġwhen Ġfiltering Ġvia Ġsearch , Ġso Ġwarn ĊĠĠĠĠĠĠĠ Ġif Ġ( fs . search Query Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Immediate Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Override Message Ġ= Ġactivity . resources . getString ( R . string . search _ mark _ read _ warning ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( do Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Action ( ra , Ġactivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( finish After ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs . is All Normal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . getString ( R . string . all _ stories ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs . is Folder Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs . folder Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs . is Single Social Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Social Feed ( fs . single Social Feed . key )?. feed Title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Feed ( fs . single Feed )?. title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠReading Action Confirmation Fragment . newInstance ( ra , Ġtitle , Ġoptional Override Message , Ġchoices R id , Ġfinish After ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show ( activity . support FragmentManager , Ġ" dialog ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdisable Notifications ( context : ĠContext , Ġfeed : ĠFeed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Feed Notifications ( context , Ġfeed , Ġenable Ġ= Ġfalse , Ġfocus Only Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġenable Un read Notifications ( context : ĠContext , Ġfeed : ĠFeed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Feed Notifications ( context , Ġfeed , Ġenable Ġ= Ġtrue , Ġfocus Only Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġenable Focus Notifications ( context : ĠContext , Ġfeed : ĠFeed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Feed Notifications ( context , Ġfeed , Ġenable Ġ= Ġtrue , Ġfocus Only Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Feed Notifications ( context : ĠContext , Ġfeed : ĠFeed , Ġenable : ĠBoolean , Ġfocus Only : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focus Only ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed . set Notify Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed . set Notify Un read () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed . enable Android Notifications ( enable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. update Feed ( feed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . set Notify ( feed . feed Id , Ġfeed . notification Types , Ġfeed . notification Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Action ( ra , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdo Action ( ra : ĠReading Action ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( ra ) Ġ{ Ġ" Reading Action Ġmust Ġnot Ġbe Ġnull " Ġ} ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimpact Ġ= Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , Ġimpact ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġupdate Classifier ( feed Id : ĠString ?, Ġclassifier : ĠClass ifier ?, Ġfs : ĠFeed Set ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . update Intel ( feed Id , Ġclassifier , Ġfs ) ĊĠĠĠĠĠĠĠ Ġdo Action ( ra , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsend Story Url ( story : ĠStory ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( story Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ SUBJECT , Ġstory . title ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ TEXT , Ġstory . permalink ) ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent . create Chooser ( intent , Ġ" Send Ġusing ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsend Story Full ( story : ĠStory ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( story Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġbody Ġ= Ġget Story Text ( story . story Hash ) ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( body )) Ġbody Ġ= Ġget Story Content ( story . story Hash ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ SUBJECT , Ġstory . title ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ TEXT , ĠString . format ( context . resources . getString ( R . string . send _ full ), Ġstory . title , Ġstory . permalink , ĠUI Utils . from Html ( body ))) ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent . create Chooser ( intent , Ġ" Send Ġusing ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġshare Story ( story : ĠStory , Ġcomment : ĠString ?, Ġsource UserId String : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsource UserId Ġ= Ġsource UserId String ĊĠĠĠĠĠĠĠ Ġif Ġ( story . source UserId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource UserId Ġ= Ġstory . source UserId ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . share Story ( story . story Hash , Ġstory . id , Ġstory . feed Id , Ġsource UserId , Ġcomment ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL Ġor ĠUPDATE _ ST ORY ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġrename Feed ( context : ĠContext , Ġfeed Id : ĠString ?, Ġnew Feed Name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . rename Feed ( feed Id , Ġnew Feed Name ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġval Ġimpact Ġ= Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , Ġimpact ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġun share Story ( story : ĠStory , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . un share Story ( story . story Hash , Ġstory . id , Ġstory . feed Id ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL Ġor ĠUPDATE _ ST ORY ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlike Comment ( story : ĠStory , Ġcomment UserId : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . like Comment ( story . id , Ġcomment UserId , Ġstory . feed Id ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun like Comment ( story : ĠStory , Ġcomment UserId : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . un like Comment ( story . id , Ġcomment UserId , Ġstory . feed Id ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġreply To Comment ( story Id : ĠString ?, Ġfeed Id : ĠString ?, Ġcomment UserId : ĠString ?, Ġreply Text : ĠString ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . reply To Comment ( story Id , Ġfeed Id , Ġcomment UserId , Ġreply Text ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġupdate Reply ( context : ĠContext , Ġstory : ĠStory , Ġcomment UserId : ĠString ?, Ġreply Id : ĠString ?, Ġreply Text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . update Reply ( story . id , Ġstory . feed Id , Ġcomment UserId , Ġreply Id , Ġreply Text ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdelete Reply ( context : ĠContext , Ġstory : ĠStory , Ġcomment UserId : ĠString ?, Ġreply Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . delete Reply ( story . id , Ġstory . feed Id , Ġcomment UserId , Ġreply Id ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ SO CIAL ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmove Feed To Folders ( context : ĠContext , Ġfeed Id : ĠString ?, Ġto Folders : ĠSet < String ? >, Ġin Folders : ĠSet < String ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( to Folders . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Manager Ġ= ĠAPI Manager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Manager . move Feed To Folders ( feed Id , Ġto Folders , Ġin Folders ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Execute Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNB Sync Service . force Feed s Folders () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmute Feed s ( context : ĠContext , Ġfeed Ids : ĠSet < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Feed Active State ( context , Ġfeed Ids , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġun mute Feed s ( context : ĠContext , Ġfeed Ids : ĠSet < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Feed Active State ( context , Ġfeed Ids , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Feed Active State ( context : ĠContext , Ġfeed Ids : ĠSet < String >, Ġactive : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNB Scope . execute AsyncTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo In Background Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Feed s Ġ= Ġdb Helper !!. all Active Feed s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( feed Id Ġin Ġfeed Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Feed s . add ( feed Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Feed s . remove ( feed Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġra : ĠReading Action Ġ= Ġif Ġ( active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . un mute Feed s ( active Feed s , Ġfeed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReading Action . mute Feed s ( active Feed s , Ġfeed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ METADATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinst a Fetch Feed ( context : ĠContext , Ġfeed Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġra Ġ= ĠReading Action . inst a Fetch ( feed Id ) ĊĠĠĠĠĠĠĠ Ġdb Helper !!. enqueue Action ( ra ) ĊĠĠĠĠĠĠĠ Ġra . do Local ( db Helper ) ĊĠĠĠĠĠĠĠ Ġsync Update Status ( context , ĠUPDATE _ METADATA ) ĊĠĠĠĠĠĠĠ Ġtrigger Sync ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġfeed Set From Folder Name ( folder Name : ĠString ): ĠFeed Set Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Set . folder ( folder Name , Ġget Feed Ids Recursive ( folder Name )) ĊĊĠĠĠ Ġprivate Ġfun Ġget Feed Ids Recursive ( folder Name : ĠString ): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġdb Helper !!. get Folder ( folder Name ) Ġ?: Ġreturn Ġempty Set () ĊĠĠĠĠĠĠĠ Ġval Ġfeed Ids : ĠMutable Set < String > Ġ= ĠHashSet ( folder . feed Ids . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġfolder . feed Ids ) Ġfeed Ids . add ( id ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġfolder . children ) Ġfeed Ids . addAll ( get Feed Ids Recursive ( child )) ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed Ids ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Story Text ( hash : ĠString ?): ĠString ? Ġ= Ġdb Helper !!. get Story Text ( hash ) ĊĊĠĠĠ Ġfun Ġget Story Content ( hash : ĠString ?): ĠString ? Ġ= Ġdb Helper !!. get Story Content ( hash ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn fer Ġthe Ġfeed ĠID Ġfor Ġa Ġstory Ġfrom Ġthe Ġstory 's Ġhash . Ġ ĠUseful Ġfor ĠAPIs ĊĠĠĠĠ Ġ* Ġthat Ġtakes Ġa Ġfeed ĠID Ġand Ġstory ĠID Ġand Ġonly Ġthe Ġstory Ġhash Ġis Ġknown . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : Ġthis Ġhas Ġa Ġs mell Ġto Ġit . Ġcan 't Ġall ĠAPIs Ġjust Ġaccept Ġstory Ġhashes ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinfer Feed Id ( story Hash : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= ĠText Utils . split ( story Hash , Ġ": ") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( parts . size Ġ!= Ġ 2 ) Ġnull Ġelse Ġparts [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBecause Ġstory Ġobjects Ġhave Ġto Ġjoin Ġon Ġthe Ġfeeds Ġtable Ġto Ġget Ġfeed Ġmetadata , Ġthere Ġare Ġtimes ĊĠĠĠĠ Ġ* Ġwhere Ġstandalone Ġstories Ġare Ġmissing Ġthis Ġinfo Ġand Ġit Ġmust Ġbe Ġre - f etched . Ġ ĠThis Ġis Ġcost ly ĊĠĠĠĠ Ġ* Ġand Ġshould Ġbe Ġa vo ided Ġwhere Ġpossible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Feed Title ( feed Id : ĠString ?): ĠString ? Ġ= Ġget Feed ( feed Id )?. title ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Feed ( feed Id : ĠString ?): ĠFeed ? Ġ= Ġdb Helper !!. get Feed ( feed Id ) ĊĊĠĠĠ Ġfun Ġget Social Feed ( feed Id : ĠString ?): ĠSocial Feed ? Ġ= Ġdb Helper !!. getS ocial Feed ( feed Id ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Star red Feed By Tag ( feed Id : ĠString ?): ĠStar red Count ? Ġ= Ġdb Helper !!. get Star red Feed By Tag ( feed Id ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġopen Statistics ( context : ĠContext ?, Ġfeed Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠAPI Constants . build Url ( API Constants . PATH _ FEED _ STAT ISTICS Ġ+ Ġfeed Id ) ĊĠĠĠĠĠĠĠ ĠUI Utils . handle Uri ( context , ĠUri . parse ( url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsync Update Status ( context : ĠContext , Ġupdate Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Nb Application . is App Foreground ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( NB Sync Receiver . NB _ SYNC _ ACTION ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( NB Sync Receiver . NB _ SYNC _ UPDATE _ TYPE , Ġupdate Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Broadcast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }