package Ġcom . fs ck . k 9 . backend . imap Ċ Ċ import Ġcom . fs ck . k 9 . mail . Body Factory Ċ import Ġcom . fs ck . k 9 . mail . Fetch Profile Ċ import Ġcom . fs ck . k 9 . mail . Message Ċ import Ġcom . fs ck . k 9 . mail . Part Ċ import Ġcom . fs ck . k 9 . mail . store . imap . I map Folder Ċ import Ġcom . fs ck . k 9 . mail . store . imap . I map Message Ċ import Ġcom . fs ck . k 9 . mail . store . imap . I map Store Ċ Ċ internal Ġclass ĠCommand Fetch Message ( private Ġval Ġim ap Store : ĠI map Store ) Ġ{ ĊĊĠĠĠ Ġfun Ġfetch Message ( ĊĠĠĠĠĠĠĠ Ġfolder Server Id : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage Server Id : ĠString , ĊĠĠĠĠĠĠĠ Ġfetch Profile : ĠFetch Profile , ĊĠĠĠĠĠĠĠ Ġmax Download Size : ĠInt ĊĠĠĠ Ġ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġim ap Store . get Folder ( folder Server Id ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . open ( I map Folder . OPEN _ MODE _ RO ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġfolder . getMessage ( message Server Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfun Ġfact : ĠI map Folder . fetch Ġcan 't Ġhandle Ġgetting ĠSTR UCT URE Ġat Ġsame Ġtime Ġas Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fetch Profile . contains ( Fetch Profile . Item . STRUCTURE ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Profile . contains ( Fetch Profile . Item . EN VELO PE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Fetch Profile Ġ= Ġfetch Profile . without ( Fetch Profile . Item . STRUCTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstructure Fetch Profile Ġ= ĠFetch Profile (). apply Ġ{ Ġadd ( Fetch Profile . Item . STRUCTURE ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Message ( folder , Ġmessage , Ġheader Fetch Profile , Ġmax Download Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Message ( folder , Ġmessage , Ġstructure Fetch Profile , Ġmax Download Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Message ( folder , Ġmessage , Ġfetch Profile , Ġmax Download Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Part ( folder Server Id : ĠString , Ġmessage Server Id : ĠString , Ġpart : ĠPart , Ġbody Factory : ĠBody Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġim ap Store . get Folder ( folder Server Id ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . open ( I map Folder . OPEN _ MODE _ RW ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġfolder . getMessage ( message Server Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . fetch Part ( message , Ġpart , Ġnull , Ġbody Factory , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Message ( ĊĠĠĠĠĠĠĠ Ġremote Folder : ĠI map Folder , ĊĠĠĠĠĠĠĠ Ġmessage : ĠI map Message , ĊĠĠĠĠĠĠĠ Ġfetch Profile : ĠFetch Profile , ĊĠĠĠĠĠĠĠ Ġmax Download Size : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremote Folder . fetch ( listOf ( message ), Ġfetch Profile , Ġnull , Ġmax Download Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFetch Profile . without ( item : ĠFetch Profile . Item ) Ġ= ĠFetch Profile (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis @ without . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġitem ) Ġadd ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