From 5d55e4fa5863c1cdaba25652c6786760d4a9a960 Mon Sep 17 00:00:00 2001 From: Shane Weaver Date: Fri, 11 Jun 2021 14:12:35 -0700 Subject: [PATCH 1/2] Added GlobalProviderState property for easy binding --- .../ProviderManager.cs | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/CommunityToolkit.Authentication/ProviderManager.cs b/CommunityToolkit.Authentication/ProviderManager.cs index b4f82ef..7ad7e28 100644 --- a/CommunityToolkit.Authentication/ProviderManager.cs +++ b/CommunityToolkit.Authentication/ProviderManager.cs @@ -15,7 +15,7 @@ namespace CommunityToolkit.Authentication /// ProviderManager.Instance.GlobalProvider = await MsalProvider.CreateAsync(...); /// /// - public partial class ProviderManager + public partial class ProviderManager : INotifyPropertyChanged { /// /// Gets the name of the toolkit client to identify self in Graph calls. @@ -37,7 +37,8 @@ public partial class ProviderManager /// public event EventHandler ProviderStateChanged; - private IProvider _provider; + /// + public event PropertyChangedEventHandler PropertyChanged; /// /// Gets or sets the global provider used by all Microsoft.Toolkit.Graph.Controls. @@ -54,7 +55,7 @@ public IProvider GlobalProvider var oldState = _provider?.State; if (_provider != null) { - _provider.StateChanged -= ProviderStateChanged; + _provider.StateChanged -= OnProviderStateChanged; } _provider = value; @@ -62,17 +63,33 @@ public IProvider GlobalProvider var newState = _provider?.State; if (_provider != null) { - _provider.StateChanged += ProviderStateChanged; + _provider.StateChanged += OnProviderStateChanged; } ProviderUpdated?.Invoke(this, _provider); ProviderStateChanged?.Invoke(this, new ProviderStateChangedEventArgs(oldState, newState)); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProvider))); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProviderState))); } } + /// + /// Gets the ProviderState of the current GlobalProvider instance. + /// Use for binding scenarios instead of ProviderManager.Instance.GlobalProvider.State. + /// + public ProviderState? GlobalProviderState => GlobalProvider?.State; + + private IProvider _provider; + private ProviderManager() { // Use Instance } + + private void OnProviderStateChanged(object sender, ProviderStateChangedEventArgs args) + { + ProviderStateChanged?.Invoke(sender, args); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProviderState))); + } } } From 79ae9476f0a493e8d462a0a15896e670a702ff0d Mon Sep 17 00:00:00 2001 From: Shane Weaver Date: Thu, 24 Jun 2021 10:47:24 -0700 Subject: [PATCH 2/2] Renamed GlobalProviderState to State --- CommunityToolkit.Authentication/ProviderManager.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CommunityToolkit.Authentication/ProviderManager.cs b/CommunityToolkit.Authentication/ProviderManager.cs index 7ad7e28..c0a69b4 100644 --- a/CommunityToolkit.Authentication/ProviderManager.cs +++ b/CommunityToolkit.Authentication/ProviderManager.cs @@ -8,11 +8,11 @@ namespace CommunityToolkit.Authentication { /// - /// Shared provider manager used by controls in Microsoft.Toolkit.Graph.Controls to authenticate and call the Microsoft Graph. + /// Shared provider manager used by controls and helpers to authenticate and call the Microsoft Graph. /// /// To set your own existing provider: /// - /// ProviderManager.Instance.GlobalProvider = await MsalProvider.CreateAsync(...); + /// ProviderManager.Instance.GlobalProvider = await new MsalProvider(clientId, scopes); /// /// public partial class ProviderManager : INotifyPropertyChanged @@ -69,7 +69,7 @@ public IProvider GlobalProvider ProviderUpdated?.Invoke(this, _provider); ProviderStateChanged?.Invoke(this, new ProviderStateChangedEventArgs(oldState, newState)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProvider))); - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProviderState))); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(State))); } } @@ -77,7 +77,7 @@ public IProvider GlobalProvider /// Gets the ProviderState of the current GlobalProvider instance. /// Use for binding scenarios instead of ProviderManager.Instance.GlobalProvider.State. /// - public ProviderState? GlobalProviderState => GlobalProvider?.State; + public ProviderState? State => GlobalProvider?.State; private IProvider _provider; @@ -89,7 +89,7 @@ private ProviderManager() private void OnProviderStateChanged(object sender, ProviderStateChangedEventArgs args) { ProviderStateChanged?.Invoke(sender, args); - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GlobalProviderState))); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(State))); } } }