diff options
author | Simon Ser <contact@emersion.fr> | 2019-12-17 16:23:51 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-12-17 16:23:51 +0100 |
commit | 80da410c3bb1c0d8d53c02867afc0cddd2f185bd (patch) | |
tree | 1dac77ab38b6818de3acd6941a4514d2812ebe23 /plugins/base/routes.go | |
parent | 6bccdd62cec3ce20f50da12c8b4a23678746aea5 (diff) | |
download | alps-80da410c3bb1c0d8d53c02867afc0cddd2f185bd.tar.gz alps-80da410c3bb1c0d8d53c02867afc0cddd2f185bd.zip |
Implement paging for search
Diffstat (limited to 'plugins/base/routes.go')
-rw-r--r-- | plugins/base/routes.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/plugins/base/routes.go b/plugins/base/routes.go index 35e72de..c7b6609 100644 --- a/plugins/base/routes.go +++ b/plugins/base/routes.go @@ -74,18 +74,19 @@ func handleGetMailbox(ctx *koushin.Context) error { } } - query := ctx.FormValue("query") + query := ctx.QueryParam("query") var mailboxes []*imap.MailboxInfo var msgs []IMAPMessage var mbox *imap.MailboxStatus + var total int err = ctx.Session.DoIMAP(func(c *imapclient.Client) error { var err error if mailboxes, err = listMailboxes(c); err != nil { return err } if query != "" { - msgs, err = searchMessages(c, mboxName, query) + msgs, total, err = searchMessages(c, mboxName, query, page) } else { msgs, err = listMessages(c, mboxName, page) } @@ -100,8 +101,14 @@ func handleGetMailbox(ctx *koushin.Context) error { } prevPage, nextPage := -1, -1 - if query == "" { - // TODO: paging for search + if query != "" { + if page > 0 { + prevPage = page - 1 + } + if (page+1)*messagesPerPage <= total { + nextPage = page + 1 + } + } else { if page > 0 { prevPage = page - 1 } |