From 318a3e4de94e804aa3279e89c07e9d594aeee8eb Mon Sep 17 00:00:00 2001 From: Jake Fink Date: Fri, 29 Oct 2021 10:31:38 -0400 Subject: [PATCH] fix for bug stopping vault timeout to never (#1618) - use nullable int on settings page and in vault service --- .../Pages/Settings/SettingsPage/SettingsPageViewModel.cs | 8 ++++---- src/Core/Abstractions/IVaultTimeoutService.cs | 2 +- src/Core/Services/VaultTimeoutService.cs | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/App/Pages/Settings/SettingsPage/SettingsPageViewModel.cs b/src/App/Pages/Settings/SettingsPage/SettingsPageViewModel.cs index 52ce45133..fe36b46ab 100644 --- a/src/App/Pages/Settings/SettingsPage/SettingsPageViewModel.cs +++ b/src/App/Pages/Settings/SettingsPage/SettingsPageViewModel.cs @@ -58,7 +58,7 @@ namespace Bit.App.Pages }; private Policy _vaultTimeoutPolicy; - private int _vaultTimeout; + private int? _vaultTimeout; public SettingsPageViewModel() { @@ -223,7 +223,7 @@ namespace Bit.App.Pages await _vaultTimeoutService.LockAsync(true, true); } - public async Task VaultTimeoutAsync(bool promptOptions = true, int newTimeout = 0) + public async Task VaultTimeoutAsync(bool promptOptions = true, int? newTimeout = 0) { var oldTimeout = _vaultTimeout; @@ -240,7 +240,7 @@ namespace Bit.App.Pages var cleanSelection = selection.Replace("✓ ", string.Empty); var selectionOption = _vaultTimeouts.FirstOrDefault(o => o.Key == cleanSelection); _vaultTimeoutDisplayValue = selectionOption.Key; - newTimeout = selectionOption.Value.GetValueOrDefault(); + newTimeout = selectionOption.Value; } if (_vaultTimeoutPolicy != null) @@ -441,7 +441,7 @@ namespace Bit.App.Pages securityItems.Insert(1, new SettingsPageListItem { Name = AppResources.Custom, - Time = TimeSpan.FromMinutes(Math.Abs((double)_vaultTimeout)), + Time = TimeSpan.FromMinutes(Math.Abs((double)_vaultTimeout.GetValueOrDefault())), }); } if (_vaultTimeoutPolicy != null) diff --git a/src/Core/Abstractions/IVaultTimeoutService.cs b/src/Core/Abstractions/IVaultTimeoutService.cs index 49168e17c..1c780a169 100644 --- a/src/Core/Abstractions/IVaultTimeoutService.cs +++ b/src/Core/Abstractions/IVaultTimeoutService.cs @@ -17,6 +17,6 @@ namespace Bit.Core.Abstractions Task LockAsync(bool allowSoftLock = false, bool userInitiated = false); Task LogOutAsync(); Task SetVaultTimeoutOptionsAsync(int? timeout, string action); - Task GetVaultTimeout(); + Task GetVaultTimeout(); } } diff --git a/src/Core/Services/VaultTimeoutService.cs b/src/Core/Services/VaultTimeoutService.cs index 3d29611c9..f7d9a5b6a 100644 --- a/src/Core/Services/VaultTimeoutService.cs +++ b/src/Core/Services/VaultTimeoutService.cs @@ -86,7 +86,7 @@ namespace Bit.Core.Services return; } var vaultTimeoutMinutes = await GetVaultTimeout(); - if (vaultTimeoutMinutes < 0) + if (vaultTimeoutMinutes < 0 || vaultTimeoutMinutes == null) { return; } @@ -178,8 +178,8 @@ namespace Bit.Core.Services await _storageService.RemoveAsync(Constants.ProtectedPin); } - public async Task GetVaultTimeout() { - var vaultTimeout = (await _storageService.GetAsync(Constants.VaultTimeoutKey)).GetValueOrDefault(-1); + public async Task GetVaultTimeout() { + var vaultTimeout = await _storageService.GetAsync(Constants.VaultTimeoutKey); if (await _policyService.PolicyAppliesToUser(PolicyType.MaximumVaultTimeout)) { var policy = (await _policyService.GetAll(PolicyType.MaximumVaultTimeout)).First(); @@ -190,7 +190,7 @@ namespace Bit.Core.Services return vaultTimeout; } - var timeout = Math.Min(vaultTimeout, policyTimeout.Value); + var timeout = vaultTimeout.HasValue ? Math.Min(vaultTimeout.Value, policyTimeout.Value) : policyTimeout.Value; if (timeout < 0) { timeout = policyTimeout.Value;