diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a2efb4a..ec42b81b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,5 @@ # Changelog -## [1.0.8-rc10] - unstable - -### Added - -### Changed - -### Fixed - ## [1.0.8-rc9] - unstable ### Added diff --git a/src/PostIt/PostIt.Tests/ActivitiesPageViewModelTests.cs b/src/PostIt/PostIt.Tests/ActivitiesPageViewModelTests.cs index da166fa6..124777e0 100644 --- a/src/PostIt/PostIt.Tests/ActivitiesPageViewModelTests.cs +++ b/src/PostIt/PostIt.Tests/ActivitiesPageViewModelTests.cs @@ -14,10 +14,10 @@ public class ActivitiesPageViewModelTests var client = new ActivityApiClient(api, "https://business.example/api/v1/"); await client.GetCatalogAsync("brush", TestContext.Current.CancellationToken); - await client.GetUsersAsync("brush-pro", TestContext.Current.CancellationToken); + await client.GetPerformersAsync("brush-pro", TestContext.Current.CancellationToken); Assert.Equal("https://business.example/api/v1/activity/catalog?parentCode=brush", api.Paths[0]); - Assert.Equal("https://business.example/api/v1/activity/brush-pro/users", api.Paths[1]); + Assert.Equal("https://business.example/api/v1/activity/brush-pro/performers", api.Paths[1]); } [Fact] @@ -34,20 +34,12 @@ public class ActivitiesPageViewModelTests Assert.Equal("brush", vm.CurrentActivity?.Code); Assert.Single(vm.Performers); Assert.Equal("Alice", vm.Performers[0].UserName); - Assert.True(vm.Performers[0].HasPerformerProfile); - Assert.True(vm.Performers[0].IsPerformerActive); - Assert.Equal("Actif", vm.Performers[0].PerformerStatusBadgeLabel); - Assert.Equal("Pas d'autre activité", vm.Performers[0].ExtraActivityLabel); await vm.ShowSpecializationAsync(vm.Specializations[0]); Assert.Equal("brush-pro", vm.CurrentActivity?.Code); Assert.Single(vm.Performers); Assert.Equal("Bob", vm.Performers[0].UserName); - Assert.True(vm.Performers[0].HasPerformerProfile); - Assert.False(vm.Performers[0].IsPerformerActive); - Assert.Equal("Inactif", vm.Performers[0].PerformerStatusBadgeLabel); - Assert.Equal("Autres spécialisations: 2", vm.Performers[0].ExtraActivityLabel); Assert.Contains("brush pro", vm.StatusMessage, StringComparison.OrdinalIgnoreCase); await vm.ShowSpecializationAsync(null); @@ -94,14 +86,14 @@ public class ActivitiesPageViewModelTests if (typeof(T) == typeof(List)) { - var performers = path.EndsWith("brush-pro/users", StringComparison.Ordinal) + var performers = path.EndsWith("brush-pro/performers", StringComparison.Ordinal) ? new List { - new() { PerformerId = "pro-2", HasPerformerProfile = true, Active = false, UserName = "Bob", ActivityCode = "brush-pro", ActivityName = "Brush Pro", ExtraActivityCount = 2 } + new() { PerformerId = "pro-2", UserName = "Bob", ActivityCode = "brush-pro", ActivityName = "Brush Pro" } } : new List { - new() { PerformerId = "pro-1", HasPerformerProfile = true, Active = true, UserName = "Alice", ActivityCode = "brush", ActivityName = "Brush", ExtraActivityCount = 0 } + new() { PerformerId = "pro-1", UserName = "Alice", ActivityCode = "brush", ActivityName = "Brush" } }; return Task.FromResult((T)(object)performers); diff --git a/src/PostIt/PostIt/App.axaml.cs b/src/PostIt/PostIt/App.axaml.cs index d3fbf651..f43aa1d9 100644 --- a/src/PostIt/PostIt/App.axaml.cs +++ b/src/PostIt/PostIt/App.axaml.cs @@ -86,6 +86,11 @@ private void ConfigureRootView(MainView rootView) rootView.NavRoot.PopToRootAsync(); }; + sessionStatus.LoginSucceeded += async () => + { + await PushMainPageAsync(); + }; + rootView.SessionBanner.DataContext = sessionStatus; } diff --git a/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs b/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs index e39a2c18..57e387c9 100644 --- a/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs +++ b/src/PostIt/PostIt/ViewModels/ActivitiesPageViewModel.cs @@ -29,7 +29,7 @@ public partial class ActivitiesPageViewModel : ViewModelBase public partial ActivityBrowseItemDto? SelectedSpecialization { get; set; } [ObservableProperty] - public partial ObservableCollection Performers { get; set; } = new(); + public partial ObservableCollection Performers { get; set; } = new(); [ObservableProperty] public partial bool IsBusy { get; set; } @@ -122,14 +122,14 @@ public partial class ActivitiesPageViewModel : ViewModelBase { Activities = new ObservableCollection(); Specializations = new ObservableCollection(); - Performers = new ObservableCollection(); + Performers = new ObservableCollection(); 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(); + Performers = new ObservableCollection(); StatusMessage = $"Erreur: {ex.Message}"; } finally @@ -158,7 +158,7 @@ public partial class ActivitiesPageViewModel : ViewModelBase if (activity is null) { - Performers = new ObservableCollection(); + Performers = new ObservableCollection(); return; } @@ -197,19 +197,18 @@ public partial class ActivitiesPageViewModel : ViewModelBase IsBusy = true; try { - var list = await _client.GetUsersAsync(activity.Code); - Performers = new ObservableCollection((list ?? new()) - .Select(ActivityUserDisplayItem.FromDto)); - StatusMessage = $"{activity.Name} · {Performers.Count} utilisateur(s)"; + var list = await _client.GetPerformersAsync(activity.Code); + Performers = new ObservableCollection(list ?? new()); + StatusMessage = $"{activity.Name} · {Performers.Count} prestataire(s)"; } catch (HttpRequestException ex) when (ex.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden) { - Performers = new ObservableCollection(); + Performers = new ObservableCollection(); StatusMessage = "Accès refusé pour les activités (scope 'api'). Déconnectez puis reconnectez-vous."; } catch (Exception ex) { - Performers = new ObservableCollection(); + Performers = new ObservableCollection(); StatusMessage = $"Erreur: {ex.Message}"; } finally diff --git a/src/PostIt/PostIt/ViewModels/ActivityUserDisplayItem.cs b/src/PostIt/PostIt/ViewModels/ActivityUserDisplayItem.cs deleted file mode 100644 index ee06b883..00000000 --- a/src/PostIt/PostIt/ViewModels/ActivityUserDisplayItem.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Yavsc.Abstract.Workflow; - -namespace PostIt.ViewModels; - -public sealed class ActivityUserDisplayItem -{ - public string PerformerId { get; init; } = string.Empty; - public bool HasPerformerProfile { get; init; } - public string PerformerBadgeLabel { get; init; } = "Profil pro"; - public bool IsPerformerActive { get; init; } - public string PerformerStatusBadgeLabel { get; init; } = "Inactif"; - public string PerformerStatusBadgeBackground { get; init; } = "#FDECEA"; - public string PerformerStatusBadgeBorder { get; init; } = "#C62828"; - public string PerformerStatusBadgeForeground { get; init; } = "#8E0000"; - public string UserName { get; init; } = string.Empty; - public string WebSite { get; init; } = string.Empty; - public int ExtraActivityCount { get; init; } - public string ExtraActivityLabel { get; init; } = "Pas d'autre activité"; - - public static ActivityUserDisplayItem FromDto(ActivityPerformerDto dto) - { - return new ActivityUserDisplayItem - { - PerformerId = dto.PerformerId, - HasPerformerProfile = dto.HasPerformerProfile, - UserName = dto.UserName, - WebSite = dto.WebSite, - IsPerformerActive = dto.Active, - PerformerStatusBadgeLabel = dto.Active ? "Actif" : "Inactif", - PerformerStatusBadgeBackground = dto.Active ? "#E6F7EC" : "#FDECEA", - PerformerStatusBadgeBorder = dto.Active ? "#2E7D32" : "#C62828", - PerformerStatusBadgeForeground = dto.Active ? "#1B5E20" : "#8E0000", - ExtraActivityCount = dto.ExtraActivityCount, - ExtraActivityLabel = dto.ExtraActivityCount == 0 - ? "Pas d'autre activité" - : $"Autres spécialisations: {dto.ExtraActivityCount}" - }; - } -} diff --git a/src/PostIt/PostIt/Views/ActivitiesPage.axaml b/src/PostIt/PostIt/Views/ActivitiesPage.axaml index 8dd88c6f..03248a0e 100644 --- a/src/PostIt/PostIt/Views/ActivitiesPage.axaml +++ b/src/PostIt/PostIt/Views/ActivitiesPage.axaml @@ -6,20 +6,6 @@ x:DataType="vm:ActivitiesPageViewModel" Header="Activités"> - - - - -