diff --git a/ModernKeePass.Application/Entry/Models/EntryVm.cs b/ModernKeePass.Application/Entry/Models/EntryVm.cs index e3b9625..2ecda00 100644 --- a/ModernKeePass.Application/Entry/Models/EntryVm.cs +++ b/ModernKeePass.Application/Entry/Models/EntryVm.cs @@ -40,17 +40,17 @@ namespace ModernKeePass.Application.Entry.Models { profile.CreateMap() .ForMember(d => d.Title, opts => opts.MapFrom(s => s.Fields.FirstOrDefault(f => - f.Name.Equals(EntryFieldName.Title, StringComparison.OrdinalIgnoreCase)) ?? new FieldEntity { Name = EntryFieldName.Title, IsProtected = false } )) + f.Name.Equals(EntryFieldName.Title, StringComparison.Ordinal)) ?? new FieldEntity { Name = EntryFieldName.Title, IsProtected = false } )) .ForMember(d => d.Username, opts => opts.MapFrom(s => s.Fields.FirstOrDefault(f => - f.Name.Equals(EntryFieldName.UserName, StringComparison.OrdinalIgnoreCase)) ?? new FieldEntity { Name = EntryFieldName.UserName, IsProtected = false } )) + f.Name.Equals(EntryFieldName.UserName, StringComparison.Ordinal)) ?? new FieldEntity { Name = EntryFieldName.UserName, IsProtected = false } )) .ForMember(d => d.Password, opts => opts.MapFrom(s => s.Fields.FirstOrDefault(f => - f.Name.Equals(EntryFieldName.Password, StringComparison.OrdinalIgnoreCase)) ?? new FieldEntity { Name = EntryFieldName.Password, IsProtected = true } )) + f.Name.Equals(EntryFieldName.Password, StringComparison.Ordinal)) ?? new FieldEntity { Name = EntryFieldName.Password, IsProtected = true } )) .ForMember(d => d.Url, opts => opts.MapFrom(s => s.Fields.FirstOrDefault(f => - f.Name.Equals(EntryFieldName.Url, StringComparison.OrdinalIgnoreCase)) ?? new FieldEntity { Name = EntryFieldName.Url, IsProtected = false } )) + f.Name.Equals(EntryFieldName.Url, StringComparison.Ordinal)) ?? new FieldEntity { Name = EntryFieldName.Url, IsProtected = false } )) .ForMember(d => d.Notes, opts => opts.MapFrom(s => s.Fields.FirstOrDefault(f => - f.Name.Equals(EntryFieldName.Notes, StringComparison.OrdinalIgnoreCase)) ?? new FieldEntity { Name = EntryFieldName.Notes, IsProtected = false } )) + f.Name.Equals(EntryFieldName.Notes, StringComparison.Ordinal)) ?? new FieldEntity { Name = EntryFieldName.Notes, IsProtected = false } )) .ForMember(d => d.AdditionalFields, opts => opts.MapFrom(s => - s.Fields.Where(f => !EntryFieldName.StandardFieldNames.Contains(f.Name, StringComparer.OrdinalIgnoreCase)))) + s.Fields.Where(f => !EntryFieldName.StandardFieldNames.Contains(f.Name, StringComparer.Ordinal)))) .ForMember(d => d.History, opts => opts.MapFrom(s => s.History.Reverse())) .ForMember(d => d.Icon, opts => opts.MapFrom(s => s.HasExpirationDate && s.ExpirationDate < DateTimeOffset.Now ? Icon.ReportHacked : s.Icon)); } diff --git a/ModernKeePass.Domain/Enums/EntryFieldName.cs b/ModernKeePass.Domain/Enums/EntryFieldName.cs index 9c91e57..135d45c 100644 --- a/ModernKeePass.Domain/Enums/EntryFieldName.cs +++ b/ModernKeePass.Domain/Enums/EntryFieldName.cs @@ -7,7 +7,7 @@ namespace ModernKeePass.Domain.Enums public const string Title = nameof(Title); public const string UserName = nameof(UserName); public const string Password = nameof(Password); - public const string Url = nameof(Url); + public const string Url = "URL"; public const string Notes = nameof(Notes); public const string Icon = nameof(Icon); public const string ExpirationDate = nameof(ExpirationDate); diff --git a/ModernKeePass.Infrastructure/Infrastructure.csproj b/ModernKeePass.Infrastructure/Infrastructure.csproj index 5690c25..a50fba2 100644 --- a/ModernKeePass.Infrastructure/Infrastructure.csproj +++ b/ModernKeePass.Infrastructure/Infrastructure.csproj @@ -79,7 +79,6 @@ - diff --git a/ModernKeePass.Infrastructure/KeePass/EntryFieldMapper.cs b/ModernKeePass.Infrastructure/KeePass/EntryFieldMapper.cs deleted file mode 100644 index 05dc2b8..0000000 --- a/ModernKeePass.Infrastructure/KeePass/EntryFieldMapper.cs +++ /dev/null @@ -1,33 +0,0 @@ -using ModernKeePass.Domain.Enums; -using ModernKeePassLib; - -namespace ModernKeePass.Infrastructure.KeePass -{ - public static class EntryFieldMapper - { - public static string MapPwDefsToField(string value) - { - switch (value) - { - case PwDefs.TitleField: return EntryFieldName.Title; - case PwDefs.UserNameField: return EntryFieldName.UserName; - case PwDefs.PasswordField: return EntryFieldName.Password; - case PwDefs.NotesField: return EntryFieldName.Notes; - case PwDefs.UrlField: return EntryFieldName.Url; - default: return value; - } - } - public static string MapFieldToPwDef(string value) - { - switch (value) - { - case EntryFieldName.Title: return PwDefs.TitleField; - case EntryFieldName.UserName: return PwDefs.UserNameField; - case EntryFieldName.Password: return PwDefs.PasswordField; - case EntryFieldName.Notes: return PwDefs.NotesField; - case EntryFieldName.Url: return PwDefs.UrlField; - default: return value; - } - } - } -} \ No newline at end of file diff --git a/ModernKeePass.Infrastructure/KeePass/KeePassDatabaseClient.cs b/ModernKeePass.Infrastructure/KeePass/KeePassDatabaseClient.cs index a3ffba3..48d4f94 100644 --- a/ModernKeePass.Infrastructure/KeePass/KeePassDatabaseClient.cs +++ b/ModernKeePass.Infrastructure/KeePass/KeePassDatabaseClient.cs @@ -248,15 +248,6 @@ namespace ModernKeePass.Infrastructure.KeePass switch (fieldName) { - case EntryFieldName.Title: - case EntryFieldName.UserName: - case EntryFieldName.Password: - case EntryFieldName.Notes: - case EntryFieldName.Url: - var stringValue = fieldValue == null ? string.Empty: fieldValue.ToString(); - var unprotectedFieldValue = isProtected ? await _cryptography.UnProtect(stringValue) : stringValue; - pwEntry.Strings.Set(EntryFieldMapper.MapFieldToPwDef(fieldName), new ProtectedString(isProtected, unprotectedFieldValue)); - break; case EntryFieldName.HasExpirationDate: pwEntry.Expires = (bool)fieldValue; break; @@ -273,9 +264,9 @@ namespace ModernKeePass.Infrastructure.KeePass pwEntry.ForegroundColor = (Color)fieldValue; break; default: - var additionalStringValue = fieldValue == null ? string.Empty: fieldValue.ToString(); - var unprotectedAdditionalFieldValue = isProtected ? await _cryptography.UnProtect(additionalStringValue) : additionalStringValue; - pwEntry.Strings.Set(fieldName, new ProtectedString(isProtected, unprotectedAdditionalFieldValue)); + var stringValue = fieldValue == null ? string.Empty: fieldValue.ToString(); + var unprotectedFieldValue = isProtected ? await _cryptography.UnProtect(stringValue) : stringValue; + pwEntry.Strings.Set(fieldName, new ProtectedString(isProtected, unprotectedFieldValue)); break; } } diff --git a/ModernKeePass/ViewModels/EntryDetailVm.cs b/ModernKeePass/ViewModels/EntryDetailVm.cs index 2050f9d..c3ee03d 100644 --- a/ModernKeePass/ViewModels/EntryDetailVm.cs +++ b/ModernKeePass/ViewModels/EntryDetailVm.cs @@ -121,7 +121,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.Title.Value = value; - SetFieldValue(nameof(Title), value, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(SelectedItem.Title.Name, value, false).ConfigureAwait(false).GetAwaiter(); } } @@ -131,7 +131,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.Username.Value = value; - SetFieldValue(nameof(UserName), value, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(SelectedItem.Username.Name, value, false).ConfigureAwait(false).GetAwaiter(); RaisePropertyChanged(nameof(UserName)); } } @@ -143,7 +143,7 @@ namespace ModernKeePass.ViewModels { var protectedPassword = _cryptography.Protect(value).ConfigureAwait(false).GetAwaiter().GetResult(); SelectedItem.Password.Value = protectedPassword; - SetFieldValue(nameof(Password), protectedPassword, true).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(SelectedItem.Password.Name, protectedPassword, true).ConfigureAwait(false).GetAwaiter(); RaisePropertyChanged(nameof(Password)); } @@ -155,7 +155,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.Url.Value = value; - SetFieldValue(nameof(Url), value, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(SelectedItem.Url.Name, value, false).ConfigureAwait(false).GetAwaiter(); RaisePropertyChanged(nameof(Url)); } } @@ -166,7 +166,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.Notes.Value = value; - SetFieldValue(nameof(Notes), value, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(SelectedItem.Notes.Name, value, false).ConfigureAwait(false).GetAwaiter(); } } @@ -176,7 +176,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.Icon = (Icon)Enum.Parse(typeof(Icon), value.ToString()); - SetFieldValue(nameof(Icon), SelectedItem.Icon, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.Icon, SelectedItem.Icon, false).ConfigureAwait(false).GetAwaiter(); } } @@ -188,7 +188,7 @@ namespace ModernKeePass.ViewModels if (!HasExpirationDate) return; SelectedItem.ExpirationDate = value.Date; - SetFieldValue("ExpirationDate", SelectedItem.ExpirationDate, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.ExpirationDate, SelectedItem.ExpirationDate, false).ConfigureAwait(false).GetAwaiter(); } } @@ -200,7 +200,7 @@ namespace ModernKeePass.ViewModels if (!HasExpirationDate) return; SelectedItem.ExpirationDate = SelectedItem.ExpirationDate.Date.Add(value); - SetFieldValue("ExpirationDate", SelectedItem.ExpirationDate, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.ExpirationDate, SelectedItem.ExpirationDate, false).ConfigureAwait(false).GetAwaiter(); } } @@ -210,7 +210,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.HasExpirationDate = value; - SetFieldValue(nameof(HasExpirationDate), value, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.HasExpirationDate, value, false).ConfigureAwait(false).GetAwaiter(); RaisePropertyChanged(nameof(HasExpirationDate)); } } @@ -221,7 +221,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.BackgroundColor = value.ToColor(); - SetFieldValue(nameof(BackgroundColor), SelectedItem.BackgroundColor, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.BackgroundColor, SelectedItem.BackgroundColor, false).ConfigureAwait(false).GetAwaiter(); } } @@ -231,7 +231,7 @@ namespace ModernKeePass.ViewModels set { SelectedItem.ForegroundColor = value.ToColor(); - SetFieldValue(nameof(ForegroundColor), SelectedItem.ForegroundColor, false).ConfigureAwait(false).GetAwaiter(); + SetFieldValue(EntryFieldName.ForegroundColor, SelectedItem.ForegroundColor, false).ConfigureAwait(false).GetAwaiter(); } } @@ -316,7 +316,7 @@ namespace ModernKeePass.ViewModels public async Task AddHistory() { - if (_isDirty) await _mediator.Send(new AddHistoryCommand { Entry = History[0] }); + if (_isDirty && Database.IsOpen) await _mediator.Send(new AddHistoryCommand { Entry = History[0] }); } public void GoToGroup(string groupId) diff --git a/ModernKeePass/Views/UserControls/PasswordGenerationBox.xaml b/ModernKeePass/Views/UserControls/PasswordGenerationBox.xaml index 1e3b77b..ff62e66 100644 --- a/ModernKeePass/Views/UserControls/PasswordGenerationBox.xaml +++ b/ModernKeePass/Views/UserControls/PasswordGenerationBox.xaml @@ -361,7 +361,7 @@ BorderBrush="{Binding BorderBrush, ElementName=UserControl}" />