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:
Geoffroy BONNEVILLE
2020-04-06 20:20:45 +02:00
parent e795a8c3c4
commit 56d93a5187
292 changed files with 48614 additions and 837 deletions

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}
}

View File

@@ -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
});
}
}
}

View File

@@ -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
{

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}