Utilisation
L'utilisation de CoreBlazorApp se fait en ajoutant le composant BeSwarmEnvironment au plus haut de la hiérarchie de la page.
<BeSwarmEnvironment >
<Router AppAssembly="@typeof(App).Assembly" AdditionalAssemblies="new[] { typeof(BeSwarm.CoreBlazorApp.Pages.Login).Assembly}">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</BeSwarmEnvironment>>
Dès lors il est possible d'avoir accès à l'environnement dans les pages razor en injectant la classe.
[CascadingParameter] BeSwarmEnvironment Session { get; set; } = default!;
Services offerts par BeSwarmEnvironment
Verifier si la sessione est active
bool IsActive=Session.SessionIsActive;
retourne true si l'utilisateur est connecté
Récupérer le jeton utilisateur pour le passer aux webapi
var userToken=Session.UserToken;
Invoquer la fenêtre de login
await Session.Login();
Effectue un routage vers l'authentification BeSwarm et récupère le jeton utilisateur.
Si l'authentification est réealisée, le message ChangeEvents.Login est envoyé.
Deconnecter l'utilisateur
await Session.Logout();
Le message ChangeEvents.Logout est envoyé.
Récupérer un client http afin d'invoquer une webapi
var client=Session.GetUserHttpClient();
Obtenir le détail d'un message d'erreur retourné par l'appel d'une webapi
var error=Session.GetInternalErrorFromException(e);
Changer la langue
await Session.SetLang("FR");
Les messages ChangeEvents.Lang et ChangeEvents.AmPm sont envoyés.
Changer le format de l'heure
await Session.SetAmPm(true);
Le message ChangeEvents.AmPm est envoyé.
Connaître la langue en cours
var currentLang=Session.Lang;
Connaître le format de l'heure en cours
bool AmPm=Session.AmPm;
retourne true si le format de l'heure courant est AMPM
Gérer le mode sombre
await Session.SetDarkMode(true);
Le message ChangeEvents.DarkMode est envoyé.
Récupérer le mode en cours
var darkMode=Session.GetDarkMode;
S'abonner aux messages de notification
Afin de reçevoir les messages de notification,il suffit de s'abonner.
[CascadingParameter] BeSwarmEnvironment Session { get; set; } = default!;
protected override async Task OnAfterRenderAsync(bool FirstTime)
{
if (FirstTime)
{
Session.EnvironmentHasChanged += async (ChangeEvents e) => await Refresh(e);
await Refresh(0);
}
await base.OnAfterRenderAsync(FirstTime);
}
private async Task Refresh(ChangeEvents e)
{
if (e == ChangeEvents.Lang)
{
....
}
}
Ne pas oublier de se désabonner lors de la destruction du composant.
void IDisposable.Dispose()
{
Session.EnvironmentHasChanged -= async (ChangeEvents e) => await Refresh(e);
}
Le composant BeSwarmEnvironment peut effectuer des actions lors de son initialisation que le composant voudrait connaître.
Cependant il est possible que le composant ne soit pas encore initialisé lors de l'envoi du message.
Pour cela le composant peut forcer le déclenchement de la gestion des messages lors de son initialisation.
Ex: await Refresh(0)