mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Handle entities with id
No hierarchy is built anymore WIP save issues after delete
This commit is contained in:
@@ -20,6 +20,7 @@ namespace ModernKeePass.Infrastructure.KeePass
|
||||
Uri url;
|
||||
CreateMap<PwEntry, EntryEntity>()
|
||||
.ForMember(dest => dest.ParentId, opt => opt.MapFrom(src => src.ParentGroup.Uuid.ToHexString()))
|
||||
.ForMember(dest => dest.ParentName, opt => opt.MapFrom(src => src.ParentGroup.Name))
|
||||
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Uuid.ToHexString()))
|
||||
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => GetEntryValue(src, PwDefs.TitleField)))
|
||||
.ForMember(dest => dest.UserName, opt => opt.MapFrom(src => GetEntryValue(src, PwDefs.UserNameField)))
|
||||
@@ -39,9 +40,7 @@ namespace ModernKeePass.Infrastructure.KeePass
|
||||
.ForMember(dest => dest.AdditionalFields, opt => opt.MapFrom(src =>
|
||||
src.Strings.Where(s => !PwDefs.GetStandardFields().Contains(s.Key))
|
||||
.ToDictionary(s => s.Key, s => GetEntryValue(src, s.Key))))
|
||||
.ForMember(dest => dest.LastModificationDate,
|
||||
opt => opt.MapFrom(src => new DateTimeOffset(src.LastModificationTime)))
|
||||
.MaxDepth(1);
|
||||
.ForMember(dest => dest.LastModificationDate, opt => opt.MapFrom(src => new DateTimeOffset(src.LastModificationTime)));
|
||||
}
|
||||
|
||||
private void FromModelToDto()
|
||||
|
@@ -16,13 +16,14 @@ namespace ModernKeePass.Infrastructure.KeePass
|
||||
{
|
||||
CreateMap<PwGroup, GroupEntity>()
|
||||
.ForMember(d => d.ParentId, opts => opts.MapFrom(s => s.ParentGroup.Uuid.ToHexString()))
|
||||
.ForMember(d => d.ParentName, opts => opts.MapFrom(s => s.ParentGroup.Name))
|
||||
.ForMember(d => d.Id, opts => opts.MapFrom(s => s.Uuid.ToHexString()))
|
||||
.ForMember(d => d.Name, opts => opts.MapFrom(s => s.Name))
|
||||
.ForMember(d => d.Icon, opts => opts.MapFrom(s => IconMapper.MapPwIconToIcon(s.IconId)))
|
||||
.ForMember(d => d.LastModificationDate, opts => opts.MapFrom(s => s.LastModificationTime))
|
||||
.ForMember(d => d.Entries, opts => opts.MapFrom(s => s.Entries))
|
||||
.ForMember(d => d.SubGroups, opts => opts.MapFrom(s => s.Groups))
|
||||
.MaxDepth(1);
|
||||
.MaxDepth(2);
|
||||
}
|
||||
|
||||
private void FromModelToDto()
|
||||
|
@@ -194,36 +194,64 @@ namespace ModernKeePass.Infrastructure.KeePass
|
||||
parentPwGroup.Groups.Add(pwGroup);
|
||||
});
|
||||
}
|
||||
public async Task RemoveEntry(string parentGroupId, string entryId, bool isToBeDeleted)
|
||||
public async Task RemoveEntry(string parentGroupId, string entryId)
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
var parentPwGroup = _pwDatabase.RootGroup.FindGroup(BuildIdFromString(parentGroupId), true);
|
||||
var pwEntry = parentPwGroup.FindEntry(BuildIdFromString(entryId), false);
|
||||
parentPwGroup.Entries.Remove(pwEntry);
|
||||
|
||||
if (isToBeDeleted && (!_pwDatabase.RecycleBinEnabled || parentPwGroup.Uuid.Equals(_pwDatabase.RecycleBinUuid)))
|
||||
{
|
||||
_pwDatabase.DeletedObjects.Add(new PwDeletedObject(pwEntry.Uuid, _dateTime.Now));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async Task RemoveGroup(string parentGroupId, string groupId, bool isToBeDeleted)
|
||||
public async Task RemoveGroup(string parentGroupId, string groupId)
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
var parentPwGroup = _pwDatabase.RootGroup.FindGroup(BuildIdFromString(parentGroupId), true);
|
||||
var pwGroup = parentPwGroup.FindGroup(BuildIdFromString(groupId), false);
|
||||
parentPwGroup.Groups.Remove(pwGroup);
|
||||
|
||||
if (isToBeDeleted && (!_pwDatabase.RecycleBinEnabled || parentPwGroup.Uuid.Equals(_pwDatabase.RecycleBinUuid)))
|
||||
{
|
||||
_pwDatabase.DeletedObjects.Add(new PwDeletedObject(pwGroup.Uuid, _dateTime.Now));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async Task DeleteEntry(string parentGroupId, string entryId, string recycleBinName)
|
||||
{
|
||||
if (IsRecycleBinEnabled && (string.IsNullOrEmpty(RecycleBinId) || _pwDatabase.RecycleBinUuid.Equals(PwUuid.Zero)))
|
||||
{
|
||||
CreateGroup(RootGroupId, recycleBinName, true);
|
||||
}
|
||||
|
||||
if (!IsRecycleBinEnabled || parentGroupId.Equals(RecycleBinId))
|
||||
{
|
||||
_pwDatabase.DeletedObjects.Add(new PwDeletedObject(BuildIdFromString(entryId), _dateTime.Now));
|
||||
}
|
||||
else
|
||||
{
|
||||
await AddEntry(RecycleBinId, entryId);
|
||||
}
|
||||
|
||||
await RemoveEntry(parentGroupId, entryId);
|
||||
}
|
||||
|
||||
public async Task DeleteGroup(string parentGroupId, string groupId, string recycleBinName)
|
||||
{
|
||||
if (IsRecycleBinEnabled && (string.IsNullOrEmpty(RecycleBinId) || _pwDatabase.RecycleBinUuid.Equals(PwUuid.Zero)))
|
||||
{
|
||||
CreateGroup(RootGroupId, recycleBinName, true);
|
||||
}
|
||||
|
||||
if (!IsRecycleBinEnabled || parentGroupId.Equals(RecycleBinId))
|
||||
{
|
||||
_pwDatabase.DeletedObjects.Add(new PwDeletedObject(BuildIdFromString(groupId), _dateTime.Now));
|
||||
}
|
||||
else
|
||||
{
|
||||
await AddEntry(RecycleBinId, groupId);
|
||||
}
|
||||
|
||||
await RemoveGroup(parentGroupId, groupId);
|
||||
}
|
||||
|
||||
public void UpdateEntry(string entryId, string fieldName, object fieldValue)
|
||||
{
|
||||
var pwEntry = _pwDatabase.RootGroup.FindEntry(BuildIdFromString(entryId), true);
|
||||
|
Reference in New Issue
Block a user