mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Moved application code to the Application layer
Imported Win10 project Code cleanup WIP - Use common UWP services for Win8.1 and Win10
This commit is contained in:
@@ -7,6 +7,7 @@ namespace ModernKeePass.Application.Common.Interfaces
|
||||
{
|
||||
public interface IDatabaseProxy
|
||||
{
|
||||
string ZeroId { get; }
|
||||
bool IsOpen { get; }
|
||||
string Name { get; }
|
||||
string RootGroupId { get; }
|
||||
@@ -15,14 +16,14 @@ namespace ModernKeePass.Application.Common.Interfaces
|
||||
string KeyDerivationId { get; set; }
|
||||
string Compression { get; set; }
|
||||
bool IsRecycleBinEnabled { get; set; }
|
||||
string FileAccessToken { get; set; }
|
||||
|
||||
Task Open(FileInfo fileInfo, Credentials credentials);
|
||||
Task ReOpen();
|
||||
Task Create(FileInfo fileInfo, Credentials credentials, DatabaseVersion version = DatabaseVersion.V2);
|
||||
Task SaveDatabase();
|
||||
Task SaveDatabase(string filePath);
|
||||
void SetRecycleBin(string id);
|
||||
Task UpdateCredentials(Credentials credentials);
|
||||
Task Open(byte[] file, Credentials credentials);
|
||||
Task ReOpen(byte[] file);
|
||||
Task Create(byte[] file, Credentials credentials, DatabaseVersion version = DatabaseVersion.V2);
|
||||
Task<byte[]> SaveDatabase();
|
||||
Task<byte[]> SaveDatabase(byte[] newFileContents);
|
||||
void UpdateCredentials(Credentials credentials);
|
||||
void CloseDatabase();
|
||||
|
||||
Task AddEntry(string parentGroupId, string entryId);
|
||||
@@ -32,8 +33,7 @@ namespace ModernKeePass.Application.Common.Interfaces
|
||||
void UpdateGroup(string groupId);
|
||||
Task RemoveEntry(string parentGroupId, string entryId);
|
||||
Task RemoveGroup(string parentGroupId, string groupId);
|
||||
Task DeleteEntry(string parentGroupId, string entryId, string recycleBinName);
|
||||
Task DeleteGroup(string parentGroupId, string groupId, string recycleBinName);
|
||||
void DeleteEntity(string entityId);
|
||||
EntryEntity CreateEntry(string parentGroupId);
|
||||
GroupEntity CreateGroup(string parentGroupId, string nameId, bool isRecycleBin = false);
|
||||
void SortEntries(string groupId);
|
||||
|
@@ -5,6 +5,6 @@ namespace ModernKeePass.Application.Common.Interfaces
|
||||
{
|
||||
public interface IImportFormat
|
||||
{
|
||||
Task<List<Dictionary<string, string>>> Import(string path);
|
||||
Task<List<Dictionary<string, string>>> Import(IList<string> fileContents);
|
||||
}
|
||||
}
|
@@ -9,15 +9,19 @@ namespace ModernKeePass.Application.Database.Commands.CloseDatabase
|
||||
public class CloseDatabaseCommandHandler : IRequestHandler<CloseDatabaseCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public CloseDatabaseCommandHandler(IDatabaseProxy database)
|
||||
public CloseDatabaseCommandHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
public void Handle(CloseDatabaseCommand message)
|
||||
{
|
||||
if (_database.IsOpen) _database.CloseDatabase();
|
||||
else throw new DatabaseClosedException();
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
_database.CloseDatabase();
|
||||
_file.ReleaseFile(_database.FileAccessToken);
|
||||
_database.FileAccessToken = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -15,26 +15,26 @@ namespace ModernKeePass.Application.Database.Commands.CreateDatabase
|
||||
public class CreateDatabaseCommandHandler : IAsyncRequestHandler<CreateDatabaseCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public CreateDatabaseCommandHandler(IDatabaseProxy database)
|
||||
public CreateDatabaseCommandHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
|
||||
public async Task Handle(CreateDatabaseCommand message)
|
||||
{
|
||||
if (_database.IsOpen) throw new DatabaseOpenException();
|
||||
|
||||
await _database.Create(
|
||||
new FileInfo
|
||||
{
|
||||
Path = message.FilePath
|
||||
},
|
||||
var file = await _file.OpenBinaryFile(message.FilePath);
|
||||
await _database.Create(file,
|
||||
new Credentials
|
||||
{
|
||||
KeyFilePath = message.KeyFilePath,
|
||||
KeyFileContents = await _file.OpenBinaryFile(message.KeyFilePath),
|
||||
Password = message.Password
|
||||
});
|
||||
_database.FileAccessToken = message.FilePath;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -12,18 +12,34 @@ namespace ModernKeePass.Application.Database.Commands.SaveDatabase
|
||||
public class SaveDatabaseCommandHandler : IAsyncRequestHandler<SaveDatabaseCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public SaveDatabaseCommandHandler(IDatabaseProxy database)
|
||||
public SaveDatabaseCommandHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
|
||||
public async Task Handle(SaveDatabaseCommand message)
|
||||
{
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
|
||||
if (string.IsNullOrEmpty(message.FilePath)) await _database.SaveDatabase();
|
||||
else await _database.SaveDatabase(message.FilePath);
|
||||
byte[] contents;
|
||||
if (string.IsNullOrEmpty(message.FilePath))
|
||||
{
|
||||
contents = await _database.SaveDatabase();
|
||||
await _file.WriteBinaryContentsToFile(_database.FileAccessToken, contents);
|
||||
}
|
||||
else
|
||||
{
|
||||
var newFileContents = await _file.OpenBinaryFile(message.FilePath);
|
||||
contents = await _database.SaveDatabase(newFileContents);
|
||||
await _file.WriteBinaryContentsToFile(message.FilePath, contents);
|
||||
|
||||
_file.ReleaseFile(_database.FileAccessToken);
|
||||
_database.FileAccessToken = message.FilePath;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -14,23 +14,22 @@ namespace ModernKeePass.Application.Database.Commands.UpdateCredentials
|
||||
public class UpdateCredentialsCommandHandler : IAsyncRequestHandler<UpdateCredentialsCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public UpdateCredentialsCommandHandler(IDatabaseProxy database)
|
||||
public UpdateCredentialsCommandHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
|
||||
public async Task Handle(UpdateCredentialsCommand message)
|
||||
{
|
||||
if (_database.IsOpen)
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
_database.UpdateCredentials(new Credentials
|
||||
{
|
||||
await _database.UpdateCredentials(new Credentials
|
||||
{
|
||||
KeyFilePath = message.KeyFilePath,
|
||||
Password = message.Password
|
||||
});
|
||||
}
|
||||
else throw new DatabaseClosedException();
|
||||
KeyFileContents = await _file.OpenBinaryFile(message.KeyFilePath),
|
||||
Password = message.Password
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,6 @@
|
||||
using MediatR;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
using ModernKeePass.Application.Database.Models;
|
||||
using ModernKeePass.Application.Group.Models;
|
||||
|
||||
namespace ModernKeePass.Application.Database.Queries.GetDatabase
|
||||
{
|
||||
|
@@ -15,26 +15,25 @@ namespace ModernKeePass.Application.Database.Queries.OpenDatabase
|
||||
public class OpenDatabaseQueryHandler : IAsyncRequestHandler<OpenDatabaseQuery>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public OpenDatabaseQueryHandler(IDatabaseProxy database)
|
||||
public OpenDatabaseQueryHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
|
||||
public async Task Handle(OpenDatabaseQuery request)
|
||||
{
|
||||
if (_database.IsOpen) throw new DatabaseOpenException();
|
||||
|
||||
await _database.Open(
|
||||
new FileInfo
|
||||
var file = await _file.OpenBinaryFile(request.FilePath);
|
||||
await _database.Open(file, new Credentials
|
||||
{
|
||||
Path = request.FilePath
|
||||
},
|
||||
new Credentials
|
||||
{
|
||||
KeyFilePath = request.KeyFilePath,
|
||||
KeyFileContents = await _file.OpenBinaryFile(request.KeyFilePath),
|
||||
Password = request.Password
|
||||
});
|
||||
_database.FileAccessToken = request.FilePath;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -10,17 +10,20 @@ namespace ModernKeePass.Application.Database.Queries.ReOpenDatabase
|
||||
public class ReOpenDatabaseQueryHandler : IAsyncRequestHandler<ReOpenDatabaseQuery>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IFileProxy _file;
|
||||
|
||||
public ReOpenDatabaseQueryHandler(IDatabaseProxy database)
|
||||
public ReOpenDatabaseQueryHandler(IDatabaseProxy database, IFileProxy file)
|
||||
{
|
||||
_database = database;
|
||||
_file = file;
|
||||
}
|
||||
|
||||
public async Task Handle(ReOpenDatabaseQuery request)
|
||||
{
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
|
||||
await _database.ReOpen();
|
||||
var file = await _file.OpenBinaryFile(_database.FileAccessToken);
|
||||
await _database.ReOpen(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -24,7 +24,21 @@ namespace ModernKeePass.Application.Group.Commands.DeleteEntry
|
||||
{
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
|
||||
await _database.DeleteEntry(message.ParentGroupId, message.EntryId, message.RecycleBinName);
|
||||
if (_database.IsRecycleBinEnabled && (string.IsNullOrEmpty(_database.RecycleBinId) || _database.RecycleBinId.Equals(_database.ZeroId)))
|
||||
{
|
||||
_database.CreateGroup(_database.RootGroupId, message.RecycleBinName, true);
|
||||
}
|
||||
|
||||
if (!_database.IsRecycleBinEnabled || message.ParentGroupId.Equals(_database.RecycleBinId))
|
||||
{
|
||||
_database.DeleteEntity(message.EntryId);
|
||||
}
|
||||
else
|
||||
{
|
||||
await _database.AddEntry(_database.RecycleBinId, message.EntryId);
|
||||
}
|
||||
|
||||
await _database.RemoveEntry(message.ParentGroupId, message.EntryId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -24,7 +24,21 @@ namespace ModernKeePass.Application.Group.Commands.DeleteGroup
|
||||
{
|
||||
if (!_database.IsOpen) throw new DatabaseClosedException();
|
||||
|
||||
await _database.DeleteEntry(message.ParentGroupId, message.GroupId, message.RecycleBinName);
|
||||
if (_database.IsRecycleBinEnabled && (string.IsNullOrEmpty(_database.RecycleBinId) || _database.RecycleBinId.Equals(_database.ZeroId)))
|
||||
{
|
||||
_database.CreateGroup(_database.RootGroupId, message.RecycleBinName, true);
|
||||
}
|
||||
|
||||
if (!_database.IsRecycleBinEnabled || message.ParentGroupId.Equals(_database.RecycleBinId))
|
||||
{
|
||||
_database.DeleteEntity(message.GroupId);
|
||||
}
|
||||
else
|
||||
{
|
||||
await _database.AddGroup(_database.RecycleBinId, message.GroupId);
|
||||
}
|
||||
|
||||
await _database.RemoveGroup(message.ParentGroupId, message.GroupId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ namespace ModernKeePass.Application.Parameters.Commands.SetRecycleBin
|
||||
|
||||
public void Handle(SetRecycleBinCommand message)
|
||||
{
|
||||
if (_database.IsOpen) _database.SetRecycleBin(message.RecycleBinId);
|
||||
if (_database.IsOpen) _database.RecycleBinId = message.RecycleBinId;
|
||||
else throw new DatabaseClosedException();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user