From bc162b8a0548a9316b5cf807f61bf3d842347aff Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 6 Sep 2026 17:22:35 +0100 Subject: [PATCH] postit: cache rdv reverse geocoding results --- .../PostIt/ViewModels/Commands/RdvViewModel.cs | 16 ++++++++++++++++ src/PostIt/PostIt/Views/Commands/RdvPage.axaml | 8 ++++++-- .../PostIt/Views/Commands/RdvPage.axaml.cs | 15 +++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs index 9de2c0989..484471c25 100644 --- a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs +++ b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs @@ -20,6 +20,9 @@ public partial class RdvViewModel : BillingCommandPageViewModel [ObservableProperty] public partial string SuggestedAddress { get; set; } = string.Empty; + [ObservableProperty] + public partial bool IsResolvingAddress { get; set; } + [ObservableProperty] public partial double? Latitude { get; set; } @@ -37,6 +40,7 @@ public partial class RdvViewModel : BillingCommandPageViewModel } public bool HasSuggestedAddress => !string.IsNullOrWhiteSpace(SuggestedAddress); + public bool HasSuggestedAddressPanel => HasSuggestedAddress || IsResolvingAddress; protected override void ApplyExistingQuery(BillingQueryDetailsDto existingQuery) { @@ -135,6 +139,7 @@ public partial class RdvViewModel : BillingCommandPageViewModel public void NotifyReverseGeocodingStarted() { + IsResolvingAddress = true; this.SetInfoStatus(string.IsNullOrWhiteSpace(Address) ? "Recherche de l'adresse depuis la carte..." : "Recherche d'une adresse suggérée..." @@ -143,6 +148,7 @@ public partial class RdvViewModel : BillingCommandPageViewModel public void NotifyReverseGeocodingUnavailable() { + IsResolvingAddress = false; if (HasSuggestedAddress || !string.IsNullOrWhiteSpace(Address)) return; @@ -159,6 +165,7 @@ public partial class RdvViewModel : BillingCommandPageViewModel { Address = trimmedAddress; SuggestedAddress = string.Empty; + IsResolvingAddress = false; this.SetInfoStatus("Adresse mise à jour depuis la carte."); return; } @@ -166,10 +173,12 @@ public partial class RdvViewModel : BillingCommandPageViewModel if (string.Equals(Address.Trim(), trimmedAddress, StringComparison.Ordinal)) { SuggestedAddress = string.Empty; + IsResolvingAddress = false; return; } SuggestedAddress = trimmedAddress; + IsResolvingAddress = false; this.SetInfoStatus("Adresse suggérée depuis la carte. Appliquez-la si besoin."); } @@ -181,15 +190,22 @@ public partial class RdvViewModel : BillingCommandPageViewModel Address = SuggestedAddress.Trim(); SuggestedAddress = string.Empty; + IsResolvingAddress = false; this.SetInfoStatus("Adresse suggérée appliquée."); } partial void OnSuggestedAddressChanged(string value) { OnPropertyChanged(nameof(HasSuggestedAddress)); + OnPropertyChanged(nameof(HasSuggestedAddressPanel)); ApplySuggestedAddressCommand.NotifyCanExecuteChanged(); } + partial void OnIsResolvingAddressChanged(bool value) + { + OnPropertyChanged(nameof(HasSuggestedAddressPanel)); + } + protected override async Task SubmitAsync() { diff --git a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml index e6027ed31..4f466fb9c 100644 --- a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml +++ b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml @@ -42,9 +42,9 @@ + IsVisible="{Binding HasSuggestedAddressPanel}"> +