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 @@ -181,13 +181,28 @@ func (mbox *Mailbox) selectDataLocked() *imap.SelectData {
181181 copy (permanentFlags , flags )
182182 permanentFlags = append (permanentFlags , imap .FlagWildcard )
183183
184+ // TODO: skip if IMAP4rev1 is disabled by the server, or IMAP4rev2 is
185+ // enabled by the client
186+ firstUnseenSeqNum := mbox .firstUnseenSeqNumLocked ()
187+
184188 return & imap.SelectData {
185- Flags : flags ,
186- PermanentFlags : permanentFlags ,
187- NumMessages : uint32 (len (mbox .l )),
188- UIDNext : mbox .uidNext ,
189- UIDValidity : mbox .uidValidity ,
189+ Flags : flags ,
190+ PermanentFlags : permanentFlags ,
191+ NumMessages : uint32 (len (mbox .l )),
192+ FirstUnseenSeqNum : firstUnseenSeqNum ,
193+ UIDNext : mbox .uidNext ,
194+ UIDValidity : mbox .uidValidity ,
195+ }
196+ }
197+
198+ func (mbox * Mailbox ) firstUnseenSeqNumLocked () uint32 {
199+ for i , msg := range mbox .l {
200+ seqNum := uint32 (i ) + 1
201+ if _ , ok := msg .flags [canonicalFlag (imap .FlagSeen )]; ! ok {
202+ return seqNum
203+ }
190204 }
205+ return 0
191206}
192207
193208func (mbox * Mailbox ) flagsLocked () []imap.Flag {
You can’t perform that action at this time.
0 commit comments