diff --git a/internal/user/events.go b/internal/user/events.go index f661e60d..42a14a12 100644 --- a/internal/user/events.go +++ b/internal/user/events.go @@ -301,11 +301,9 @@ func (user *User) handleCreateLabelEvent(_ context.Context, event proton.LabelEv }).Info("Handling label created event") if _, ok := user.apiLabels[event.Label.ID]; ok { - return fmt.Errorf("label %q already exists", event.ID) + user.apiLabels[event.Label.ID] = event.Label } - user.apiLabels[event.Label.ID] = event.Label - for _, updateCh := range user.updateCh { updateCh.Enqueue(newMailboxCreatedUpdate(imap.MailboxID(event.ID), getMailboxName(event.Label))) } @@ -328,11 +326,9 @@ func (user *User) handleUpdateLabelEvent(_ context.Context, event proton.LabelEv }).Info("Handling label updated event") if _, ok := user.apiLabels[event.Label.ID]; !ok { - return fmt.Errorf("label %q does not exist", event.ID) + user.apiLabels[event.Label.ID] = event.Label } - user.apiLabels[event.Label.ID] = event.Label - for _, updateCh := range user.updateCh { updateCh.Enqueue(imap.NewMailboxUpdated( imap.MailboxID(event.ID), @@ -356,11 +352,9 @@ func (user *User) handleDeleteLabelEvent(_ context.Context, event proton.LabelEv label, ok := user.apiLabels[event.ID] if !ok { - return fmt.Errorf("label %q does not exist", event.ID) + delete(user.apiLabels, event.ID) } - delete(user.apiLabels, event.ID) - for _, updateCh := range user.updateCh { updateCh.Enqueue(imap.NewMailboxDeleted(imap.MailboxID(event.ID))) }