diff --git a/src/PostIt/PostIt/Controls/StatusBar.axaml b/src/PostIt/PostIt/Controls/StatusBar.axaml
deleted file mode 100644
index eaa6f5a09..000000000
--- a/src/PostIt/PostIt/Controls/StatusBar.axaml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/PostIt/PostIt/Controls/StatusBar.axaml.cs b/src/PostIt/PostIt/Controls/StatusBar.axaml.cs
deleted file mode 100644
index 975f9b2f9..000000000
--- a/src/PostIt/PostIt/Controls/StatusBar.axaml.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Avalonia.Controls;
-
-namespace PostIt.Controls;
-
-public partial class StatusBar : UserControl
-{
- public StatusBar()
- {
- InitializeComponent();
- }
-}
diff --git a/src/PostIt/PostIt/ViewModels/ActionStatusViewModelExtensions.cs b/src/PostIt/PostIt/ViewModels/ActionStatusViewModelExtensions.cs
deleted file mode 100644
index 614d477c8..000000000
--- a/src/PostIt/PostIt/ViewModels/ActionStatusViewModelExtensions.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace PostIt.ViewModels;
-
-public interface IActionStatusViewModel
-{
- string StatusMessage { get; set; }
- StatusNotice ActionStatus { get; set; }
-}
-
-public static class ActionStatusViewModelExtensions
-{
- public static void SetInfoStatus(this IActionStatusViewModel viewModel, string message)
- => viewModel.SetStatus(message, StatusSeverity.Info);
-
- public static void SetWarningStatus(this IActionStatusViewModel viewModel, string message)
- => viewModel.SetStatus(message, StatusSeverity.Warning);
-
- public static void SetErrorStatus(this IActionStatusViewModel viewModel, string message)
- => viewModel.SetStatus(message, StatusSeverity.Error);
-
- public static void SetStatus(this IActionStatusViewModel viewModel, string message, StatusSeverity severity)
- {
- var normalizedMessage = string.IsNullOrWhiteSpace(message) ? "Pret." : message.Trim();
-
- viewModel.StatusMessage = normalizedMessage;
- viewModel.ActionStatus = severity switch
- {
- StatusSeverity.Error => StatusNotice.Error(normalizedMessage),
- StatusSeverity.Warning => StatusNotice.Warning(normalizedMessage),
- _ => StatusNotice.Info(normalizedMessage),
- };
- }
-}
\ No newline at end of file
diff --git a/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs b/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs
index bd13faf9b..2dc8938f3 100644
--- a/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs
@@ -13,7 +13,7 @@ using Yavsc.Api.Client;
namespace PostIt.ViewModels;
-public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewModel
+public partial class ActivitiesPageViewModel : ViewModelBase
{
private readonly ActivityApiClient _client;
private readonly BillingApiClient _billingClient;
@@ -43,9 +43,6 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
[ObservableProperty]
public partial string StatusMessage { get; set; } = "Choisissez une activité.";
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Choisissez une activité.");
-
public ActivityInfo? CurrentActivity => SelectedSpecialization ?? SelectedActivity;
public string SelectedActivityLabel => SelectedActivity?.Name ?? "(aucune activité)";
public string CurrentActivityLabel => CurrentActivity?.Name ?? "(aucune)";
@@ -89,11 +86,11 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
}
@@ -105,11 +102,11 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
}
@@ -126,7 +123,7 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
await ShowActivityAsync(first);
if (first is null)
{
- this.SetInfoStatus("Aucune activité disponible.");
+ StatusMessage = "Aucune activité disponible.";
}
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
@@ -134,14 +131,14 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
Activities = new ObservableCollection();
Specializations = new ObservableCollection();
Performers = new ObservableCollection();
- this.SetWarningStatus("Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
Activities = new ObservableCollection();
Specializations = new ObservableCollection();
Performers = new ObservableCollection();
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -233,19 +230,19 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
Performers = new ObservableCollection(items);
SelectedPerformer = null;
- this.SetInfoStatus($"{activity.Name} · {Performers.Count} utilisateur(s)");
+ StatusMessage = $"{activity.Name} · {Performers.Count} utilisateur(s)";
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
Performers = new ObservableCollection();
SelectedPerformer = null;
- this.SetWarningStatus("Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
Performers = new ObservableCollection();
SelectedPerformer = null;
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -262,7 +259,7 @@ public partial class ActivitiesPageViewModel : ViewModelBase, IActionStatusViewM
{
if (SelectedPerformer is null || CurrentActivity is null)
{
- this.SetWarningStatus("Sélectionnez un utilisateur et une activité avec formulaire.");
+ StatusMessage = "Sélectionnez un utilisateur et une activité avec formulaire.";
return;
}
diff --git a/src/PostIt/PostIt/ViewModels/AddCircleMemberDialogViewModel.cs b/src/PostIt/PostIt/ViewModels/AddCircleMemberDialogViewModel.cs
index 635073d1a..88d01335a 100644
--- a/src/PostIt/PostIt/ViewModels/AddCircleMemberDialogViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/AddCircleMemberDialogViewModel.cs
@@ -29,7 +29,7 @@ namespace PostIt.ViewModels;
/// CirclesPage then calls
/// .
///
-public partial class AddCircleMemberDialogViewModel : ViewModelBase, IActionStatusViewModel
+public partial class AddCircleMemberDialogViewModel : ViewModelBase
{
private readonly IUserDirectory _directory;
@@ -46,10 +46,7 @@ public partial class AddCircleMemberDialogViewModel : ViewModelBase, IActionStat
public partial bool IsBusy { get; set; }
[ObservableProperty]
- public partial string StatusMessage { get; set; } = "Pret.";
-
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
+ public partial string StatusMessage { get; set; } = string.Empty;
///
/// Raised when the user confirms a selection. The hosting
@@ -82,7 +79,7 @@ public partial class AddCircleMemberDialogViewModel : ViewModelBase, IActionStat
if (string.IsNullOrWhiteSpace(SearchQuery))
{
Results.Clear();
- this.SetWarningStatus("Tapez un nom ou un email");
+ StatusMessage = "Tapez un nom ou un email";
return;
}
@@ -91,11 +88,11 @@ public partial class AddCircleMemberDialogViewModel : ViewModelBase, IActionStat
{
var hits = await _directory.SearchAsync(SearchQuery, CancellationToken.None).ConfigureAwait(true);
Results = new ObservableCollection(hits ?? Array.Empty());
- this.SetInfoStatus($"{Results.Count} résultat(s)");
+ StatusMessage = $"{Results.Count} résultat(s)";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -113,20 +110,18 @@ public partial class AddCircleMemberDialogViewModel : ViewModelBase, IActionStat
{
if (Selected is null)
{
- this.SetWarningStatus("Sélectionnez un utilisateur");
+ StatusMessage = "Sélectionnez un utilisateur";
return;
}
Confirmed?.Invoke(this, Selected);
- var app = App.Current as App
- ?? throw new InvalidOperationException("Application PostIt indisponible.");
+ var app = App.Current as App;
await app.GoBackAsync();
}
[RelayCommand]
public async Task CloseAsync()
{
- var app = App.Current as App
- ?? throw new InvalidOperationException("Application PostIt indisponible.");
+ var app = App.Current as App;
await app.GoBackAsync();
}
}
diff --git a/src/PostIt/PostIt/ViewModels/BillingQueriesPageViewModel.cs b/src/PostIt/PostIt/ViewModels/BillingQueriesPageViewModel.cs
index d3c097f43..d5aba0215 100644
--- a/src/PostIt/PostIt/ViewModels/BillingQueriesPageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/BillingQueriesPageViewModel.cs
@@ -14,7 +14,7 @@ using Yavsc.Abstract.Workflow;
namespace PostIt.ViewModels;
-public partial class BillingQueriesPageViewModel : ViewModelBase, IActionStatusViewModel
+public partial class BillingQueriesPageViewModel : ViewModelBase
{
private readonly BillingApiClient _billingClient;
@@ -36,9 +36,6 @@ public partial class BillingQueriesPageViewModel : ViewModelBase, IActionStatusV
[ObservableProperty]
public partial string StatusMessage { get; set; } = "Chargement des commandes...";
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Chargement des commandes...");
-
public string Title => IsReadOnly
? $"Demandes en cours ({Form.Title})"
: $"Commandes {Form.Title}";
@@ -93,17 +90,17 @@ public partial class BillingQueriesPageViewModel : ViewModelBase, IActionStatusV
.ToList();
Queries = new ObservableCollection(filtered);
- this.SetInfoStatus(BuildLoadedStatusMessage(filtered.Count));
+ StatusMessage = BuildLoadedStatusMessage(filtered.Count);
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
Queries = new ObservableCollection();
- this.SetWarningStatus("Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
Queries = new ObservableCollection();
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -116,13 +113,13 @@ public partial class BillingQueriesPageViewModel : ViewModelBase, IActionStatusV
{
if (IsReadOnly)
{
- this.SetWarningStatus("Mode lecture seule: l'ouverture en modification est désactivée.");
+ StatusMessage = "Mode lecture seule: l'ouverture en modification est désactivée.";
return;
}
if (SelectedQuery is null)
{
- this.SetWarningStatus("Sélectionnez une commande.");
+ StatusMessage = "Sélectionnez une commande.";
return;
}
@@ -142,11 +139,11 @@ public partial class BillingQueriesPageViewModel : ViewModelBase, IActionStatusV
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur lors de l'ouverture: {ex.Message}");
+ StatusMessage = $"Erreur lors de l'ouverture: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/CirclesPageViewModel.cs b/src/PostIt/PostIt/ViewModels/CirclesPageViewModel.cs
index cd068b4f4..9cee3ea8c 100644
--- a/src/PostIt/PostIt/ViewModels/CirclesPageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/CirclesPageViewModel.cs
@@ -34,7 +34,7 @@ namespace PostIt.ViewModels;
/// . The "remove"
/// command is per-row and runs inline.
///
-public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewModel
+public partial class CirclesPageViewModel : ViewModelBase
{
private readonly CircleApiClient _client;
@@ -63,10 +63,8 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
public partial bool IsBusy { get; set; }
[ObservableProperty]
- public partial string StatusMessage { get; set; } = "Pret.";
+ public partial string StatusMessage { get; set; } = string.Empty;
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
public CirclesPageViewModel(CircleApiClient client)
{
@@ -102,11 +100,11 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
{
var list = await _client.GetMyCirclesAsync();
Circles = new ObservableCollection(list ?? new());
- this.SetInfoStatus($"{Circles.Count} cercle(s)");
+ StatusMessage = $"{Circles.Count} cercle(s)";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -117,10 +115,8 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
[RelayCommand]
internal async Task OpenAddMemberAsync()
{
- var app = Application.Current as App
- ?? throw new InvalidOperationException("Application PostIt indisponible.");
- var services = app.ServiceProvider
- ?? throw new InvalidOperationException("ServiceProvider PostIt indisponible.");
+ var app = Application.Current as App;
+ var services = app?.ServiceProvider;
var directory = services.GetRequiredService();
AddCircleMemberDialogViewModel model =
new AddCircleMemberDialogViewModel(directory);
@@ -151,11 +147,11 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
{
var list = await _client.GetMembersAsync(circleId);
Members = new ObservableCollection(list ?? new());
- this.SetInfoStatus($"{Members.Count} membre(s)");
+ StatusMessage = $"{Members.Count} membre(s)";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
Members = new ObservableCollection();
}
finally
@@ -170,7 +166,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
SelectedCircle = null;
DraftName = string.Empty;
DraftPublic = false;
- this.SetInfoStatus("Nouveau cercle");
+ StatusMessage = "Nouveau cercle";
}
[RelayCommand]
@@ -180,7 +176,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
SelectedCircle = circle;
DraftName = circle.Name;
DraftPublic = circle.Public;
- this.SetInfoStatus($"Édition de « {circle.Name} »");
+ StatusMessage = $"Édition de « {circle.Name} »";
}
[RelayCommand]
@@ -188,7 +184,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
{
if (string.IsNullOrWhiteSpace(DraftName))
{
- this.SetWarningStatus("Le nom est obligatoire");
+ StatusMessage = "Le nom est obligatoire";
return;
}
@@ -202,22 +198,22 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
Name = DraftName.Trim(),
Public = DraftPublic,
});
- this.SetStatus(
- created is null ? "Création échouée" : $"Cercle « {created.Name} » créé",
- created is null ? StatusSeverity.Warning : StatusSeverity.Info);
+ StatusMessage = created is null
+ ? "Création échouée"
+ : $"Cercle « {created.Name} » créé";
}
else
{
SelectedCircle.Name = DraftName.Trim();
SelectedCircle.Public = DraftPublic;
await _client.UpdateCircleAsync(SelectedCircle.Id, SelectedCircle);
- this.SetInfoStatus($"Cercle « {SelectedCircle.Name} » mis à jour");
+ StatusMessage = $"Cercle « {SelectedCircle.Name} » mis à jour";
}
await RefreshAsync();
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -233,7 +229,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
try
{
await _client.DeleteCircleAsync(circle.Id);
- this.SetInfoStatus($"Cercle « {circle.Name} » supprimé");
+ StatusMessage = $"Cercle « {circle.Name} » supprimé";
// If the deleted circle was the selected one,
// clear the selection so the Members view goes
// empty too (the partial setter on
@@ -244,7 +240,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -265,7 +261,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
try
{
await _client.AddMemberAsync(SelectedCircle.Id, picked.Id);
- this.SetInfoStatus($"« {picked.DisplayName} » ajouté au cercle");
+ StatusMessage = $"« {picked.DisplayName} » ajouté au cercle";
await LoadMembersAsync(SelectedCircle.Id);
}
catch (Exception ex)
@@ -280,7 +276,7 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
var msg = ex.Message.Contains("409") || ex.Message.Contains("Conflict")
? "Déjà membre du cercle"
: $"Erreur: {ex.Message}";
- this.SetStatus(msg, msg == "Déjà membre du cercle" ? StatusSeverity.Warning : StatusSeverity.Error);
+ StatusMessage = msg;
}
finally
{
@@ -301,11 +297,11 @@ public partial class CirclesPageViewModel : ViewModelBase, IActionStatusViewMode
{
await _client.RemoveMemberAsync(SelectedCircle.Id, member.Id);
Members.Remove(member);
- this.SetInfoStatus($"« {member.UserName} » retiré du cercle");
+ StatusMessage = $"« {member.UserName} » retiré du cercle";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/CommandFormsPageViewModel.cs b/src/PostIt/PostIt/ViewModels/CommandFormsPageViewModel.cs
index 533fbc380..71f5d67a0 100644
--- a/src/PostIt/PostIt/ViewModels/CommandFormsPageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/CommandFormsPageViewModel.cs
@@ -11,7 +11,7 @@ using Yavsc.Api.Client;
namespace PostIt.ViewModels;
-public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusViewModel
+public partial class CommandFormsPageViewModel : ViewModelBase
{
private readonly BillingApiClient _billingClient;
@@ -25,10 +25,7 @@ public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusVie
public partial CommandFormSummary? SelectedForm { get; set; }
[ObservableProperty]
- public partial string StatusMessage { get; set; } = "Pret.";
-
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
+ public partial string StatusMessage { get; set; }
public string Title => $"Formulaires pour {Performer.UserName}";
public string ContextLabel => $"{Activity.Name} · {Forms.Count} formulaire(s)";
@@ -58,11 +55,9 @@ public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusVie
.OrderBy(f => f.Title)
.ThenBy(f => f.ActionName));
SelectedForm = Forms.FirstOrDefault();
- this.SetStatus(
- Forms.Count == 0
- ? "Aucun formulaire n'est disponible pour cette activité."
- : "Choisissez le formulaire à utiliser.",
- Forms.Count == 0 ? StatusSeverity.Warning : StatusSeverity.Info);
+ StatusMessage = Forms.Count == 0
+ ? "Aucun formulaire n'est disponible pour cette activité."
+ : "Choisissez le formulaire à utiliser.";
}
private bool CanOpenSelectedForm() => SelectedForm is not null;
@@ -76,7 +71,7 @@ public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusVie
{
if (SelectedForm is null)
{
- this.SetWarningStatus("Sélectionnez un formulaire.");
+ StatusMessage = "Sélectionnez un formulaire.";
return;
}
@@ -97,7 +92,7 @@ public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusVie
{
if (SelectedForm is null)
{
- this.SetWarningStatus("Sélectionnez un formulaire.");
+ StatusMessage = "Sélectionnez un formulaire.";
return;
}
@@ -117,7 +112,7 @@ public partial class CommandFormsPageViewModel : ViewModelBase, IActionStatusVie
{
if (SelectedForm is null)
{
- this.SetWarningStatus("Sélectionnez un formulaire.");
+ StatusMessage = "Sélectionnez un formulaire.";
return;
}
diff --git a/src/PostIt/PostIt/ViewModels/Commands/BillingCommandPageViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/BillingCommandPageViewModel.cs
index 5ad2b08f4..0ab76291d 100644
--- a/src/PostIt/PostIt/ViewModels/Commands/BillingCommandPageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/Commands/BillingCommandPageViewModel.cs
@@ -9,7 +9,7 @@ using Yavsc.Models.Billing;
namespace PostIt.ViewModels;
-public abstract partial class BillingCommandPageViewModel : RemoteViewModelBase, IActionStatusViewModel
+public abstract partial class BillingCommandPageViewModel : RemoteViewModelBase
{
protected readonly BillingApiClient _billingClient;
@@ -21,10 +21,7 @@ public abstract partial class BillingCommandPageViewModel : RemoteViewModelBase,
public partial bool IsBusy { get; set; }
[ObservableProperty]
- public partial string StatusMessage { get; set; } = "Pret.";
-
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
+ public partial string StatusMessage { get; set; }
[ObservableProperty]
public partial string Reason { get; set; } = string.Empty;
@@ -78,7 +75,7 @@ public abstract partial class BillingCommandPageViewModel : RemoteViewModelBase,
Form = form ?? throw new ArgumentNullException(nameof(form));
_billingClient = billingClient ?? throw new ArgumentNullException(nameof(billingClient));
- this.SetInfoStatus(SupportMessage);
+ StatusMessage = SupportMessage;
}
partial void OnExistingQueryIdChanged(long? value)
diff --git a/src/PostIt/PostIt/ViewModels/Commands/BrushViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/BrushViewModel.cs
index 72d9ce8ea..d49fde803 100644
--- a/src/PostIt/PostIt/ViewModels/Commands/BrushViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/Commands/BrushViewModel.cs
@@ -58,20 +58,18 @@ public partial class BrushViewModel : RdvViewModel
SelectedPrestation = AvailablePrestations.FirstOrDefault();
}
- this.SetStatus(
- AvailablePrestations.Count == 0
- ? "Aucune prestation coiffure disponible."
- : SupportMessage,
- AvailablePrestations.Count == 0 ? StatusSeverity.Warning : StatusSeverity.Info);
+ StatusMessage = AvailablePrestations.Count == 0
+ ? "Aucune prestation coiffure disponible."
+ : SupportMessage;
}
catch (HttpRequestException ex)
when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé au catalogue de prestations (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au catalogue de prestations (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur lors du chargement des prestations: {ex.Message}");
+ StatusMessage = $"Erreur lors du chargement des prestations: {ex.Message}";
}
finally
{
@@ -83,19 +81,19 @@ public partial class BrushViewModel : RdvViewModel
{
if (!Consent)
{
- this.SetWarningStatus("Le consentement est requis pour poster la commande.");
+ StatusMessage = "Le consentement est requis pour poster la commande.";
return;
}
if (string.IsNullOrWhiteSpace(Address))
{
- this.SetWarningStatus("L'adresse du rendez-vous est requise.");
+ StatusMessage = "L'adresse du rendez-vous est requise.";
return;
}
if (SelectedPrestation is null)
{
- this.SetWarningStatus("Sélectionnez une prestation coiffure.");
+ StatusMessage = "Sélectionnez une prestation coiffure.";
return;
}
@@ -145,18 +143,18 @@ public partial class BrushViewModel : RdvViewModel
}).ConfigureAwait(true);
}
- this.SetInfoStatus(IsEditingExisting
+ StatusMessage = IsEditingExisting
? $"Commande #{ExistingQueryId} mise à jour sur {BillingRoute} pour {Performer.UserName}."
- : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.");
+ : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.";
}
catch (HttpRequestException ex)
when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur lors de l'envoi de la commande: {ex.Message}");
+ StatusMessage = $"Erreur lors de l'envoi de la commande: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/Commands/MBrushViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/MBrushViewModel.cs
index 05481c2c3..793a77516 100644
--- a/src/PostIt/PostIt/ViewModels/Commands/MBrushViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/Commands/MBrushViewModel.cs
@@ -49,20 +49,20 @@ public partial class MBrushViewModel : BrushViewModel
{
if (!Consent)
{
- this.SetWarningStatus("Le consentement est requis pour poster la commande.");
+ StatusMessage = "Le consentement est requis pour poster la commande.";
return;
}
if (string.IsNullOrWhiteSpace(Address))
{
- this.SetWarningStatus("L'adresse du rendez-vous est requise.");
+ StatusMessage = "L'adresse du rendez-vous est requise.";
return;
}
var selectedPrestations = MultiPrestations.Where(x => x.IsSelected).ToList();
if (selectedPrestations.Count == 0)
{
- this.SetWarningStatus("Sélectionnez au moins une prestation coiffure.");
+ StatusMessage = "Sélectionnez au moins une prestation coiffure.";
return;
}
@@ -109,18 +109,18 @@ public partial class MBrushViewModel : BrushViewModel
}).ConfigureAwait(true);
}
- this.SetInfoStatus(IsEditingExisting
+ StatusMessage = IsEditingExisting
? $"Commande #{ExistingQueryId} mise à jour sur {BillingRoute} pour {Performer.UserName}."
- : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.");
+ : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.";
}
catch (HttpRequestException ex)
when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur lors de l'envoi de la commande: {ex.Message}");
+ StatusMessage = $"Erreur lors de l'envoi de la commande: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
index afd0c54bd..c2ff3294e 100644
--- a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
@@ -54,7 +54,7 @@ public partial class RdvViewModel : BillingCommandPageViewModel
Longitude = existingQuery.Location.Longitude;
}
- this.SetInfoStatus($"Commande #{existingQuery.Id} chargée.");
+ StatusMessage = $"Commande #{existingQuery.Id} chargée.";
}
[RelayCommand(CanExecute = nameof(CanUseCurrentLocation))]
@@ -71,23 +71,23 @@ public partial class RdvViewModel : BillingCommandPageViewModel
var result = await Platform.TryGetCurrentLocationAsync(default).ConfigureAwait(true);
if (!result.IsSuccess || !result.Latitude.HasValue || !result.Longitude.HasValue)
{
- this.SetWarningStatus(result.Message);
+ StatusMessage = result.Message;
return;
}
Latitude = result.Latitude.Value;
Longitude = result.Longitude.Value;
- this.SetInfoStatus(string.IsNullOrWhiteSpace(Address)
+ StatusMessage = string.IsNullOrWhiteSpace(Address)
? "Position récupérée. Complétez l'adresse puis envoyez la commande."
- : result.Message);
+ : result.Message;
}
catch (OperationCanceledException)
{
- this.SetWarningStatus("La récupération de la position a été annulée.");
+ StatusMessage = "La récupération de la position a été annulée.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Impossible de récupérer la position: {ex.Message}");
+ StatusMessage = $"Impossible de récupérer la position: {ex.Message}";
}
finally
{
@@ -118,26 +118,26 @@ public partial class RdvViewModel : BillingCommandPageViewModel
{
if (!IsSupported)
{
- this.SetWarningStatus(SupportMessage);
+ StatusMessage = SupportMessage;
return;
}
if (!Consent)
{
- this.SetWarningStatus("Le consentement est requis pour poster la commande.");
+ StatusMessage = "Le consentement est requis pour poster la commande.";
return;
}
if (string.IsNullOrWhiteSpace(Address))
{
- this.SetWarningStatus("L'adresse du rendez-vous est requise.");
+ StatusMessage = "L'adresse du rendez-vous est requise.";
return;
}
if (string.IsNullOrWhiteSpace(Reason))
{
- this.SetWarningStatus("Le motif du rendez-vous est requis.");
+ StatusMessage = "Le motif du rendez-vous est requis.";
return;
}
@@ -186,17 +186,17 @@ public partial class RdvViewModel : BillingCommandPageViewModel
}).ConfigureAwait(true);
}
- this.SetInfoStatus(IsEditingExisting
+ StatusMessage = IsEditingExisting
? $"Commande #{ExistingQueryId} mise à jour sur {BillingRoute} pour {Performer.UserName}."
- : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.");
+ : $"Commande transmise sur {BillingRoute} pour {Performer.UserName}.";
}
catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
{
- this.SetWarningStatus("Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.");
+ StatusMessage = "Accès refusé au billing (scope 'api'). Déconnectez puis reconnectez-vous.";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur lors de l'envoi: {ex.Message}");
+ StatusMessage = $"Erreur lors de l'envoi: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/MainViewModel.cs b/src/PostIt/PostIt/ViewModels/MainViewModel.cs
index d2667c012..f56b666dd 100644
--- a/src/PostIt/PostIt/ViewModels/MainViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/MainViewModel.cs
@@ -12,7 +12,7 @@ using PostIt.Helpers;
namespace PostIt.ViewModels;
-public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
+public partial class MainViewModel : ViewModelBase
{
/// Window/tab title. Cosmetic — bound by
/// MainPage.axaml if at all. Not the post title.
@@ -54,9 +54,6 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
[ObservableProperty]
public partial string StatusMessage { get; set; }
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
-
[ObservableProperty]
public partial string SearchText { get; set; }
@@ -87,7 +84,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
Posts.Add(post);
}
ApplyFilter();
- this.SetInfoStatus($"{Posts.Count} billet(s) chargé(s).");
+ StatusMessage = $"Loaded {Posts.Count} posts.";
});
}
@@ -107,7 +104,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
// than to send a request the server will reject.
if (string.IsNullOrWhiteSpace(DraftTitle))
{
- this.SetWarningStatus("Le titre est obligatoire.");
+ StatusMessage = "Title is required.";
return;
}
@@ -137,7 +134,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
if (created is not null)
{
SelectedPost = created;
- this.SetInfoStatus($"Billet {created.Id} créé.");
+ StatusMessage = $"Created post {created.Id}.";
}
}
else
@@ -153,7 +150,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
DateModified = DateTime.UtcNow,
};
await BlogClient!.UpdatePostAsync(SelectedPost.Id, update);
- this.SetInfoStatus($"Billet {SelectedPost.Id} enregistré.");
+ StatusMessage = $"Saved post {SelectedPost.Id}.";
}
await RefreshPostsAsync();
@@ -165,14 +162,14 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
{
if (SelectedPost is null || SelectedPost.Id == 0)
{
- this.SetWarningStatus("Sélectionnez un billet existant avant suppression.");
+ StatusMessage = "Select an existing post before deleting.";
return;
}
await ExecuteAsync(async () =>
{
await BlogClient!.DeletePostAsync(SelectedPost.Id);
- this.SetInfoStatus($"Billet {SelectedPost.Id} supprimé.");
+ StatusMessage = $"Deleted post {SelectedPost.Id}.";
SelectedPost = null;
await RefreshPostsAsync();
});
@@ -197,7 +194,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
{
if (SelectedPost is null || SelectedPost.Id == 0)
{
- this.SetWarningStatus("Sélectionnez un billet existant pour changer sa publication.");
+ StatusMessage = "Sélectionnez un billet existant pour changer sa publication.";
return;
}
@@ -214,9 +211,9 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
// locally flipped state until the round-trip
// re-hydrates it.
SelectedPost.IsPublished = publish;
- this.SetInfoStatus(publish
+ StatusMessage = publish
? $"Billet {SelectedPost.Id} publié."
- : $"Billet {SelectedPost.Id} remis en brouillon.");
+ : $"Billet {SelectedPost.Id} remis en brouillon.";
});
}
@@ -250,7 +247,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
{
if (SelectedPost is null)
{
- this.SetWarningStatus("Sélectionnez un billet existant avant de gérer l'ACL.");
+ StatusMessage = "Select an existing post before managing ACL.";
return;
}
@@ -349,7 +346,7 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
FilteredPosts = new ObservableCollection();
SelectedPost = null;
IsBusy = false;
- this.SetInfoStatus("Prêt.");
+ StatusMessage = "Ready";
Settings = settings ?? new Settings();
SearchText = Settings.SearchText;
WindowTitle = "PostIt";
@@ -479,12 +476,12 @@ public partial class MainViewModel : ViewModelBase, IActionStatusViewModel
try
{
IsBusy = true;
- this.SetInfoStatus("Traitement en cours...");
+ StatusMessage = "Working...";
await action();
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Error: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/PostAclDialogViewModel.cs b/src/PostIt/PostIt/ViewModels/PostAclDialogViewModel.cs
index be1b220fa..605446068 100644
--- a/src/PostIt/PostIt/ViewModels/PostAclDialogViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/PostAclDialogViewModel.cs
@@ -37,7 +37,7 @@ public sealed class PostAclEntry
/// any 403 / 404 will surface as an exception caught by the
/// command and routed to .
///
-public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewModel
+public partial class PostAclDialogViewModel : ViewModelBase
{
private readonly BlogAclApiClient _aclClient;
private readonly CircleApiClient _circleClient;
@@ -61,10 +61,7 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
public partial bool IsBusy { get; set; }
[ObservableProperty]
- public partial string StatusMessage { get; set; } = "Pret.";
-
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
+ public partial string StatusMessage { get; set; } = string.Empty;
///
/// Idempotency gate for : the dialog
@@ -118,12 +115,12 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
AclEntries = new ObservableCollection(AclEntries.Select(a => ToAclEntry(a.CircleId)));
- this.SetInfoStatus($"{AclEntries.Count} autorisation(s)");
+ StatusMessage = $"{AclEntries.Count} autorisation(s)";
_loaded = true;
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -136,7 +133,7 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
{
if (SelectedCircleToAdd is null)
{
- this.SetWarningStatus("Sélectionnez un cercle à ajouter");
+ StatusMessage = "Sélectionnez un cercle à ajouter";
return;
}
@@ -145,7 +142,7 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
{
if (AclEntries.Any(a => a.CircleId == SelectedCircleToAdd.Id))
{
- this.SetWarningStatus($"Cercle « {SelectedCircleToAdd.Name} » déjà autorisé");
+ StatusMessage = $"Cercle « {SelectedCircleToAdd.Name} » déjà autorisé";
return;
}
@@ -157,11 +154,11 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
if (created is not null)
{
AclEntries.Add(ToAclEntry(created.CircleId));
- this.SetInfoStatus($"Cercle « {SelectedCircleToAdd.Name} » autorisé");
+ StatusMessage = $"Cercle « {SelectedCircleToAdd.Name} » autorisé";
}
else
{
- this.SetWarningStatus("Autorisation refusée par le serveur");
+ StatusMessage = "Autorisation refusée par le serveur";
}
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.Conflict)
@@ -169,11 +166,11 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
// Conflict means the link already exists in backend. Resync
// from the dedicated ACL API so the UI reflects server truth.
await ReloadAclEntriesFromServerAsync();
- this.SetWarningStatus($"Cercle « {SelectedCircleToAdd.Name} » déjà autorisé");
+ StatusMessage = $"Cercle « {SelectedCircleToAdd.Name} » déjà autorisé";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
@@ -192,11 +189,11 @@ public partial class PostAclDialogViewModel : ViewModelBase, IActionStatusViewMo
var existing = AclEntries.FirstOrDefault(e => e.CircleId == acl.CircleId);
if (existing is not null)
AclEntries.Remove(existing);
- this.SetInfoStatus("Autorisation révoquée");
+ StatusMessage = "Autorisation révoquée";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
finally
{
diff --git a/src/PostIt/PostIt/ViewModels/Settings/Settings.cs b/src/PostIt/PostIt/ViewModels/Settings/Settings.cs
index b59ef9933..e63f0b321 100644
--- a/src/PostIt/PostIt/ViewModels/Settings/Settings.cs
+++ b/src/PostIt/PostIt/ViewModels/Settings/Settings.cs
@@ -31,19 +31,6 @@ public partial class Settings : ViewModelBase
[ObservableProperty]
public partial string SearchText { get; set; } = string.Empty;
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Pret.");
-
- public void SetActionStatus(string message, StatusSeverity severity = StatusSeverity.Info)
- {
- ActionStatus = severity switch
- {
- StatusSeverity.Error => StatusNotice.Error(message),
- StatusSeverity.Warning => StatusNotice.Warning(message),
- _ => StatusNotice.Info(message),
- };
- }
-
///
/// Catch top-level mutations: the four ObservableProperty
/// setters above all funnel through here, and we flip
@@ -419,8 +406,6 @@ public partial class Settings : ViewModelBase
[RelayCommand(CanExecute = nameof(CanSave))]
public void Save()
{
- SetActionStatus("Enregistrement des parametres...", StatusSeverity.Info);
-
var configDir = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"PostIt");
@@ -440,13 +425,10 @@ public partial class Settings : ViewModelBase
File.SetUnixFileMode(configPath,
UnixFileMode.UserRead | UnixFileMode.UserWrite);
IsDirty = false;
- SetActionStatus("Parametres sauvegardes.", StatusSeverity.Info);
-
Console.WriteLine($"💾 Settings saved to {configPath}");
}
catch (Exception ex)
{
- SetActionStatus($"Echec sauvegarde parametres: {ex.Message}", StatusSeverity.Error);
Console.Error.WriteLine($"🩎 Error saving settings to {configPath}: {ex.Message}");
throw;
}
diff --git a/src/PostIt/PostIt/ViewModels/SignaturePageViewModel.cs b/src/PostIt/PostIt/ViewModels/SignaturePageViewModel.cs
index 23ba70cf9..b4b37974b 100644
--- a/src/PostIt/PostIt/ViewModels/SignaturePageViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/SignaturePageViewModel.cs
@@ -30,7 +30,7 @@ namespace PostIt.ViewModels;
/// until the Yavsc.Org endpoint exists; the contract there will
/// be POST /api/signature/{devisId} with this same payload.
///
-public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewModel
+public partial class SignaturePageViewModel : ViewModelBase
{
///
/// Default capture surface, in DIPs. 3:1 ratio matches a
@@ -42,9 +42,6 @@ public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewMo
[ObservableProperty]
public partial string StatusMessage { get; set; } = "Prêt.";
- [ObservableProperty]
- public partial StatusNotice ActionStatus { get; set; } = StatusNotice.Info("Prêt.");
-
[ObservableProperty]
public partial int StrokeCount { get; set; }
@@ -110,7 +107,7 @@ public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewMo
private void OnStrokeCompleted(object? sender, SignaturePadData data)
{
- this.SetInfoStatus($"Trait terminé. {data.StrokeCount} trait(s).");
+ StatusMessage = $"Trait terminé. {data.StrokeCount} trait(s).";
RefreshCounts();
}
@@ -128,7 +125,7 @@ public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewMo
public void Clear()
{
_control?.Clear();
- this.SetInfoStatus("Effacé.");
+ StatusMessage = "Effacé.";
RefreshCounts();
}
@@ -137,14 +134,14 @@ public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewMo
{
if (_control is null)
{
- this.SetWarningStatus("Contrôle non attaché.");
+ StatusMessage = "Contrôle non attaché.";
return;
}
var data = _control.Snapshot();
if (data.IsEmpty)
{
- this.SetWarningStatus("Rien à capturer.");
+ StatusMessage = "Rien à capturer.";
return;
}
@@ -152,11 +149,11 @@ public partial class SignaturePageViewModel : ViewModelBase, IActionStatusViewMo
{
var path = WriteCapture(data);
LastCapturedPath = path;
- this.SetInfoStatus($"Capture enregistrée: {path}");
+ StatusMessage = $"Capture enregistrée: {path}";
}
catch (Exception ex)
{
- this.SetErrorStatus($"Erreur: {ex.Message}");
+ StatusMessage = $"Erreur: {ex.Message}";
}
await Task.CompletedTask;
}
diff --git a/src/PostIt/PostIt/ViewModels/StatusNotice.cs b/src/PostIt/PostIt/ViewModels/StatusNotice.cs
deleted file mode 100644
index 972c64350..000000000
--- a/src/PostIt/PostIt/ViewModels/StatusNotice.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace PostIt.ViewModels;
-
-public enum StatusSeverity
-{
- Info,
- Warning,
- Error
-}
-
-public sealed class StatusNotice
-{
- public string Message { get; }
- public StatusSeverity Severity { get; }
- public string Glyph { get; }
- public string Background { get; }
- public string BorderBrush { get; }
- public string Foreground { get; }
-
- private StatusNotice(string message, StatusSeverity severity)
- {
- Message = string.IsNullOrWhiteSpace(message) ? "Pret." : message;
- Severity = severity;
-
- (Glyph, Background, BorderBrush, Foreground) = severity switch
- {
- StatusSeverity.Error => ("!", "#FDECEA", "#C62828", "#7F1D1D"),
- StatusSeverity.Warning => ("~", "#FFF8E1", "#E6A700", "#7C4A03"),
- _ => ("i", "#E8F0FE", "#5B8DEF", "#1E3A8A"),
- };
- }
-
- public static StatusNotice Info(string message) => new(message, StatusSeverity.Info);
- public static StatusNotice Warning(string message) => new(message, StatusSeverity.Warning);
- public static StatusNotice Error(string message) => new(message, StatusSeverity.Error);
-}
diff --git a/src/PostIt/PostIt/Views/ActivitiesPage.axaml b/src/PostIt/PostIt/Views/ActivitiesPage.axaml
index a34d8edf2..16d883443 100644
--- a/src/PostIt/PostIt/Views/ActivitiesPage.axaml
+++ b/src/PostIt/PostIt/Views/ActivitiesPage.axaml
@@ -1,7 +1,6 @@
-
+
diff --git a/src/PostIt/PostIt/Views/AddCircleMemberDialog.axaml b/src/PostIt/PostIt/Views/AddCircleMemberDialog.axaml
index a17f8574e..8b2329886 100644
--- a/src/PostIt/PostIt/Views/AddCircleMemberDialog.axaml
+++ b/src/PostIt/PostIt/Views/AddCircleMemberDialog.axaml
@@ -3,7 +3,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="PostIt.Views.AddCircleMemberDialog"
xmlns:vm="using:PostIt.ViewModels"
- xmlns:postitControls="using:PostIt.Controls"
xmlns:services="using:PostIt.Services"
x:DataType="vm:AddCircleMemberDialogViewModel"
>
@@ -48,8 +47,8 @@
-
+
diff --git a/src/PostIt/PostIt/Views/CirclesPage.axaml b/src/PostIt/PostIt/Views/CirclesPage.axaml
index 8488201e2..6fc2172ba 100644
--- a/src/PostIt/PostIt/Views/CirclesPage.axaml
+++ b/src/PostIt/PostIt/Views/CirclesPage.axaml
@@ -1,7 +1,6 @@
-
+
diff --git a/src/PostIt/PostIt/Views/CommandFormsPage.axaml b/src/PostIt/PostIt/Views/CommandFormsPage.axaml
index f44c098bd..8fad010ef 100644
--- a/src/PostIt/PostIt/Views/CommandFormsPage.axaml
+++ b/src/PostIt/PostIt/Views/CommandFormsPage.axaml
@@ -1,7 +1,6 @@
-
+
diff --git a/src/PostIt/PostIt/Views/Commands/BrushPage.axaml b/src/PostIt/PostIt/Views/Commands/BrushPage.axaml
index d01ea4a1b..9c33cecb2 100644
--- a/src/PostIt/PostIt/Views/Commands/BrushPage.axaml
+++ b/src/PostIt/PostIt/Views/Commands/BrushPage.axaml
@@ -3,7 +3,6 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:cvm="using:PostIt.ViewModels.Commands"
- xmlns:postitControls="using:PostIt.Controls"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="PostIt.Views.Commands.BrushPage"
@@ -94,8 +93,16 @@
Content="{Binding SubmitLabel}"
Command="{Binding SubmitCommand}"
IsEnabled="{Binding IsSupported}" />
-
+
@@ -72,8 +71,16 @@
Content="{Binding SubmitLabel}"
Command="{Binding SubmitCommand}"
IsEnabled="{Binding IsSupported}" />
-
+
-
+
diff --git a/src/PostIt/PostIt/Views/PostAclDialog.axaml b/src/PostIt/PostIt/Views/PostAclDialog.axaml
index 4af8c018e..8552988e5 100644
--- a/src/PostIt/PostIt/Views/PostAclDialog.axaml
+++ b/src/PostIt/PostIt/Views/PostAclDialog.axaml
@@ -3,7 +3,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="PostIt.Views.PostAclDialog"
xmlns:vm="using:PostIt.ViewModels"
- xmlns:postitControls="using:PostIt.Controls"
xmlns:dtos="using:Yavsc.Api.Client.Dtos"
x:DataType="vm:PostAclDialogViewModel"
>
@@ -54,8 +53,8 @@
-
+
diff --git a/src/PostIt/PostIt/Views/SettingsPage.axaml b/src/PostIt/PostIt/Views/SettingsPage.axaml
index 2973679b5..bb19dfa3c 100644
--- a/src/PostIt/PostIt/Views/SettingsPage.axaml
+++ b/src/PostIt/PostIt/Views/SettingsPage.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="cl:avalonia.Controls"
- xmlns:postitControls="using:PostIt.Controls"
x:Class="PostIt.Views.SettingsPage"
xmlns:vm="using:PostIt.ViewModels"
x:DataType="vm:Settings"
@@ -52,7 +51,9 @@
Opacity="0.8"
TextWrapping="Wrap" />
-
+
-
+
diff --git a/src/Yavsc.Abstract/Blogspot/BlogPostDto.cs b/src/Yavsc.Abstract/Blogspot/BlogPostDto.cs
index bdb2ccdc8..9cb5b1430 100644
--- a/src/Yavsc.Abstract/Blogspot/BlogPostDto.cs
+++ b/src/Yavsc.Abstract/Blogspot/BlogPostDto.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using Yavsc.Abstract.Identity.Security;
using System.Text.Json.Serialization;
diff --git a/src/Yavsc.Abstract/Blogspot/IBlogPost.cs b/src/Yavsc.Abstract/Blogspot/IBlogPost.cs
index 38a50b78f..1ef371803 100644
--- a/src/Yavsc.Abstract/Blogspot/IBlogPost.cs
+++ b/src/Yavsc.Abstract/Blogspot/IBlogPost.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
diff --git a/src/Yavsc.Abstract/Chat/ChatHubConstants.cs b/src/Yavsc.Abstract/Chat/ChatHubConstants.cs
index c673e6fae..b54c00c74 100644
--- a/src/Yavsc.Abstract/Chat/ChatHubConstants.cs
+++ b/src/Yavsc.Abstract/Chat/ChatHubConstants.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
namespace Yavsc.Abstract.Chat
{
public static class ChatHubConstants
diff --git a/src/Yavsc.Abstract/Chat/IChatRoom.cs b/src/Yavsc.Abstract/Chat/IChatRoom.cs
index 133ca2837..1d6f68dd5 100644
--- a/src/Yavsc.Abstract/Chat/IChatRoom.cs
+++ b/src/Yavsc.Abstract/Chat/IChatRoom.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using System.ComponentModel.DataAnnotations;
namespace Yavsc.Abstract.Chat
diff --git a/src/Yavsc.Abstract/FileSystem/AbstractFileSystemHelpers.cs b/src/Yavsc.Abstract/FileSystem/AbstractFileSystemHelpers.cs
index 14bc86435..dd805864e 100644
--- a/src/Yavsc.Abstract/FileSystem/AbstractFileSystemHelpers.cs
+++ b/src/Yavsc.Abstract/FileSystem/AbstractFileSystemHelpers.cs
@@ -1,6 +1,4 @@
-#nullable enable annotations
-
-using System.Text;
+using System.Text;
using Yavsc.ViewModels.UserFiles;
namespace Yavsc.Server.Helpers
diff --git a/src/Yavsc.Abstract/FileSystem/FsOperationInfo.cs b/src/Yavsc.Abstract/FileSystem/FsOperationInfo.cs
index 0e3c0e0c7..76a481492 100644
--- a/src/Yavsc.Abstract/FileSystem/FsOperationInfo.cs
+++ b/src/Yavsc.Abstract/FileSystem/FsOperationInfo.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
namespace Yavsc.Abstract.Helpers
{
public enum ErrorCode {
diff --git a/src/Yavsc.Abstract/FileSystem/UserDirectoryInfo.cs b/src/Yavsc.Abstract/FileSystem/UserDirectoryInfo.cs
index 2ec5dcfaf..fa727d0c0 100644
--- a/src/Yavsc.Abstract/FileSystem/UserDirectoryInfo.cs
+++ b/src/Yavsc.Abstract/FileSystem/UserDirectoryInfo.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using Yavsc.Server.Helpers;
namespace Yavsc.ViewModels.UserFiles
diff --git a/src/Yavsc.Abstract/Google/GDate.cs b/src/Yavsc.Abstract/Google/GDate.cs
index 10e4de92e..3506ba416 100644
--- a/src/Yavsc.Abstract/Google/GDate.cs
+++ b/src/Yavsc.Abstract/Google/GDate.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
//
// GDate.cs
//
diff --git a/src/Yavsc.Abstract/Google/Messaging/MessageWithPayloadResponse.cs b/src/Yavsc.Abstract/Google/Messaging/MessageWithPayloadResponse.cs
index 980a4abcf..59538ca62 100644
--- a/src/Yavsc.Abstract/Google/Messaging/MessageWithPayloadResponse.cs
+++ b/src/Yavsc.Abstract/Google/Messaging/MessageWithPayloadResponse.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
//
// MessageWithPayloadResponse.cs
//
diff --git a/src/Yavsc.Abstract/IT/Fixing/Bug.cs b/src/Yavsc.Abstract/IT/Fixing/Bug.cs
index 60bd155f6..f0b403bb7 100644
--- a/src/Yavsc.Abstract/IT/Fixing/Bug.cs
+++ b/src/Yavsc.Abstract/IT/Fixing/Bug.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Yavsc.Attributes.Validation;
diff --git a/src/Yavsc.Abstract/Identity/IApplicationUser.cs b/src/Yavsc.Abstract/Identity/IApplicationUser.cs
index 0b8e1047c..5d1d5b1ca 100644
--- a/src/Yavsc.Abstract/Identity/IApplicationUser.cs
+++ b/src/Yavsc.Abstract/Identity/IApplicationUser.cs
@@ -1,6 +1,4 @@
-#nullable enable annotations
-
-namespace Yavsc.Abstract.Identity
+namespace Yavsc.Abstract.Identity
{
public interface IApplicationUser
{
diff --git a/src/Yavsc.Abstract/Identity/UserDisplayHelpers.cs b/src/Yavsc.Abstract/Identity/UserDisplayHelpers.cs
index 4277d6e3b..242615527 100644
--- a/src/Yavsc.Abstract/Identity/UserDisplayHelpers.cs
+++ b/src/Yavsc.Abstract/Identity/UserDisplayHelpers.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
namespace Yavsc.Abstract.Identity
{
///
diff --git a/src/Yavsc.Abstract/Interfaces/Workflow/IBookQueryData.cs b/src/Yavsc.Abstract/Interfaces/Workflow/IBookQueryData.cs
index eb3dee591..2c844f925 100644
--- a/src/Yavsc.Abstract/Interfaces/Workflow/IBookQueryData.cs
+++ b/src/Yavsc.Abstract/Interfaces/Workflow/IBookQueryData.cs
@@ -1,6 +1,4 @@
-#nullable enable annotations
-
-using Yavsc.Abstract.Identity;
+using Yavsc.Abstract.Identity;
namespace Yavsc.Interfaces
{
diff --git a/src/Yavsc.Abstract/Messaging/Comment.cs b/src/Yavsc.Abstract/Messaging/Comment.cs
index d8eef456c..3b8702ae1 100644
--- a/src/Yavsc.Abstract/Messaging/Comment.cs
+++ b/src/Yavsc.Abstract/Messaging/Comment.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using Yavsc.Interfaces;
diff --git a/src/Yavsc.Abstract/Messaging/Notification.cs b/src/Yavsc.Abstract/Messaging/Notification.cs
index f7b35b48b..dbbf735d5 100644
--- a/src/Yavsc.Abstract/Messaging/Notification.cs
+++ b/src/Yavsc.Abstract/Messaging/Notification.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
diff --git a/src/Yavsc.Abstract/Messaging/RdvQueryEvent.cs b/src/Yavsc.Abstract/Messaging/RdvQueryEvent.cs
index 9e2ecb754..b2168bd7c 100644
--- a/src/Yavsc.Abstract/Messaging/RdvQueryEvent.cs
+++ b/src/Yavsc.Abstract/Messaging/RdvQueryEvent.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
//
// BookQueryEvent.cs
//
diff --git a/src/Yavsc.Abstract/Messaging/RdvQueryProviderInfo.cs b/src/Yavsc.Abstract/Messaging/RdvQueryProviderInfo.cs
index 94eeb5ab9..87125c544 100644
--- a/src/Yavsc.Abstract/Messaging/RdvQueryProviderInfo.cs
+++ b/src/Yavsc.Abstract/Messaging/RdvQueryProviderInfo.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using Yavsc.Abstract.Identity;
using Yavsc.Models.Relationship;
diff --git a/src/Yavsc.Abstract/Workflow/IMobileDeviceDeclaration.cs b/src/Yavsc.Abstract/Workflow/IMobileDeviceDeclaration.cs
index 7a1dbc261..6e55ebe51 100644
--- a/src/Yavsc.Abstract/Workflow/IMobileDeviceDeclaration.cs
+++ b/src/Yavsc.Abstract/Workflow/IMobileDeviceDeclaration.cs
@@ -1,6 +1,4 @@
-#nullable enable annotations
-
-// Copyright (C) 2016 Paul Schneider
+// Copyright (C) 2016 Paul Schneider
//
// This file is part of yavsc.
//
diff --git a/src/Yavsc.Abstract/Workflow/IPerformerProfile.cs b/src/Yavsc.Abstract/Workflow/IPerformerProfile.cs
index 606285a6c..4314dd371 100644
--- a/src/Yavsc.Abstract/Workflow/IPerformerProfile.cs
+++ b/src/Yavsc.Abstract/Workflow/IPerformerProfile.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
namespace Yavsc.Workflow
{
public interface IPerformerProfile
diff --git a/src/Yavsc.Abstract/Workflow/PerformerCodeInputValidation.cs b/src/Yavsc.Abstract/Workflow/PerformerCodeInputValidation.cs
index 4ed60e465..84e9c1cc7 100644
--- a/src/Yavsc.Abstract/Workflow/PerformerCodeInputValidation.cs
+++ b/src/Yavsc.Abstract/Workflow/PerformerCodeInputValidation.cs
@@ -1,5 +1,3 @@
-#nullable enable annotations
-
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;