diff --git a/SharepointToolbox/ViewModels/FeatureViewModelBase.cs b/SharepointToolbox/ViewModels/FeatureViewModelBase.cs index 61ef242..92ad9af 100644 --- a/SharepointToolbox/ViewModels/FeatureViewModelBase.cs +++ b/SharepointToolbox/ViewModels/FeatureViewModelBase.cs @@ -23,6 +23,12 @@ public abstract partial class FeatureViewModelBase : ObservableRecipient [ObservableProperty] private int _progressValue; + /// + /// Sites selected in the global toolbar picker. Updated via GlobalSitesChangedMessage. + /// Derived VMs check this in RunOperationAsync before falling back to per-tab SiteUrl. + /// + protected IReadOnlyList GlobalSites { get; private set; } = Array.Empty(); + public IAsyncRelayCommand RunCommand { get; } public RelayCommand CancelCommand { get; } @@ -73,10 +79,26 @@ public abstract partial class FeatureViewModelBase : ObservableRecipient protected override void OnActivated() { Messenger.Register(this, (r, m) => ((FeatureViewModelBase)r).OnTenantSwitched(m.Value)); + Messenger.Register(this, (r, m) => ((FeatureViewModelBase)r).OnGlobalSitesReceived(m.Value)); } protected virtual void OnTenantSwitched(TenantProfile profile) { // Derived classes override to reset their state } + + private void OnGlobalSitesReceived(IReadOnlyList sites) + { + GlobalSites = sites; + OnGlobalSitesChanged(sites); + } + + /// + /// Called when the global site selection changes. Override in derived VMs + /// to update UI state (e.g., pre-fill SiteUrl from first global site). + /// + protected virtual void OnGlobalSitesChanged(IReadOnlyList sites) + { + // Derived classes override to react to global site changes + } }