Explorar el Código

base: don't use Client.Mailbox

The information returned by Client.Mailbox may be out-of-date. Instead,
retrieve the mailbox status from the server each time.

Closes: https://todo.sr.ht/~emersion/alps/80
master
Simon Ser hace 4 años
padre
commit
522454e009
No se encontró ninguna clave conocida en la base de datos para esta firma ID de clave GPG: FDE7BE0E88F5E48
Se han modificado 2 ficheros con 7 adiciones y 8 borrados
  1. +3
    -4
      plugins/base/imap.go
  2. +4
    -4
      plugins/base/routes.go

+ 3
- 4
plugins/base/imap.go Ver fichero

@@ -344,12 +344,11 @@ func (msg *IMAPMessage) HasFlag(flag string) bool {
return false return false
} }


func listMessages(conn *imapclient.Client, mboxName string, page, messagesPerPage int) ([]IMAPMessage, error) {
if err := ensureMailboxSelected(conn, mboxName); err != nil {
func listMessages(conn *imapclient.Client, mbox *MailboxStatus, page, messagesPerPage int) ([]IMAPMessage, error) {
if err := ensureMailboxSelected(conn, mbox.Name); err != nil {
return nil, err return nil, err
} }


mbox := conn.Mailbox()
to := int(mbox.Messages) - page*messagesPerPage to := int(mbox.Messages) - page*messagesPerPage
from := to - messagesPerPage + 1 from := to - messagesPerPage + 1
if from <= 0 { if from <= 0 {
@@ -372,7 +371,7 @@ func listMessages(conn *imapclient.Client, mboxName string, page, messagesPerPag


msgs := make([]IMAPMessage, 0, to-from) msgs := make([]IMAPMessage, 0, to-from)
for msg := range ch { for msg := range ch {
msgs = append(msgs, IMAPMessage{msg, mboxName})
msgs = append(msgs, IMAPMessage{msg, mbox.Name})
} }


if err := <-done; err != nil { if err := <-done; err != nil {


+ 4
- 4
plugins/base/routes.go Ver fichero

@@ -104,17 +104,17 @@ func handleGetMailbox(ctx *alps.Context) error {
if mailboxes, err = listMailboxes(c); err != nil { if mailboxes, err = listMailboxes(c); err != nil {
return err return err
} }
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
if query != "" { if query != "" {
msgs, total, err = searchMessages(c, mboxName, query, page, messagesPerPage) msgs, total, err = searchMessages(c, mboxName, query, page, messagesPerPage)
} else { } else {
msgs, err = listMessages(c, mboxName, page, messagesPerPage)
msgs, err = listMessages(c, mbox, page, messagesPerPage)
} }
if err != nil { if err != nil {
return err return err
} }
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
if mboxName == "INBOX" { if mboxName == "INBOX" {
inbox = mbox inbox = mbox
} else { } else {


Cargando…
Cancelar
Guardar