Autosave Android settings and refine header
This commit is contained in:
@@ -2803,27 +2803,35 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
|
||||
}
|
||||
for u.settingsDensityDense.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.DisplayDensity = displayDensityDense
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsDensityComfortable.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.DisplayDensity = displayDensityComfortable
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsContrastStandard.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.Contrast = contrastStandard
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsContrastHigh.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.Contrast = contrastHigh
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsReducedMotionOff.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.ReducedMotion = false
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsReducedMotionOn.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.ReducedMotion = true
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsKeyboardFocusStandard.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.KeyboardFocus = keyboardFocusStandard
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.settingsKeyboardFocusProminent.Clicked(gtx) {
|
||||
u.settingsDraft.Accessibility.KeyboardFocus = keyboardFocusProminent
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.unlockVault.Clicked(gtx) {
|
||||
u.startUnlockAction()
|
||||
@@ -2890,24 +2898,31 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
|
||||
}
|
||||
for u.showSettingsSyncLocal.Clicked(gtx) {
|
||||
u.settingsDraft.Sync.SourceDefault = syncSourceLocal
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.showSettingsSyncRemote.Clicked(gtx) {
|
||||
u.settingsDraft.Sync.SourceDefault = syncSourceRemote
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.showSettingsSyncPull.Clicked(gtx) {
|
||||
u.settingsDraft.Sync.DirectionDefault = syncDirectionPull
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.showSettingsSyncPush.Clicked(gtx) {
|
||||
u.settingsDraft.Sync.DirectionDefault = syncDirectionPush
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
for u.showAutofillApprovalAsk.Clicked(gtx) {
|
||||
u.autofillFirstFillApprovalMode = autofillFirstFillApprovalAsk
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
for u.showAutofillApprovalAllow.Clicked(gtx) {
|
||||
u.autofillFirstFillApprovalMode = autofillFirstFillApprovalAllow
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
for u.showAutofillApprovalBlock.Clicked(gtx) {
|
||||
u.autofillFirstFillApprovalMode = autofillFirstFillApprovalBlock
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
for u.allowApproval.Clicked(gtx) {
|
||||
u.runAction("allow API request", func() error {
|
||||
@@ -3143,6 +3158,23 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
|
||||
u.state.StatusMessage = ""
|
||||
u.statusExpiresAt = time.Time{}
|
||||
}
|
||||
if u.securityDialogOpen {
|
||||
if _, changed := u.securityCipher.Update(gtx); changed {
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
if _, changed := u.securityKDF.Update(gtx); changed {
|
||||
_ = u.applySecuritySettingsLive()
|
||||
}
|
||||
if _, changed := u.autofillBrowserAllowlist.Update(gtx); changed {
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
if _, changed := u.autofillAppAllowlist.Update(gtx); changed {
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
if _, changed := u.autofillPackageRules.Update(gtx); changed {
|
||||
u.saveUIPreferences()
|
||||
}
|
||||
}
|
||||
for u.togglePassword.Clicked(gtx) {
|
||||
u.showPassword = !u.showPassword
|
||||
}
|
||||
@@ -3598,8 +3630,10 @@ func (u *ui) securityDialogContent(gtx layout.Context) layout.Dimensions {
|
||||
labeledEditorHelp(u.theme, "App and package allowlist", "One Android package name or trusted app identifier per line.", &u.autofillAppAllowlist, false),
|
||||
layout.Spacer{Height: unit.Dp(8)}.Layout,
|
||||
labeledEditorHelp(u.theme, "Package rules", "One rule per line, for example `com.android.chrome=hostname` or `org.keepassgo.browser=view-id`.", &u.autofillPackageRules, false),
|
||||
layout.Spacer{Height: unit.Dp(12)}.Layout,
|
||||
func(gtx layout.Context) layout.Dimensions {
|
||||
if u.mode == "phone" {
|
||||
return layout.Dimensions{}
|
||||
}
|
||||
return layout.Flex{Spacing: layout.SpaceStart}.Layout(gtx,
|
||||
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
|
||||
return tonedButton(gtx, u.theme, &u.closeSecuritySettings, "Close")
|
||||
@@ -3909,7 +3943,8 @@ func (u *ui) header(gtx layout.Context) layout.Dimensions {
|
||||
}
|
||||
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
|
||||
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
|
||||
return layout.E.Layout(gtx, u.headerActions)
|
||||
gtx.Constraints.Min.X = gtx.Constraints.Max.X
|
||||
return u.headerActions(gtx)
|
||||
}),
|
||||
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
|
||||
if !u.mainMenuOpen {
|
||||
|
||||
+8
-1
@@ -118,6 +118,14 @@ func (u *ui) loadSettingsDraft() {
|
||||
}
|
||||
|
||||
func (u *ui) saveSecuritySettingsAction() error {
|
||||
if err := u.applySecuritySettingsLive(); err != nil {
|
||||
return err
|
||||
}
|
||||
u.securityDialogOpen = false
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *ui) applySecuritySettingsLive() error {
|
||||
settings := vault.SecuritySettings{
|
||||
Cipher: strings.TrimSpace(u.securityCipher.Text()),
|
||||
KDF: strings.TrimSpace(u.securityKDF.Text()),
|
||||
@@ -135,7 +143,6 @@ func (u *ui) saveSecuritySettingsAction() error {
|
||||
u.applyAccessibilityPreferences(u.settingsDraft.Accessibility)
|
||||
u.saveSettings()
|
||||
u.saveUIPreferences()
|
||||
u.securityDialogOpen = false
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user