forked from Silverfish/proton-bridge
Report to sentry if we see some uncaught network err, but don't force the user logout. If we catch an uncaught json parser error we report the error to sentry and let the user be logged out later. Finally this patch also prints the error type in UserBadEvent sentry report to further help diagnose issues.
170 lines
3.9 KiB
Go
170 lines
3.9 KiB
Go
// Copyright (c) 2023 Proton AG
|
|
//
|
|
// This file is part of Proton Mail Bridge.
|
|
//
|
|
// Proton Mail Bridge is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Proton Mail Bridge is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
package events
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/ProtonMail/proton-bridge/v3/internal/vault"
|
|
)
|
|
|
|
// AllUsersLoaded is emitted when all users have been loaded.
|
|
type AllUsersLoaded struct {
|
|
eventBase
|
|
}
|
|
|
|
func (event AllUsersLoaded) String() string {
|
|
return "AllUsersLoaded"
|
|
}
|
|
|
|
// UserLoading is emitted when a user is being loaded.
|
|
type UserLoading struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserLoading) String() string {
|
|
return fmt.Sprintf("UserLoading: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserLoadSuccess is emitted when a user has been loaded successfully.
|
|
type UserLoadSuccess struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserLoadSuccess) String() string {
|
|
return fmt.Sprintf("UserLoadSuccess: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserLoadFail is emitted when a user has failed to load.
|
|
type UserLoadFail struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
Error error
|
|
}
|
|
|
|
func (event UserLoadFail) String() string {
|
|
return fmt.Sprintf("UserLoadFail: UserID: %s, Error: %s", event.UserID, event.Error)
|
|
}
|
|
|
|
// UserLoggedIn is emitted when a user has logged in.
|
|
type UserLoggedIn struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserLoggedIn) String() string {
|
|
return fmt.Sprintf("UserLoggedIn: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserLoggedOut is emitted when a user has logged out.
|
|
type UserLoggedOut struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserLoggedOut) String() string {
|
|
return fmt.Sprintf("UserLoggedOut: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserDeauth is emitted when a user has lost its API authentication.
|
|
type UserDeauth struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserDeauth) String() string {
|
|
return fmt.Sprintf("UserDeauth: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserBadEvent is emitted when a user cannot apply an event.
|
|
type UserBadEvent struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
Error error
|
|
}
|
|
|
|
func (event UserBadEvent) String() string {
|
|
return fmt.Sprintf("UserBadEvent: UserID: %s, Error: %s", event.UserID, event.Error)
|
|
}
|
|
|
|
// UserDeleted is emitted when a user has been deleted.
|
|
type UserDeleted struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserDeleted) String() string {
|
|
return fmt.Sprintf("UserDeleted: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserChanged is emitted when a user's data has changed (name, email, etc.).
|
|
type UserChanged struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserChanged) String() string {
|
|
return fmt.Sprintf("UserChanged: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// UserRefreshed is emitted when an API refresh was issued for a user.
|
|
type UserRefreshed struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
}
|
|
|
|
func (event UserRefreshed) String() string {
|
|
return fmt.Sprintf("UserRefreshed: UserID: %s", event.UserID)
|
|
}
|
|
|
|
// AddressModeChanged is emitted when a user's address mode has changed.
|
|
type AddressModeChanged struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
|
|
AddressMode vault.AddressMode
|
|
}
|
|
|
|
func (event AddressModeChanged) String() string {
|
|
return fmt.Sprintf("AddressModeChanged: UserID: %s, AddressMode: %s", event.UserID, event.AddressMode)
|
|
}
|
|
|
|
type UncategorizedEventError struct {
|
|
eventBase
|
|
|
|
UserID string
|
|
Error error
|
|
}
|
|
|
|
func (event UncategorizedEventError) String() string {
|
|
return fmt.Sprintf("UncategorizedEventError: UserID: %s, Source:%T, Error: %s", event.UserID, event.Error, event.Error)
|
|
}
|