Skip to content

Commit

Permalink
Improve Snackbar feedbacks
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxhy committed May 23, 2024
1 parent 43d6ce8 commit d19ad5f
Show file tree
Hide file tree
Showing 15 changed files with 69 additions and 26 deletions.
4 changes: 3 additions & 1 deletion KeyManager.Library.KeyStore.HSM_PKCS11/PKCS11KeyStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,9 @@ public override async Task Store(IList<IChangeKeyEntry> changes)
}
else
{
log.Info(string.Format("Key Entry `{0}` already exists, skipping update as key generation was expected.", change.Identifier));
string msg = string.Format("Key Entry `{0}` already exists, skipping key generation update.", change.Identifier);
log.Info(msg);
OnUserMessageNotified(msg);
}
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Leosac.WpfApp" Version="1.19.0">
<PackageReference Include="Leosac.WpfApp" Version="1.20.1">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="MaterialDesignThemes" Version="4.9.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Leosac.WpfApp" Version="1.19.0">
<PackageReference Include="Leosac.WpfApp" Version="1.20.1">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="MaterialDesignThemes" Version="4.9.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Leosac.WpfApp" Version="1.19.0">
<PackageReference Include="Leosac.WpfApp" Version="1.20.1">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="MaterialDesignThemes" Version="4.9.0">
Expand Down
6 changes: 3 additions & 3 deletions KeyManager.Library.UI/Favorites.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ public Favorites()
}
}

public override void SaveToFile()
public override bool SaveToFile()
{
if (!string.IsNullOrEmpty(_settings?.FavoritesPath))
{
SaveToFile(_settings.FavoritesPath);
return SaveToFile(_settings.FavoritesPath);
}
else
{
base.SaveToFile();
return base.SaveToFile();
}
}

Expand Down
2 changes: 1 addition & 1 deletion KeyManager.Library.UI/KeyManager.Library.UI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Leosac.WpfApp" Version="1.19.0" />
<PackageReference Include="Leosac.WpfApp" Version="1.20.1" />
<PackageReference Include="MaterialDesignThemes" Version="4.9.0" />
<PackageReference Include="Net.Codecrete.QrCodeGenerator" Version="2.0.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
Expand Down
8 changes: 7 additions & 1 deletion KeyManager.Library/KeyStore/KeyEntryId.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,13 @@ public bool Equals(KeyEntryId? p)

public override string ToString()
{
return string.Format("Key Entry Id (Identifier: `{0}`, Label: `{1}`)", Id, Label);
var str = string.Format("Key Entry Id (Identifier: `{0}`", Id);
if (!string.IsNullOrEmpty(Label))
{
str += string.Format(", Label: `{0}`", Label);
}
str += ")";
return str;
}

public object Clone()
Expand Down
7 changes: 7 additions & 0 deletions KeyManager.Library/KeyStore/KeyStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -499,6 +499,11 @@ protected void OnKeyEntryUpdated(IChangeKeyEntry keyEntry)
KeyEntryUpdated?.Invoke(this, keyEntry);
}

protected void OnUserMessageNotified(string message)
{
UserMessageNotified?.Invoke(this, message);
}

/// <summary>
/// Get a key from a key entry.
/// </summary>
Expand Down Expand Up @@ -661,5 +666,7 @@ protected void OnKeyEntryUpdated(IChangeKeyEntry keyEntry)
public event EventHandler<KeyEntry>? KeyEntryRetrieved;

public event EventHandler<IChangeKeyEntry>? KeyEntryUpdated;

public event EventHandler<string>? UserMessageNotified;
}
}
21 changes: 11 additions & 10 deletions KeyManager/Domain/EditKeyStoreControlViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class EditKeyStoreControlViewModel : ObservableValidator
public EditKeyStoreControlViewModel(ISnackbarMessageQueue snackbarMessageQueue)
{
_showProgress = false;
_snackbarMessageQueue = snackbarMessageQueue;
SnackbarMessageQueue = snackbarMessageQueue;
Tabs = new ObservableCollection<TabItem>();
_keModels = new List<KeyEntriesControlViewModel>();
RefreshKeyEntriesCommand = new AsyncRelayCommand(() => RefreshKeyEntries(500));
Expand All @@ -38,7 +38,7 @@ public EditKeyStoreControlViewModel(ISnackbarMessageQueue snackbarMessageQueue)
});
}

protected ISnackbarMessageQueue _snackbarMessageQueue;
public ISnackbarMessageQueue SnackbarMessageQueue { get; private set; }

