using System.Collections.Generic; using System.Threading.Tasks; using MediatR; using ModernKeePass.Application.Common.Interfaces; using ModernKeePass.Application.Database.Commands.CloseDatabase; using ModernKeePass.Application.Database.Commands.SaveDatabase; namespace ModernKeePass.Application.Common.Behaviors { public class SetDirtyBehavior : IPipelineBehavior { private readonly List _excludedCommands = new List {nameof(SaveDatabaseCommand), nameof(CloseDatabaseCommand)}; private readonly IDatabaseProxy _database; public SetDirtyBehavior(IDatabaseProxy database) { _database = database; } public async Task Handle(TRequest request, RequestHandlerDelegate next) { var response = await next(); var queryName = typeof(TRequest).Name; if (queryName.Contains("Command") && !_excludedCommands.Contains(queryName)) { _database.IsDirty = true; } return response; } } }