aboutsummaryrefslogtreecommitdiff
path: root/imap.go
diff options
context:
space:
mode:
Diffstat (limited to 'imap.go')
-rw-r--r--imap.go20
1 files changed, 10 insertions, 10 deletions
diff --git a/imap.go b/imap.go
index 748d5cb..9c83fc7 100644
--- a/imap.go
+++ b/imap.go
@@ -206,23 +206,23 @@ func (msg *imapMessage) PartTree() *IMAPPartNode {
return imapPartTree(msg.BodyStructure, nil)
}
-func listMessages(conn *imapclient.Client, mboxName string) ([]imapMessage, error) {
+func listMessages(conn *imapclient.Client, mboxName string, page int) ([]imapMessage, error) {
if err := ensureMailboxSelected(conn, mboxName); err != nil {
return nil, err
}
- n := uint32(50)
-
mbox := conn.Mailbox()
- from := uint32(1)
- to := mbox.Messages
- if mbox.Messages == 0 {
+ to := int(mbox.Messages) - page*messagesPerPage
+ from := to - messagesPerPage
+ if from <= 0 {
+ from = 1
+ }
+ if to <= 0 {
return nil, nil
- } else if mbox.Messages > n {
- from = mbox.Messages - n
}
+
seqSet := new(imap.SeqSet)
- seqSet.AddRange(from, to)
+ seqSet.AddRange(uint32(from), uint32(to))
fetch := []imap.FetchItem{imap.FetchEnvelope, imap.FetchUid, imap.FetchBodyStructure}
@@ -232,7 +232,7 @@ func listMessages(conn *imapclient.Client, mboxName string) ([]imapMessage, erro
done <- conn.Fetch(seqSet, fetch, ch)
}()
- msgs := make([]imapMessage, 0, n)
+ msgs := make([]imapMessage, 0, to-from)
for msg := range ch {
msgs = append(msgs, imapMessage{msg})
}