File tree Expand file tree Collapse file tree 1 file changed +20
-5
lines changed
Expand file tree Collapse file tree 1 file changed +20
-5
lines changed Original file line number Diff line number Diff line change @@ -185,13 +185,28 @@ func (mbox *Mailbox) selectDataLocked() *imap.SelectData {
185185 copy (permanentFlags , flags )
186186 permanentFlags = append (permanentFlags , imap .FlagWildcard )
187187
188+ // TODO: skip if IMAP4rev1 is disabled by the server, or IMAP4rev2 is
189+ // enabled by the client
190+ firstUnseenSeqNum := mbox .firstUnseenSeqNumLocked ()
191+
188192 return & imap.SelectData {
189- Flags : flags ,
190- PermanentFlags : permanentFlags ,
191- NumMessages : uint32 (len (mbox .l )),
192- UIDNext : mbox .uidNext ,
193- UIDValidity : mbox .uidValidity ,
193+ Flags : flags ,
194+ PermanentFlags : permanentFlags ,
195+ NumMessages : uint32 (len (mbox .l )),
196+ FirstUnseenSeqNum : firstUnseenSeqNum ,
197+ UIDNext : mbox .uidNext ,
198+ UIDValidity : mbox .uidValidity ,
199+ }
200+ }
201+
202+ func (mbox * Mailbox ) firstUnseenSeqNumLocked () uint32 {
203+ for i , msg := range mbox .l {
204+ seqNum := uint32 (i ) + 1
205+ if _ , ok := msg .flags [canonicalFlag (imap .FlagSeen )]; ! ok {
206+ return seqNum
207+ }
194208 }
209+ return 0
195210}
196211
197212func (mbox * Mailbox ) flagsLocked () []imap.Flag {
You can’t perform that action at this time.
0 commit comments