protected IList<KeyEntriesControlViewModel> _keModels;
protected void OnKeyStoreUpdated()
Expand Down Expand Up @@ -135,7 +135,7 @@ public async Task OpenKeyStore()
var classes = KeyStore.SupportedClasses;
foreach (var kclass in classes)
{
var model = new KeyEntriesControlViewModel(_snackbarMessageQueue, kclass) { KeyStore = KeyStore };
var model = new KeyEntriesControlViewModel(SnackbarMessageQueue, kclass) { KeyStore = KeyStore };
model.DefaultKeyEntryUpdated += (sender, e) =>
{
OnKeyStoreUpdated();
Expand Down Expand Up @@ -177,7 +177,7 @@ public async Task RefreshKeyEntries(int delay)
}
catch(Exception ex)
{
SnackbarHelper.EnqueueError(_snackbarMessageQueue, ex, "Key Store Error");
SnackbarHelper.EnqueueError(SnackbarMessageQueue, ex, "Key Store Error");
}
IsLoadingKeyEntries = false;
}
Expand Down Expand Up @@ -274,6 +274,7 @@ public async Task<bool> RunOnKeyStore(UserControl dialog, Func<KeyStore, Func<st
deststore.Properties = prop;
deststore.KeyEntryRetrieved += (sender, e) => ProgressValue++;
deststore.KeyEntryUpdated += (sender, e) => ProgressValue++;
deststore.UserMessageNotified += (sender, e) => SnackbarHelper.EnqueueMessage(SnackbarMessageQueue, e);
deststore.Options = model.Options;
KeyStore!.Options = model.Options; // Options object contains information for source and destination key stores, this should probably be splitted...
var initCallback = new Action<KeyStore, KeyEntryClass, int>((_, _, nbentries) =>
Expand Down Expand Up @@ -340,17 +341,17 @@ public async Task Publish()
{
if (await RunOnKeyStore(new PublishKeyStoreDialog(), KeyStore.Publish))
{
SnackbarHelper.EnqueueMessage(_snackbarMessageQueue, "Key Entries have been successfully published.");
SnackbarHelper.EnqueueMessage(SnackbarMessageQueue, "Key Entries have been successfully published.");
}
}
catch (KeyStoreException ex)
{
SnackbarHelper.EnqueueError(_snackbarMessageQueue, ex, "Key Store Error");
SnackbarHelper.EnqueueError(SnackbarMessageQueue, ex, "Key Store Error");
}
catch (Exception ex)
{
log.Error("Publishing the Key Entries failed unexpected.", ex);
SnackbarHelper.EnqueueError(_snackbarMessageQueue, ex);
SnackbarHelper.EnqueueError(SnackbarMessageQueue, ex);
}
}
}
Expand All @@ -363,17 +364,17 @@ public async Task Diff()
{
if (await RunOnKeyStore(new DiffKeyStoreDialog(), KeyStore.Diff))
{
SnackbarHelper.EnqueueMessage(_snackbarMessageQueue, "No differences found.");
SnackbarHelper.EnqueueMessage(SnackbarMessageQueue, "No differences found.");
}
}
catch (KeyStoreException ex)
{
SnackbarHelper.EnqueueError(_snackbarMessageQueue, ex, "Key Store Error");
SnackbarHelper.EnqueueError(SnackbarMessageQueue, ex, "Key Store Error");
}
catch (Exception ex)
{
log.Error("Comparing the Key Entries failed unexpected.", ex);
SnackbarHelper.EnqueueError(_snackbarMessageQueue, ex);
SnackbarHelper.EnqueueError(SnackbarMessageQueue, ex);
}
}
}
Expand Down
1 change: 1 addition & 0 deletions KeyManager/KMLeosacAppInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public override void InitializeMainWindow(MainWindowViewModel model)
// Ensure everything is back to original state
editModel.CloseKeyStore(false);
editModel.KeyStore = ks;
editModel.KeyStore.UserMessageNotified += (sender, e) => SnackbarHelper.EnqueueMessage(editModel.SnackbarMessageQueue, e);
editModel.Favorite = fav;
await editModel.OpenKeyStore();
Expand Down
2 changes: 1 addition & 1 deletion KeyManager/KeyManager.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Leosac.WpfApp" Version="1.19.0" />
<PackageReference Include="Leosac.WpfApp" Version="1.20.1" />
<PackageReference Include="log4net" Version="2.0.17" />
<PackageReference Include="MaterialDesignThemes" Version="4.9.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
Expand Down
18 changes: 18 additions & 0 deletions KeyManager/Properties/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions KeyManager/Properties/Resources.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@
<data name="EditFavorite" xml:space="preserve">
<value>Modifier le magasin de clés favoris</value>
</data>
<data name="Error" xml:space="preserve">
<value>Erreur</value>
</data>
<data name="Export" xml:space="preserve">
<value>Exporter</value>
</data>
Expand Down Expand Up @@ -222,6 +225,9 @@
<data name="Save" xml:space="preserve">
<value>Enregistrer</value>
</data>
<data name="SaveConfigFileError" xml:space="preserve">
<value>Le fichier de configuration ne peut pas être sauvegardé. Merci de vérifier les permissions de votre compte utilisateur.</value>
</data>
<data name="Search" xml:space="preserve">
<value>Rechercher</value>
</data>
Expand Down
6 changes: 6 additions & 0 deletions KeyManager/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@
<data name="EditFavorite" xml:space="preserve">
<value>Edit the Key Store Favorite</value>
</data>
<data name="Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="Export" xml:space="preserve">
<value>Export</value>
</data>
Expand Down Expand Up @@ -228,6 +231,9 @@
<data name="Save" xml:space="preserve">
<value>Save</value>
</data>
<data name="SaveConfigFileError" xml:space="preserve">
<value>The configuration file cannot be saved. Please check your user account permissions.</value>
</data>
<data name="Search" xml:space="preserve">
<value>Search</value>
</data>
Expand Down
8 changes: 2 additions & 6 deletions KeyManager/SettingsWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,9 @@ private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs
{
if (DataContext is KMSettings settings)
{
try
if (!settings.SaveToFile())
{
settings.SaveToFile();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
MessageBox.Show(Properties.Resources.SaveConfigFileError, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
Expand Down

0 comments on commit d19ad5f

Please sign in to comment.