package Ġcom . fs ck . k 9 . mail store Ċ Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroidx . core . content . content Values Of Ċ import Ġandroidx . core . database . getString OrNull Ċ import Ġcom . fs ck . k 9 . Account Ċ import Ġcom . fs ck . k 9 . Account . Folder Mode Ċ import Ġcom . fs ck . k 9 . helper . map Ċ import Ġcom . fs ck . k 9 . mail . Folder Class Ċ import Ġcom . fs ck . k 9 . mail . Folder Type Ġas ĠRemote Folder Type Ċ Ċ class ĠFolder Repository ( ĊĠĠĠ Ġprivate Ġval Ġlocal Store Provider : ĠLocal Store Provider , ĊĠĠĠ Ġprivate Ġval Ġaccount : ĠAccount Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsort For Display Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare By Descending < Display Folder > Ġ{ Ġit . folder . server Id Ġ== Ġaccount . inbox Folder Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then By Descending Ġ{ Ġit . folder . server Id Ġ== Ġaccount . out box Folder Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then By Descending Ġ{ Ġaccount . is Special Folder ( it . folder . server Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then By Descending Ġ{ Ġit . isIn Top Group Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then By ( String . CASE _ INS ENS ITIVE _ ORDER ) Ġ{ Ġit . folder . name Ġ} ĊĊĠĠĠ Ġfun Ġget Remote Folders (): ĠList < Folder > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolders Ġ= Ġlocal Store Provider . getInstance ( account ). get Personal Namespaces ( false ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfolders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . is Local Only Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠFolder ( it . database Id , Ġit . server Id , Ġit . name , Ġit . type . to Folder Type ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Display Folders ( displayMode : ĠFolder Mode ?): ĠList < Display Folder > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġlocal Store Provider . getInstance ( account ). database ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Folders Ġ= Ġdatabase . execute ( false ) Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdisplayMode Filter Ġ= ĠdisplayMode Ġ?: Ġaccount . folder DisplayMode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Display Folders ( db , ĠdisplayMode Filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdisplay Folders . sorted With ( sort For Display ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Folder Details ( folder Id : ĠLong ): ĠFolder Details ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Folder Details ( selection Ġ= Ġ" id Ġ= Ġ?", Ġselection Args Ġ= ĠarrayOf ( folder Id . toString ())). first OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Folder Details (): ĠList < Folder Details > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Folder Details ( selection Ġ= Ġnull , Ġselection Args Ġ= Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Folder Present ( folder Server Id : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġlocal Store Provider . getInstance ( account ). database ĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase . execute ( false ) Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" folders ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" server _ id Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( folder Server Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . count Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Folder Details ( selection : ĠString ?, Ġselection Args : ĠArray < String >? ): ĠList < Folder Details > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġlocal Store Provider . getInstance ( account ). database ĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase . execute ( false ) Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" folders ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" server _ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" top _ group ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integrate ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" poll _ class ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" display _ class ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" notify _ class ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" push _ class " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Id Ġ= Ġcursor . getString ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Details ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Ġ= ĠFolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcursor . getLong ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Id Ġ= Ġserver Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcursor . getString ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġfolder TypeOf ( server Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Top Group Ġ= Ġcursor . getInt ( 3 ) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Integr ate Ġ= Ġcursor . getInt ( 4 ) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Class Ġ= Ġcursor . getString OrNull ( 5 ). to Folder Class (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Class Ġ= Ġcursor . getString OrNull ( 6 ). to Folder Class (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Class Ġ= Ġcursor . getString OrNull ( 7 ). to Folder Class (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Class Ġ= Ġcursor . getString OrNull ( 8 ). to Folder Class () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Folder Details ( folder Details : ĠFolder Details ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġlocal Store Provider . getInstance ( account ). database ĊĠĠĠĠĠĠĠ Ġdatabase . execute ( false ) Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Values Ġ= Ġcontent Values Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" top _ group " Ġto Ġfolder Details . isIn Top Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integrate " Ġto Ġfolder Details . is Integr ate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" poll _ class " Ġto Ġfolder Details . sync Class . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" display _ class " Ġto Ġfolder Details . display Class . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" notify _ class " Ġto Ġfolder Details . notify Class . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" push _ class " Ġto Ġfolder Details . push Class . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update (" folders ", Ġcontent Values , Ġ" id Ġ= Ġ?", ĠarrayOf ( folder Details . folder . id . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Display Folders ( db : ĠSQLite Database , ĠdisplayMode : ĠFolder Mode ): ĠList < Display Folder > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Builder Ġ= ĠStringBuilder (""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġf . id , Ġf . server _ id , Ġf . name , Ġf . top _ group , Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ĠCOUNT ( m . id ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġmessages Ġm ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġm . folder _ id Ġ= Ġf . id ĠAND Ġm . empty Ġ= Ġ 0 ĠAND Ġm . deleted Ġ= Ġ 0 ĠAND Ġm . read Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġfolders Ġf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġadd DisplayClass Selection ( query Builder , ĠdisplayMode ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġquery Builder . toString () ĊĠĠĠĠĠĠĠ Ġdb . raw Query ( query , Ġnull ). use Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Folders Ġ= Ġmutable ListOf < Display Folder >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Id Ġ= Ġcursor . getString ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcursor . getString ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġfolder TypeOf ( server Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisIn Top Group Ġ= Ġcursor . getInt ( 3 ) Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunread Count Ġ= Ġcursor . getInt ( 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= ĠFolder ( id , Ġserver Id , Ġname , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Folders . add ( Display Folder ( folder , ĠisIn Top Group , Ġunread Count )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdisplay Folders ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd DisplayClass Selection ( query : ĠStringBuilder , ĠdisplayMode : ĠFolder Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( displayMode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Mode . ALL Ġ-> ĠUnit Ġ// ĠReturn Ġall Ġfolders ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Mode . FIRST _ CLASS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery . append (" ĠWHERE Ġf . display _ class Ġ= Ġ' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Folder Class . FIRST _ CLASS . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Mode . FIRST _ AND _ SECOND _ CLASS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery . append (" ĠWHERE Ġf . display _ class ĠIN Ġ(' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Folder Class . FIRST _ CLASS . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ', Ġ' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Folder Class . SECOND _ CLASS . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ') ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Mode . NOT _ SECOND _ CLASS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery . append (" ĠWHERE Ġf . display _ class Ġ!= Ġ' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Folder Class . SECOND _ CLASS . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFolder Mode . NONE Ġ-> Ġthrow ĠAssertionError (" Invalid Ġfolder Ġdisplay Ġmode : Ġ$ displayMode ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfolder TypeOf ( server Id : ĠString ) Ġ= Ġwhen Ġ( server Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount . inbox Folder Ġ-> ĠFolder Type . IN BOX ĊĠĠĠĠĠĠĠ Ġaccount . out box Folder Ġ-> ĠFolder Type . OUT BOX ĊĠĠĠĠĠĠĠ Ġaccount . sent Folder Ġ-> ĠFolder Type . SENT ĊĠĠĠĠĠĠĠ Ġaccount . trash Folder Ġ-> ĠFolder Type . TR ASH ĊĠĠĠĠĠĠĠ Ġaccount . draft s Folder Ġ-> ĠFolder Type . DR AFT S ĊĠĠĠĠĠĠĠ Ġaccount . archive Folder Ġ-> ĠFolder Type . ARCH IVE ĊĠĠĠĠĠĠĠ Ġaccount . spam Folder Ġ-> ĠFolder Type . SP AM ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠFolder Type . REG ULAR ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRemote Folder Type . to Folder Type (): ĠFolder Type Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . REG ULAR Ġ-> ĠFolder Type . REG ULAR ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . IN BOX Ġ-> ĠFolder Type . IN BOX ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . OUT BOX Ġ-> ĠFolder Type . REG ULAR Ġ// ĠWe Ġcurrently Ġdon 't Ġsupport Ġremote ĠOut box Ġfolders ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . DR AFT S Ġ-> ĠFolder Type . DR AFT S ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . SENT Ġ-> ĠFolder Type . SENT ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . TR ASH Ġ-> ĠFolder Type . TR ASH ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . SP AM Ġ-> ĠFolder Type . SP AM ĊĠĠĠĠĠĠĠ ĠRemote Folder Type . ARCH IVE Ġ-> ĠFolder Type . ARCH IVE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString ?. to Folder Class (): ĠFolder Class Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ?. let Ġ{ ĠFolder Class . valueOf ( this ) Ġ} Ġ?: ĠFolder Class . NO _ CLASS ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Include In Unified Inbox ( server Id : ĠString , Ġinclude In Unified Inbox : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Store Ġ= Ġlocal Store Provider . getInstance ( account ) ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġlocal Store . get Folder ( server Id ) ĊĠĠĠĠĠĠĠ Ġfolder . is Integr ate Ġ= Ġinclude In Unified Inbox ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset DisplayClass ( server Id : ĠString , Ġfolder Class : ĠFolder Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Store Ġ= Ġlocal Store Provider . getInstance ( account ) ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġlocal Store . get Folder ( server Id ) ĊĠĠĠĠĠĠĠ Ġfolder . display Class Ġ= Ġfolder Class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Sync Class ( server Id : ĠString , Ġfolder Class : ĠFolder Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Store Ġ= Ġlocal Store Provider . getInstance ( account ) ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġlocal Store . get Folder ( server Id ) ĊĠĠĠĠĠĠĠ Ġfolder . sync Class Ġ= Ġfolder Class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Class ( server Id : ĠString , Ġfolder Class : ĠFolder Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Store Ġ= Ġlocal Store Provider . getInstance ( account ) ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġlocal Store . get Folder ( server Id ) ĊĠĠĠĠĠĠĠ Ġfolder . notify Class Ġ= Ġfolder Class ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠFolder ( val Ġid : ĠLong , Ġval Ġserver Id : ĠString , Ġval Ġname : ĠString , Ġval Ġtype : ĠFolder Type ) Ċ Ċ data Ġclass ĠFolder Details ( ĊĠĠĠ Ġval Ġfolder : ĠFolder , ĊĠĠĠ Ġval ĠisIn Top Group : ĠBoolean , ĊĠĠĠ Ġval Ġis Integr ate : ĠBoolean , ĊĠĠĠ Ġval Ġsync Class : ĠFolder Class , ĊĠĠĠ Ġval Ġdisplay Class : ĠFolder Class , ĊĠĠĠ Ġval Ġnotify Class : ĠFolder Class , ĊĠĠĠ Ġval Ġpush Class : ĠFolder Class Ċ ) Ċ Ċ data Ġclass ĠDisplay Folder ( ĊĠĠĠ Ġval Ġfolder : ĠFolder , ĊĠĠĠ Ġval ĠisIn Top Group : ĠBoolean , ĊĠĠĠ Ġval Ġunread Count : ĠInt Ċ ) Ċ Ċ enum Ġclass ĠFolder Type Ġ{ ĊĠĠĠ ĠREG ULAR , ĊĠĠĠ ĠIN BOX , ĊĠĠĠ ĠOUT BOX , ĊĠĠĠ ĠS ENT , ĊĠĠĠ ĠTR ASH , ĊĠĠĠ ĠD RA FT S , ĊĠĠĠ ĠARCH IVE , ĊĠĠĠ ĠSP AM Ċ } Ċ