mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
WIP: updates WIP: cache on disk and autostart. WIP: mail, keychain and more. WIP: updated grpc version in go mod file. WIP: user list. WIP: RPC service placeholder WIP: test C++ RPC client skeleton. Other: missing license script update. WIP: use Qt test framework. WIP: test for app and login calls. WIP: test for update & cache on disk calls. WIP: tests for mail settings calls. WIP: all client tests. WIP: linter fixes. WIP: fix missing license link. WIP: update dependency_license script for gRPC and protobuf. WIP: removed unused file. WIP: app & login event streaming tests. WIP: update event stream tests. WIP: completed event streaming tests. GODT-1554: qt C++ frontend skeleton. WIP: C++ backend declaration. wip: started drafting user model. WIP: users. not functional. WIP: invokable methods WIP: Exception class + backend 'injection' into QML. WIP: switch to VCPKG to ease multi-arch compilation, C++ RPC client skeleton. WIP: Renaming and reorganisation WIP:introduced new 'grpc' go frontend. WIP: Worker & Oveerseer for thread management. WIP: added log to C++ app. WIP: event stream architecture on Go side. WIP: event parsing and streamer stopping. WIP: Moved grpc to frontend subfolder + use vcpkg for gRPC and protobuf. WIP: windows building ok WIP: wired a few messages WIP: more wiring. WIP: Fixed imports after rebase on top of devel. WIP: wired some bool and string properties. WIP: more properties. WIP: wired cache on disk stuff WIP: connect event watcher. WIP: login WIP: fix showSplashScreen WIP: Wired login calls. WIP: user list. WIP: Refactored main(). WIP: User retrieval . WIP: no shared pointer in user model. WIP: fixed user count. WIP: cached goos. WIP: Wired autostart WIP: beta channel toggle wired. WIP: User removal WIP: wired theme WIP: implemented configure apple mail. WIP: split mode. WIP: fixed user updates. WIP: fixed Quit from tray icon WIP: wired CurrentEmailClient WIP: wired UseSSLForSMTP WIP: wired change ports . WIP: wired DoH. . WIP: wired keychain calls. WIP: wired autoupdate option. WIP: QML Backend clean-up. WIP: cleanup. WIP: moved user related files in subfolder. . WIP: User are managed using smart pointers. WIP: cleanup. WIP: more cleanup. WIP: mail events forwarding WIP: code inspection tweaks from CLion. WIP: moved QML, cleanup, and missing copyright notices. WIP: Backend is not QMLBackend. Other: fixed issues reported by Leander. [skip ci]
200 lines
8.3 KiB
Go
200 lines
8.3 KiB
Go
// Copyright (c) 2022 Proton AG
|
|
//
|
|
// This file is part of Proton Mail Bridge.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 grpc
|
|
|
|
func NewInternetStatusEvent(connected bool) *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_InternetStatus{InternetStatus: &InternetStatusEvent{Connected: connected}}})
|
|
}
|
|
|
|
func NewToggleAutostartFinishedEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ToggleAutostartFinished{ToggleAutostartFinished: &ToggleAutostartFinishedEvent{}}})
|
|
}
|
|
|
|
func NewResetFinishedEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ResetFinished{ResetFinished: &ResetFinishedEvent{}}})
|
|
}
|
|
|
|
func NewReportBugFinishedEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ReportBugFinished{ReportBugFinished: &ReportBugFinishedEvent{}}})
|
|
}
|
|
|
|
func NewReportBugSuccessEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ReportBugSuccess{ReportBugSuccess: &ReportBugSuccessEvent{}}})
|
|
}
|
|
|
|
func NewReportBugErrorEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ReportBugError{ReportBugError: &ReportBugErrorEvent{}}})
|
|
}
|
|
|
|
func NewShowMainWindowEvent() *StreamEvent {
|
|
return appEvent(&AppEvent{Event: &AppEvent_ShowMainWindow{ShowMainWindow: &ShowMainWindowEvent{}}})
|
|
}
|
|
|
|
func NewLoginError(err LoginErrorType, message string) *StreamEvent {
|
|
return loginEvent(&LoginEvent{Event: &LoginEvent_Error{Error: &LoginErrorEvent{Type: err, Message: message}}})
|
|
}
|
|
|
|
func NewLoginTfaRequestedEvent(username string) *StreamEvent {
|
|
return loginEvent(&LoginEvent{Event: &LoginEvent_TfaRequested{TfaRequested: &LoginTfaRequestedEvent{Username: username}}})
|
|
}
|
|
|
|
func NewLoginTwoPasswordsRequestedEvent() *StreamEvent {
|
|
return loginEvent(&LoginEvent{Event: &LoginEvent_TwoPasswordRequested{}})
|
|
}
|
|
|
|
func NewLoginFinishedEvent(userID string) *StreamEvent {
|
|
return loginEvent(&LoginEvent{Event: &LoginEvent_Finished{Finished: &LoginFinishedEvent{UserID: userID}}})
|
|
}
|
|
|
|
func NewLoginAlreadyLoggedInEvent(userID string) *StreamEvent {
|
|
return loginEvent(&LoginEvent{Event: &LoginEvent_AlreadyLoggedIn{AlreadyLoggedIn: &LoginFinishedEvent{UserID: userID}}})
|
|
}
|
|
|
|
func NewUpdateErrorEvent(errorType UpdateErrorType) *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_Error{Error: &UpdateErrorEvent{Type: errorType}}})
|
|
}
|
|
|
|
func NewUpdateManualReadyEvent(version string) *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_ManualReady{ManualReady: &UpdateManualReadyEvent{Version: version}}})
|
|
}
|
|
|
|
func NewUpdateManualRestartNeededEvent() *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_ManualRestartNeeded{ManualRestartNeeded: &UpdateManualRestartNeededEvent{}}})
|
|
}
|
|
|
|
func NewUpdateForceEvent(version string) *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_Force{Force: &UpdateForceEvent{Version: version}}})
|
|
}
|
|
|
|
func NewUpdateSilentRestartNeededEvent() *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_SilentRestartNeeded{SilentRestartNeeded: &UpdateSilentRestartNeeded{}}})
|
|
}
|
|
|
|
func NewUpdateIsLatestVersionEvent() *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_IsLatestVersion{IsLatestVersion: &UpdateIsLatestVersion{}}})
|
|
}
|
|
|
|
func NewUpdateCheckFinishedEvent() *StreamEvent {
|
|
return updateEvent(&UpdateEvent{Event: &UpdateEvent_CheckFinished{CheckFinished: &UpdateCheckFinished{}}})
|
|
}
|
|
|
|
func NewCacheErrorEvent(err CacheErrorType) *StreamEvent {
|
|
return cacheEvent(&CacheEvent{Event: &CacheEvent_Error{Error: &CacheErrorEvent{Type: err}}})
|
|
}
|
|
|
|
func NewCacheLocationChangeSuccessEvent() *StreamEvent {
|
|
return cacheEvent(&CacheEvent{Event: &CacheEvent_LocationChangedSuccess{LocationChangedSuccess: &CacheLocationChangeSuccessEvent{}}})
|
|
}
|
|
|
|
func NewCacheChangeLocalCacheFinishedEvent() *StreamEvent {
|
|
return cacheEvent(&CacheEvent{Event: &CacheEvent_ChangeLocalCacheFinished{ChangeLocalCacheFinished: &ChangeLocalCacheFinishedEvent{}}})
|
|
}
|
|
|
|
func NewIsCacheOnDiskEnabledChanged(enabled bool) *StreamEvent {
|
|
return cacheEvent(&CacheEvent{Event: &CacheEvent_IsCacheOnDiskEnabledChanged{IsCacheOnDiskEnabledChanged: &IsCacheOnDiskEnabledChanged{Enabled: enabled}}})
|
|
}
|
|
|
|
func NewDiskCachePathChanged(path string) *StreamEvent {
|
|
return cacheEvent(&CacheEvent{Event: &CacheEvent_DiskCachePathChanged{DiskCachePathChanged: &DiskCachePathChanged{Path: path}}})
|
|
}
|
|
func NewMailSettingsErrorEvent(err MailSettingsErrorType) *StreamEvent {
|
|
return mailSettingsEvent(&MailSettingsEvent{Event: &MailSettingsEvent_Error{Error: &MailSettingsErrorEvent{Type: err}}})
|
|
}
|
|
|
|
func NewMailSettingsUseSslForSmtpFinishedEvent() *StreamEvent { //nolint:revive,stylecheck
|
|
return mailSettingsEvent(&MailSettingsEvent{Event: &MailSettingsEvent_UseSslForSmtpFinished{UseSslForSmtpFinished: &UseSslForSmtpFinishedEvent{}}})
|
|
}
|
|
|
|
func NewMailSettingsChangePortFinishedEvent() *StreamEvent {
|
|
return mailSettingsEvent(&MailSettingsEvent{Event: &MailSettingsEvent_ChangePortsFinished{ChangePortsFinished: &ChangePortsFinishedEvent{}}})
|
|
}
|
|
|
|
func NewKeychainChangeKeychainFinishedEvent() *StreamEvent {
|
|
return keychainEvent(&KeychainEvent{Event: &KeychainEvent_ChangeKeychainFinished{ChangeKeychainFinished: &ChangeKeychainFinishedEvent{}}})
|
|
}
|
|
|
|
func NewKeychainHasNoKeychainEvent() *StreamEvent {
|
|
return keychainEvent(&KeychainEvent{Event: &KeychainEvent_HasNoKeychain{HasNoKeychain: &HasNoKeychainEvent{}}})
|
|
}
|
|
|
|
func NewKeychainRebuildKeychainEvent() *StreamEvent {
|
|
return keychainEvent(&KeychainEvent{Event: &KeychainEvent_RebuildKeychain{RebuildKeychain: &RebuildKeychainEvent{}}})
|
|
}
|
|
|
|
func NewMailNoActiveKeyForRecipientEvent(email string) *StreamEvent {
|
|
return mailEvent(&MailEvent{Event: &MailEvent_NoActiveKeyForRecipientEvent{NoActiveKeyForRecipientEvent: &NoActiveKeyForRecipientEvent{Email: email}}})
|
|
}
|
|
|
|
func NewMailAddressChangeEvent(email string) *StreamEvent {
|
|
return mailEvent(&MailEvent{Event: &MailEvent_AddressChanged{AddressChanged: &AddressChangedEvent{Address: email}}})
|
|
}
|
|
|
|
func NewMailAddressChangeLogoutEvent(email string) *StreamEvent {
|
|
return mailEvent(&MailEvent{Event: &MailEvent_AddressChangedLogout{AddressChangedLogout: &AddressChangedLogoutEvent{Address: email}}})
|
|
}
|
|
|
|
func NewMailApiCertIssue() *StreamEvent { //nolint:revive,stylecheck
|
|
return mailEvent(&MailEvent{Event: &MailEvent_ApiCertIssue{ApiCertIssue: &ApiCertIssueEvent{}}})
|
|
}
|
|
|
|
func NewUserToggleSplitModeFinishedEvent(userID string) *StreamEvent {
|
|
return userEvent(&UserEvent{Event: &UserEvent_ToggleSplitModeFinished{ToggleSplitModeFinished: &ToggleSplitModeFinishedEvent{UserID: userID}}})
|
|
}
|
|
|
|
func NewUserDisconnectedEvent(email string) *StreamEvent {
|
|
return userEvent(&UserEvent{Event: &UserEvent_UserDisconnected{UserDisconnected: &UserDisconnectedEvent{Username: email}}})
|
|
}
|
|
|
|
func NewUserChangedEvent(userID string) *StreamEvent {
|
|
return userEvent(&UserEvent{Event: &UserEvent_UserChanged{UserChanged: &UserChangedEvent{UserID: userID}}})
|
|
}
|
|
|
|
// Event category factory functions.
|
|
|
|
func appEvent(appEvent *AppEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_App{App: appEvent}}
|
|
}
|
|
|
|
func loginEvent(event *LoginEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_Login{Login: event}}
|
|
}
|
|
|
|
func updateEvent(event *UpdateEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_Update{Update: event}}
|
|
}
|
|
|
|
func cacheEvent(event *CacheEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_Cache{Cache: event}}
|
|
}
|
|
|
|
func mailSettingsEvent(event *MailSettingsEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_MailSettings{MailSettings: event}}
|
|
}
|
|
|
|
func keychainEvent(event *KeychainEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_Keychain{Keychain: event}}
|
|
}
|
|
|
|
func mailEvent(event *MailEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_Mail{Mail: event}}
|
|
}
|
|
|
|
func userEvent(event *UserEvent) *StreamEvent {
|
|
return &StreamEvent{Event: &StreamEvent_User{User: event}}
|
|
}
|