mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-17 23:56:56 +00:00
feat(GODT-2442): add gRPC interface to send feedback.
This commit is contained in:
@ -298,6 +298,21 @@ func (bridge *Bridge) SetAddressMode(ctx context.Context, userID string, mode va
|
||||
}, bridge.usersLock)
|
||||
}
|
||||
|
||||
// SendBadEventUserFeedback sets the address mode for the given user.
|
||||
func (bridge *Bridge) SendBadEventUserFeedback(ctx context.Context, userID string, doResync bool) error {
|
||||
l := logrus.WithField("userID", userID).WithField("doResycn", doResync)
|
||||
l.Info("Passing bad event feedback to user")
|
||||
|
||||
user, ok := bridge.users[userID]
|
||||
if !ok {
|
||||
return ErrNoSuchUser
|
||||
}
|
||||
|
||||
user.SendBadEventFeedback(doResync)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (bridge *Bridge) loginUser(ctx context.Context, client *proton.Client, authUID, authRef string, keyPass []byte) (string, error) {
|
||||
apiUser, err := client.GetUser(ctx)
|
||||
if err != nil {
|
||||
|
||||
@ -85,6 +85,10 @@ func TestBridge_User_RefreshEvent(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestBridge_User_BadMessage_BadEvent(t *testing.T) {
|
||||
t.Run("Logout-Login", badMessage_badEvent)
|
||||
}
|
||||
|
||||
func badMessage_badEvent(t *testing.T) {
|
||||
withEnv(t, func(ctx context.Context, s *server.Server, netCtl *proton.NetCtl, locator bridge.Locator, storeKey []byte) {
|
||||
// Create a user.
|
||||
userID, addrID, err := s.CreateUser("user", password)
|
||||
|
||||
@ -153,7 +153,7 @@ func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, e
|
||||
|
||||
// blockEventsIMAPandSMTP()
|
||||
|
||||
if doResyc, err := bridge.getBadEventUserFeedback(); err != nil || !doResyc {
|
||||
if doResyc, err := bridge.getBadEventUserFeedback(user.ID()); err != nil || !doResyc {
|
||||
if rerr := bridge.reporter.ReportMessageWithContext("Failed to handle event: logout", reportContext); rerr != nil {
|
||||
logrus.WithError(rerr).Error("Failed to report failed event handling")
|
||||
}
|
||||
@ -179,8 +179,13 @@ func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, e
|
||||
}, bridge.usersLock)
|
||||
}
|
||||
|
||||
func (bridge *Bridge) getBadEventUserFeedback() (doResyc bool, err error) {
|
||||
return true, nil
|
||||
func (bridge *Bridge) getBadEventUserFeedback(userID string) (doResyc bool, err error) {
|
||||
user, ok := bridge.users[userID]
|
||||
if !ok {
|
||||
return false, ErrNoSuchUser
|
||||
}
|
||||
|
||||
return user.GetBadEventFeedback(), nil
|
||||
}
|
||||
|
||||
func (bridge *Bridge) handleUncategorizedErrorEvent(event events.UncategorizedEventError) {
|
||||
|
||||
Reference in New Issue
Block a user