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
+ }
}