Aller au contenu principal

Utilisation

L'utilisation de CoreBlazorApp se fait en ajoutant le composant BeSwarmEnvironment au plus haut de la hiérarchie de la page.

App.razor
<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.

Information

Si l'authentification est réealisée, le message ChangeEvents.Login est envoyé.

Deconnecter l'utilisateur

await Session.Logout();
Information

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");
Information

Les messages ChangeEvents.Lang et ChangeEvents.AmPm sont envoyés.

Changer le format de l'heure

await Session.SetAmPm(true);
Information

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);
Information

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)
{
....
}
}

Attention

Ne pas oublier de se désabonner lors de la destruction du composant.

void IDisposable.Dispose()
{
Session.EnvironmentHasChanged -= async (ChangeEvents e) => await Refresh(e);
}
Information

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)