forked from Silverfish/proton-bridge
GODT-1058 Install after chaning channel right away only in case of downgrade
This commit is contained in:
committed by
Jakub Cuth
parent
0e5a45671f
commit
feeb7179f5
@ -151,28 +151,33 @@ func (b *Bridge) GetUpdateChannel() updater.UpdateChannel {
|
|||||||
// Downgrading to previous version (by switching from early to stable, for example)
|
// Downgrading to previous version (by switching from early to stable, for example)
|
||||||
// requires clearing all data including update files due to possibility of
|
// requires clearing all data including update files due to possibility of
|
||||||
// inconsistency between versions and absence of backwards migration scripts.
|
// inconsistency between versions and absence of backwards migration scripts.
|
||||||
func (b *Bridge) SetUpdateChannel(channel updater.UpdateChannel) error {
|
func (b *Bridge) SetUpdateChannel(channel updater.UpdateChannel) (needRestart bool, err error) {
|
||||||
b.settings.Set(settings.UpdateChannelKey, string(channel))
|
b.settings.Set(settings.UpdateChannelKey, string(channel))
|
||||||
|
|
||||||
version, err := b.updater.Check()
|
version, err := b.updater.Check()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have to deal right away only with downgrade - that action needs to
|
||||||
|
// clear data and updates, and install bridge right away. But regular
|
||||||
|
// upgrade can be leaved out for periodic check.
|
||||||
|
if !b.updater.IsDowngrade(version) {
|
||||||
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.updater.IsDowngrade(version) {
|
|
||||||
if err := b.Users.ClearData(); err != nil {
|
if err := b.Users.ClearData(); err != nil {
|
||||||
log.WithError(err).Error("Failed to clear data while downgrading channel")
|
log.WithError(err).Error("Failed to clear data while downgrading channel")
|
||||||
}
|
}
|
||||||
if err := b.locations.ClearUpdates(); err != nil {
|
if err := b.locations.ClearUpdates(); err != nil {
|
||||||
log.WithError(err).Error("Failed to clear updates while downgrading channel")
|
log.WithError(err).Error("Failed to clear updates while downgrading channel")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if err := b.updater.InstallUpdate(version); err != nil {
|
if err := b.updater.InstallUpdate(version); err != nil {
|
||||||
return err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return b.versioner.RemoveOtherVersions(version.Version)
|
return true, b.versioner.RemoveOtherVersions(version.Version)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetKeychainApp returns current keychain helper.
|
// GetKeychainApp returns current keychain helper.
|
||||||
|
|||||||
@ -81,9 +81,13 @@ func (f *frontendCLI) selectEarlyChannel(c *ishell.Context) {
|
|||||||
f.Println("Bridge is currently on the stable update channel.")
|
f.Println("Bridge is currently on the stable update channel.")
|
||||||
|
|
||||||
if f.yesNoQuestion("Are you sure you want to switch to the early-access update channel") {
|
if f.yesNoQuestion("Are you sure you want to switch to the early-access update channel") {
|
||||||
if err := f.bridge.SetUpdateChannel(updater.EarlyChannel); err != nil {
|
needRestart, err := f.bridge.SetUpdateChannel(updater.EarlyChannel)
|
||||||
|
if err != nil {
|
||||||
f.Println("There was a problem switching update channel.")
|
f.Println("There was a problem switching update channel.")
|
||||||
}
|
}
|
||||||
|
if needRestart {
|
||||||
|
f.restarter.SetToRestart()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,9 +101,12 @@ func (f *frontendCLI) selectStableChannel(c *ishell.Context) {
|
|||||||
f.Println("Switching to the stable channel may reset all data!")
|
f.Println("Switching to the stable channel may reset all data!")
|
||||||
|
|
||||||
if f.yesNoQuestion("Are you sure you want to switch to the stable update channel") {
|
if f.yesNoQuestion("Are you sure you want to switch to the stable update channel") {
|
||||||
if err := f.bridge.SetUpdateChannel(updater.StableChannel); err != nil {
|
needRestart, err := f.bridge.SetUpdateChannel(updater.StableChannel)
|
||||||
|
if err != nil {
|
||||||
f.Println("There was a problem switching update channel.")
|
f.Println("There was a problem switching update channel.")
|
||||||
}
|
}
|
||||||
|
if needRestart {
|
||||||
f.restarter.SetToRestart()
|
f.restarter.SetToRestart()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -229,7 +229,7 @@ Dialog {
|
|||||||
currentIndex : 0
|
currentIndex : 0
|
||||||
title : qsTr("Clear cache", "title of page that displays during cache clearing")
|
title : qsTr("Clear cache", "title of page that displays during cache clearing")
|
||||||
question : qsTr("Are you sure you want to clear your local cache?", "displays during cache clearing")
|
question : qsTr("Are you sure you want to clear your local cache?", "displays during cache clearing")
|
||||||
note : qsTr("This will delete all of your stored preferences as well as cached email data for all accounts, temporarily slowing down the email download process significantly.", "displays during cache clearing")
|
note : qsTr("This will delete all of your stored preferences as well as cached email data for all accounts, and requires you to reconfigure your client.", "displays during cache clearing")
|
||||||
answer : qsTr("Clearing the cache ...", "displays during cache clearing")
|
answer : qsTr("Clearing the cache ...", "displays during cache clearing")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -310,7 +310,7 @@ Dialog {
|
|||||||
target: root
|
target: root
|
||||||
currentIndex : 0
|
currentIndex : 0
|
||||||
question : qsTr("Are you sure you want to leave early access? Please keep in mind this operation clears the cache and restarts Bridge.")
|
question : qsTr("Are you sure you want to leave early access? Please keep in mind this operation clears the cache and restarts Bridge.")
|
||||||
note : qsTr("This will delete all of your stored preferences as well as cached email data for all accounts, temporarily slowing down the email download process significantly.")
|
note : qsTr("This will delete all of your stored preferences as well as cached email data for all accounts, and requires you to reconfigure your client.")
|
||||||
title : qsTr("Disable early access")
|
title : qsTr("Disable early access")
|
||||||
answer : qsTr("Disabling early access...")
|
answer : qsTr("Disabling early access...")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,7 @@ func (s *FrontendQt) clearCache() {
|
|||||||
|
|
||||||
channel := s.bridge.GetUpdateChannel()
|
channel := s.bridge.GetUpdateChannel()
|
||||||
if channel == updater.EarlyChannel {
|
if channel == updater.EarlyChannel {
|
||||||
if err := s.bridge.SetUpdateChannel(updater.StableChannel); err != nil {
|
if _, err := s.bridge.SetUpdateChannel(updater.StableChannel); err != nil {
|
||||||
s.Qml.NotifyManualUpdateError()
|
s.Qml.NotifyManualUpdateError()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -605,15 +605,17 @@ func (s *FrontendQt) toggleEarlyAccess() {
|
|||||||
channel = updater.EarlyChannel
|
channel = updater.EarlyChannel
|
||||||
}
|
}
|
||||||
|
|
||||||
err := s.bridge.SetUpdateChannel(channel)
|
needRestart, err := s.bridge.SetUpdateChannel(channel)
|
||||||
s.Qml.SetIsEarlyAccess(channel == updater.EarlyChannel)
|
s.Qml.SetIsEarlyAccess(channel == updater.EarlyChannel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.Qml.NotifyManualUpdateError()
|
s.Qml.NotifyManualUpdateError()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if needRestart {
|
||||||
s.restarter.SetToRestart()
|
s.restarter.SetToRestart()
|
||||||
s.App.Quit()
|
s.App.Quit()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *FrontendQt) toggleAllowProxy() {
|
func (s *FrontendQt) toggleAllowProxy() {
|
||||||
defer s.Qml.ProcessFinished()
|
defer s.Qml.ProcessFinished()
|
||||||
|
|||||||
@ -79,7 +79,7 @@ type Bridger interface {
|
|||||||
AllowProxy()
|
AllowProxy()
|
||||||
DisallowProxy()
|
DisallowProxy()
|
||||||
GetUpdateChannel() updater.UpdateChannel
|
GetUpdateChannel() updater.UpdateChannel
|
||||||
SetUpdateChannel(updater.UpdateChannel) error
|
SetUpdateChannel(updater.UpdateChannel) (needRestart bool, err error)
|
||||||
GetKeychainApp() string
|
GetKeychainApp() string
|
||||||
SetKeychainApp(keychain string)
|
SetKeychainApp(keychain string)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user