forked from Silverfish/proton-bridge
feat: enable autostart to use launcher
This commit is contained in:
@ -19,6 +19,7 @@
|
||||
package frontend
|
||||
|
||||
import (
|
||||
"github.com/ProtonMail/go-autostart"
|
||||
"github.com/ProtonMail/proton-bridge/internal/bridge"
|
||||
"github.com/ProtonMail/proton-bridge/internal/config/settings"
|
||||
"github.com/ProtonMail/proton-bridge/internal/frontend/cli"
|
||||
@ -49,6 +50,7 @@ type Frontend interface {
|
||||
func New(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType string,
|
||||
showWindowOnStart bool,
|
||||
panicHandler types.PanicHandler,
|
||||
@ -58,12 +60,14 @@ func New(
|
||||
updater types.Updater,
|
||||
bridge *bridge.Bridge,
|
||||
noEncConfirmator types.NoEncConfirmator,
|
||||
autostart *autostart.App,
|
||||
restarter types.Restarter,
|
||||
) Frontend {
|
||||
bridgeWrap := types.NewBridgeWrap(bridge)
|
||||
return newBridgeFrontend(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType,
|
||||
showWindowOnStart,
|
||||
panicHandler,
|
||||
@ -73,6 +77,7 @@ func New(
|
||||
updater,
|
||||
bridgeWrap,
|
||||
noEncConfirmator,
|
||||
autostart,
|
||||
restarter,
|
||||
)
|
||||
}
|
||||
@ -80,6 +85,7 @@ func New(
|
||||
func newBridgeFrontend(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType string,
|
||||
showWindowOnStart bool,
|
||||
panicHandler types.PanicHandler,
|
||||
@ -89,6 +95,7 @@ func newBridgeFrontend(
|
||||
updater types.Updater,
|
||||
bridge types.Bridger,
|
||||
noEncConfirmator types.NoEncConfirmator,
|
||||
autostart *autostart.App,
|
||||
restarter types.Restarter,
|
||||
) Frontend {
|
||||
switch frontendType {
|
||||
@ -106,6 +113,7 @@ func newBridgeFrontend(
|
||||
return qt.New(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
showWindowOnStart,
|
||||
panicHandler,
|
||||
locations,
|
||||
@ -114,6 +122,7 @@ func newBridgeFrontend(
|
||||
updater,
|
||||
bridge,
|
||||
noEncConfirmator,
|
||||
autostart,
|
||||
restarter,
|
||||
)
|
||||
}
|
||||
@ -123,6 +132,7 @@ func newBridgeFrontend(
|
||||
func NewImportExport(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType string,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
@ -136,6 +146,7 @@ func NewImportExport(
|
||||
return newIEFrontend(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType,
|
||||
panicHandler,
|
||||
locations,
|
||||
@ -150,6 +161,7 @@ func NewImportExport(
|
||||
func newIEFrontend(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
frontendType string,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
@ -173,6 +185,7 @@ func newIEFrontend(
|
||||
return qtie.New(
|
||||
version,
|
||||
buildVersion,
|
||||
programName,
|
||||
panicHandler,
|
||||
locations,
|
||||
settings,
|
||||
|
||||
@ -62,7 +62,7 @@ type FrontendQt struct {
|
||||
Qml *GoQMLInterface // Object accessible from both Go and QML for methods and signals
|
||||
Accounts qtcommon.Accounts // Providing data for accounts ListView
|
||||
|
||||
programName string // Program name
|
||||
programName string // App name
|
||||
programVersion string // Program version
|
||||
buildVersion string // Program build version
|
||||
|
||||
@ -80,7 +80,7 @@ type FrontendQt struct {
|
||||
|
||||
// New is constructor for Import-Export Qt-Go interface
|
||||
func New(
|
||||
version, buildVersion string,
|
||||
version, buildVersion, programName string,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
settings *settings.Settings,
|
||||
@ -93,7 +93,7 @@ func New(
|
||||
panicHandler: panicHandler,
|
||||
locations: locations,
|
||||
settings: settings,
|
||||
programName: "ProtonMail Import-Export",
|
||||
programName: programName,
|
||||
programVersion: "v" + version,
|
||||
eventListener: eventListener,
|
||||
updater: updater,
|
||||
|
||||
@ -54,7 +54,7 @@ func (s *FrontendHeadless) NotifySilentUpdateError(err error) {
|
||||
}
|
||||
|
||||
func New(
|
||||
version, buildVersion string,
|
||||
version, buildVersion, appName string,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
settings *settings.Settings,
|
||||
|
||||
@ -49,7 +49,6 @@ import (
|
||||
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
|
||||
"github.com/ProtonMail/proton-bridge/pkg/ports"
|
||||
"github.com/ProtonMail/proton-bridge/pkg/useragent"
|
||||
"github.com/kardianos/osext"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/skratchdot/open-golang/open"
|
||||
"github.com/therecipe/qt/core"
|
||||
@ -68,6 +67,7 @@ var accountMutex = &sync.Mutex{}
|
||||
type FrontendQt struct {
|
||||
version string
|
||||
buildVersion string
|
||||
programName string
|
||||
showWindowOnStart bool
|
||||
panicHandler types.PanicHandler
|
||||
locations *locations.Locations
|
||||
@ -77,19 +77,18 @@ type FrontendQt struct {
|
||||
bridge types.Bridger
|
||||
noEncConfirmator types.NoEncConfirmator
|
||||
|
||||
App *widgets.QApplication // Main Application pointer.
|
||||
View *qml.QQmlApplicationEngine // QML engine pointer.
|
||||
MainWin *core.QObject // Pointer to main window inside QML.
|
||||
Qml *GoQMLInterface // Object accessible from both Go and QML for methods and signals.
|
||||
Accounts *AccountsModel // Providing data for accounts ListView.
|
||||
programName string // Program name (shown in taskbar).
|
||||
programVer string // Program version (shown in help).
|
||||
App *widgets.QApplication // Main Application pointer.
|
||||
View *qml.QQmlApplicationEngine // QML engine pointer.
|
||||
MainWin *core.QObject // Pointer to main window inside QML.
|
||||
Qml *GoQMLInterface // Object accessible from both Go and QML for methods and signals.
|
||||
Accounts *AccountsModel // Providing data for accounts ListView.
|
||||
programVer string // Program version (shown in help).
|
||||
|
||||
authClient pmapi.Client
|
||||
|
||||
auth *pmapi.Auth
|
||||
|
||||
AutostartEntry *autostart.App
|
||||
autostart *autostart.App
|
||||
|
||||
// expand userID when added
|
||||
userIDAdded string
|
||||
@ -103,7 +102,8 @@ type FrontendQt struct {
|
||||
// New returns a new Qt frontend for the bridge.
|
||||
func New(
|
||||
version,
|
||||
buildVersion string,
|
||||
buildVersion,
|
||||
programName string,
|
||||
showWindowOnStart bool,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
@ -112,12 +112,13 @@ func New(
|
||||
updater types.Updater,
|
||||
bridge types.Bridger,
|
||||
noEncConfirmator types.NoEncConfirmator,
|
||||
autostart *autostart.App,
|
||||
restarter types.Restarter,
|
||||
) *FrontendQt {
|
||||
prgName := "ProtonMail Bridge"
|
||||
tmp := &FrontendQt{
|
||||
version: version,
|
||||
buildVersion: buildVersion,
|
||||
programName: programName,
|
||||
showWindowOnStart: showWindowOnStart,
|
||||
panicHandler: panicHandler,
|
||||
locations: locations,
|
||||
@ -126,24 +127,9 @@ func New(
|
||||
updater: updater,
|
||||
bridge: bridge,
|
||||
noEncConfirmator: noEncConfirmator,
|
||||
|
||||
programName: prgName,
|
||||
programVer: "v" + version,
|
||||
AutostartEntry: &autostart.App{
|
||||
Name: prgName,
|
||||
DisplayName: prgName,
|
||||
Exec: []string{"", "--no-window"},
|
||||
},
|
||||
|
||||
restarter: restarter,
|
||||
}
|
||||
|
||||
// Handle autostart if wanted.
|
||||
if p, err := osext.Executable(); err == nil {
|
||||
tmp.AutostartEntry.Exec[0] = p
|
||||
log.Info("Autostart ", p)
|
||||
} else {
|
||||
log.Error("Cannot get current executable path: ", err)
|
||||
programVer: "v" + version,
|
||||
autostart: autostart,
|
||||
restarter: restarter,
|
||||
}
|
||||
|
||||
// Nicer string for OS.
|
||||
@ -344,15 +330,15 @@ func (s *FrontendQt) qtExecute(Procedure func(*FrontendQt) error) error {
|
||||
|
||||
// Autostart.
|
||||
if s.Qml.IsFirstStart() {
|
||||
if s.AutostartEntry.IsEnabled() {
|
||||
if err := s.AutostartEntry.Disable(); err != nil {
|
||||
if s.autostart.IsEnabled() {
|
||||
if err := s.autostart.Disable(); err != nil {
|
||||
log.Error("First disable ", err)
|
||||
s.autostartError(err)
|
||||
}
|
||||
}
|
||||
s.toggleAutoStart()
|
||||
}
|
||||
if s.AutostartEntry.IsEnabled() {
|
||||
if s.autostart.IsEnabled() {
|
||||
s.Qml.SetIsAutoStart(true)
|
||||
} else {
|
||||
s.Qml.SetIsAutoStart(false)
|
||||
@ -526,16 +512,16 @@ func (s *FrontendQt) configureAppleMail(iAccount, iAddress int) {
|
||||
func (s *FrontendQt) toggleAutoStart() {
|
||||
defer s.Qml.ProcessFinished()
|
||||
var err error
|
||||
if s.AutostartEntry.IsEnabled() {
|
||||
err = s.AutostartEntry.Disable()
|
||||
if s.autostart.IsEnabled() {
|
||||
err = s.autostart.Disable()
|
||||
} else {
|
||||
err = s.AutostartEntry.Enable()
|
||||
err = s.autostart.Enable()
|
||||
}
|
||||
if err != nil {
|
||||
log.Error("Enable autostart: ", err)
|
||||
s.autostartError(err)
|
||||
}
|
||||
if s.AutostartEntry.IsEnabled() {
|
||||
if s.autostart.IsEnabled() {
|
||||
s.Qml.SetIsAutoStart(true)
|
||||
} else {
|
||||
s.Qml.SetIsAutoStart(false)
|
||||
|
||||
@ -23,6 +23,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/ProtonMail/go-autostart"
|
||||
"github.com/ProtonMail/proton-bridge/internal/config/settings"
|
||||
"github.com/ProtonMail/proton-bridge/internal/frontend/types"
|
||||
"github.com/ProtonMail/proton-bridge/internal/locations"
|
||||
@ -57,7 +58,7 @@ func (s *FrontendHeadless) InstanceExistAlert() {}
|
||||
|
||||
func New(
|
||||
version,
|
||||
buildVersion string,
|
||||
buildVersion, appName string,
|
||||
showWindowOnStart bool,
|
||||
panicHandler types.PanicHandler,
|
||||
locations *locations.Locations,
|
||||
@ -66,6 +67,7 @@ func New(
|
||||
updater types.Updater,
|
||||
bridge types.Bridger,
|
||||
noEncConfirmator types.NoEncConfirmator,
|
||||
autostart *autostart.App,
|
||||
restarter types.Restarter,
|
||||
) *FrontendHeadless {
|
||||
return &FrontendHeadless{}
|
||||
|
||||
Reference in New Issue
Block a user