mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Remove entry from mru when it does not exist anymore
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Storage;
|
||||
@@ -38,10 +39,21 @@ namespace ModernKeePass.Infrastructure.UWP
|
||||
private async Task<StorageFile> GetFile(string token)
|
||||
{
|
||||
if (StorageApplicationPermissions.MostRecentlyUsedList.ContainsItem(token))
|
||||
return await StorageApplicationPermissions.MostRecentlyUsedList.GetFileAsync(token).AsTask();
|
||||
{
|
||||
try
|
||||
{
|
||||
return await StorageApplicationPermissions.MostRecentlyUsedList.GetFileAsync(token).AsTask();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
StorageApplicationPermissions.MostRecentlyUsedList.Remove(token);
|
||||
throw new FileNotFoundException();
|
||||
}
|
||||
}
|
||||
|
||||
if (StorageApplicationPermissions.FutureAccessList.ContainsItem(token))
|
||||
return await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token).AsTask();
|
||||
return null;
|
||||
throw new FileNotFoundException();
|
||||
}
|
||||
}
|
||||
}
|
@@ -267,4 +267,10 @@
|
||||
<data name="CompositeKeyOpenButtonLabel" xml:space="preserve">
|
||||
<value>Open</value>
|
||||
</data>
|
||||
<data name="FileNotFoundDescription" xml:space="preserve">
|
||||
<value>File does not exist anymore</value>
|
||||
</data>
|
||||
<data name="FileNotFoundTitle" xml:space="preserve">
|
||||
<value>File not found</value>
|
||||
</data>
|
||||
</root>
|
@@ -267,4 +267,10 @@
|
||||
<data name="CompositeKeyOpenButtonLabel" xml:space="preserve">
|
||||
<value>Open</value>
|
||||
</data>
|
||||
<data name="FileNotFoundDescription" xml:space="preserve">
|
||||
<value>Le fichier n'existe plus.</value>
|
||||
</data>
|
||||
<data name="FileNotFoundTitle" xml:space="preserve">
|
||||
<value>Fichier manquant</value>
|
||||
</data>
|
||||
</root>
|
7
WinAppCommon/Messages/FileNotFoundMessage.cs
Normal file
7
WinAppCommon/Messages/FileNotFoundMessage.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Messages
|
||||
{
|
||||
public class FileNotFoundMessage
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@@ -3,13 +3,14 @@ using System.Linq;
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using Messages;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
using ModernKeePass.Domain.Interfaces;
|
||||
using ModernKeePass.ViewModels.ListItems;
|
||||
|
||||
namespace ModernKeePass.ViewModels
|
||||
{
|
||||
public class RecentVm : ObservableObject, IHasSelectableObject
|
||||
public class RecentVm : ViewModelBase, IHasSelectableObject
|
||||
{
|
||||
private readonly IRecentProxy _recent;
|
||||
private ISelectableModel _selectedItem;
|
||||
@@ -45,13 +46,18 @@ namespace ModernKeePass.ViewModels
|
||||
{
|
||||
_recent = recent;
|
||||
ClearAllCommand = new RelayCommand(ClearAll);
|
||||
|
||||
PopulateRecentItems();
|
||||
MessengerInstance.Register<FileNotFoundMessage>(this, _ => PopulateRecentItems());
|
||||
}
|
||||
|
||||
private void PopulateRecentItems()
|
||||
{
|
||||
var recentItems = _recent.GetAll().Select(r => new RecentItemVm(r));
|
||||
RecentItems = new ObservableCollection<RecentItemVm>(recentItems);
|
||||
if (RecentItems.Count > 0)
|
||||
SelectedItem = RecentItems[0];
|
||||
}
|
||||
|
||||
|
||||
private void ClearAll()
|
||||
{
|
||||
_recent.ClearAll();
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using GalaSoft.MvvmLight;
|
||||
@@ -95,6 +96,7 @@ namespace ModernKeePass.ViewModels
|
||||
|
||||
private readonly IMediator _mediator;
|
||||
private readonly IResourceProxy _resource;
|
||||
private readonly INotificationService _notification;
|
||||
private bool _hasPassword;
|
||||
private bool _hasKeyFile;
|
||||
private bool _isOpening;
|
||||
@@ -105,10 +107,11 @@ namespace ModernKeePass.ViewModels
|
||||
private string _keyFileText;
|
||||
private string _openButtonLabel;
|
||||
|
||||
public OpenDatabaseControlVm(IMediator mediator, IResourceProxy resource)
|
||||
public OpenDatabaseControlVm(IMediator mediator, IResourceProxy resource, INotificationService notification)
|
||||
{
|
||||
_mediator = mediator;
|
||||
_resource = resource;
|
||||
_notification = notification;
|
||||
OpenDatabaseCommand = new RelayCommand<string>(async databaseFilePath => await TryOpenDatabase(databaseFilePath), _ => IsValid);
|
||||
_keyFileText = _resource.GetResourceValue("CompositeKeyDefaultKeyFile");
|
||||
_openButtonLabel = _resource.GetResourceValue("CompositeKeyOpenButtonLabel");
|
||||
@@ -153,6 +156,13 @@ namespace ModernKeePass.ViewModels
|
||||
if (HasKeyFile) errorMessage.AppendLine(_resource.GetResourceValue("CompositeKeyErrorUserKeyFile"));
|
||||
UpdateStatus(errorMessage.ToString(), StatusTypes.Error);
|
||||
}
|
||||
catch (FileNotFoundException)
|
||||
{
|
||||
_notification.Show(
|
||||
$"{_resource.GetResourceValue("FileNotFoundTitle")}",
|
||||
$"{_resource.GetResourceValue("FileNotFoundDescription")}");
|
||||
MessengerInstance.Send(new FileNotFoundMessage());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var error = $"{_resource.GetResourceValue("CompositeKeyErrorOpen")}{e.Message}";
|
||||
|
@@ -36,6 +36,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\DatabaseClosedMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\DatabaseOpenedMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\DatabaseOpeningMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\FileNotFoundMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\NavigateToPageMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Messages\SaveErrorMessage.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)TemplateSelectors\FirstItemDataTemplateSelector.cs" />
|
||||
|
Reference in New Issue
Block a user