GODT-2223: Handle attempting to fetch a message that was just deleted

This commit is contained in:
James Houlahan
2023-01-17 17:17:07 +01:00
committed by Leander Beernaert
parent b63029054d
commit d68014ec7b

View File

@ -19,7 +19,9 @@ package user
import (
"context"
"errors"
"fmt"
"net/http"
"github.com/ProtonMail/gluon/imap"
"github.com/ProtonMail/gluon/queue"
@ -505,6 +507,11 @@ func (user *User) handleMessageEvents(ctx context.Context, messageEvents []proto
func (user *User) handleCreateMessageEvent(ctx context.Context, event proton.MessageEvent) ([]imap.Update, error) {
full, err := user.client.GetFullMessage(ctx, event.Message.ID)
if err != nil {
// If the message is not found, it means that it has been deleted before we could fetch it.
if apiErr := new(proton.APIError); errors.As(err, &apiErr) && apiErr.Status == http.StatusUnprocessableEntity {
return nil, nil
}
return nil, fmt.Errorf("failed to get full message: %w", err)
}
@ -596,6 +603,11 @@ func (user *User) handleUpdateDraftEvent(ctx context.Context, event proton.Messa
full, err := user.client.GetFullMessage(ctx, event.Message.ID)
if err != nil {
// If the message is not found, it means that it has been deleted before we could fetch it.
if apiErr := new(proton.APIError); errors.As(err, &apiErr) && apiErr.Status == http.StatusUnprocessableEntity {
return nil, nil
}
return nil, fmt.Errorf("failed to get full draft: %w", err)
}