diff --git a/src/App/Pages/Send/SendAddEditPageViewModel.cs b/src/App/Pages/Send/SendAddEditPageViewModel.cs index 7af8abc34..b729d29ce 100644 --- a/src/App/Pages/Send/SendAddEditPageViewModel.cs +++ b/src/App/Pages/Send/SendAddEditPageViewModel.cs @@ -29,8 +29,10 @@ namespace Bit.App.Pages private bool _showPassword; private int _deletionDateTypeSelectedIndex; private int _expirationDateTypeSelectedIndex; + private DateTime _simpleDeletionDateTime; private DateTime _deletionDate; private TimeSpan _deletionTime; + private DateTime? _simpleExpirationDateTime; private DateTime? _expirationDate; private TimeSpan? _expirationTime; private bool _isOverridingPickers; @@ -220,7 +222,9 @@ namespace Bit.App.Pages } Send = await send.DecryptAsync(); DeletionDate = Send.DeletionDate.ToLocalTime(); + DeletionTime = DeletionDate.TimeOfDay; ExpirationDate = Send.ExpirationDate?.ToLocalTime(); + ExpirationTime = ExpirationDate?.TimeOfDay; } else { @@ -229,13 +233,13 @@ namespace Bit.App.Pages { Type = Type.GetValueOrDefault(defaultType), }; + _deletionDate = DateTimeNow().AddDays(7); + _deletionTime = DeletionDate.TimeOfDay; DeletionDateTypeSelectedIndex = 4; ExpirationDateTypeSelectedIndex = 0; } MaxAccessCount = Send.MaxAccessCount; - DeletionTime = DeletionDate.TimeOfDay; - ExpirationTime = ExpirationDate?.TimeOfDay; _isOverridingPickers = false; } @@ -270,20 +274,17 @@ namespace Bit.App.Pages } else { - Send.DeletionDate = DeletionDate.ToUniversalTime(); + Send.DeletionDate = _simpleDeletionDateTime.ToUniversalTime(); } // expiration date - if (ExpirationDate.HasValue) + if (ShowExpirationCustomPickers && ExpirationDate.HasValue && ExpirationTime.HasValue) { - if (ShowExpirationCustomPickers && ExpirationTime.HasValue) - { - Send.ExpirationDate = ExpirationDate.Value.Date.Add(ExpirationTime.Value).ToUniversalTime(); - } - else - { - Send.ExpirationDate = ExpirationDate.Value.ToUniversalTime(); - } + Send.ExpirationDate = ExpirationDate.Value.Date.Add(ExpirationTime.Value).ToUniversalTime(); + } + else if (_simpleExpirationDateTime.HasValue) + { + Send.ExpirationDate = _simpleExpirationDateTime.Value.ToUniversalTime(); } else { @@ -436,26 +437,27 @@ namespace Bit.App.Pages switch (DeletionDateTypeSelectedIndex) { case 0: - DeletionDate = DateTimeNow().AddHours(1); + _simpleDeletionDateTime = DateTimeNow().AddHours(1); break; case 1: - DeletionDate = DateTimeNow().AddDays(1); + _simpleDeletionDateTime = DateTimeNow().AddDays(1); break; case 2: - DeletionDate = DateTimeNow().AddDays(2); + _simpleDeletionDateTime = DateTimeNow().AddDays(2); break; case 3: - DeletionDate = DateTimeNow().AddDays(3); + _simpleDeletionDateTime = DateTimeNow().AddDays(3); break; case 4: - case 6: - DeletionDate = DateTimeNow().AddDays(7); + _simpleDeletionDateTime = DateTimeNow().AddDays(7); break; case 5: - DeletionDate = DateTimeNow().AddDays(30); + _simpleDeletionDateTime = DateTimeNow().AddDays(30); + break; + case 6: + // custom option, initial values already set elsewhere break; } - DeletionTime = DeletionDate.TimeOfDay; _isOverridingPickers = false; TriggerPropertyChanged(nameof(ShowDeletionCustomPickers)); } @@ -469,33 +471,29 @@ namespace Bit.App.Pages switch (ExpirationDateTypeSelectedIndex) { case 0: - ClearExpirationDate(); + _simpleExpirationDateTime = null; break; case 1: - ExpirationDate = DateTimeNow().AddHours(1); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddHours(1); break; case 2: - ExpirationDate = DateTimeNow().AddDays(1); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddDays(1); break; case 3: - ExpirationDate = DateTimeNow().AddDays(2); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddDays(2); break; case 4: - ExpirationDate = DateTimeNow().AddDays(3); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddDays(3); break; case 5: - ExpirationDate = DateTimeNow().AddDays(7); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddDays(7); break; case 6: - ExpirationDate = DateTimeNow().AddDays(30); - ExpirationTime = ExpirationDate.Value.TimeOfDay; + _simpleExpirationDateTime = DateTimeNow().AddDays(30); break; case 7: + // custom option, clear all expiration values + _simpleExpirationDateTime = null; ClearExpirationDate(); break; } diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx index 58e5765b2..326fa92c1 100644 --- a/src/App/Resources/AppResources.resx +++ b/src/App/Resources/AppResources.resx @@ -1901,7 +1901,7 @@ 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - There are no sends in your account. + There are no Sends in your account. 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.