
Dispatch message distribution
By injecting the service to call the instance method, the site-wide pop-up window is used for message notification
Through this component function, this site realizes the function of prompting the whole site when the code warehouse is submitted.
1. Get the Injection Service specified message entity class
[Inject]
[NotNull]
private IDispatchService<GiteePostBody>? DispatchService { get; set; }
2. Subscribe notifications
protected override void OnInitialized()
{
// ...
DispatchService.Subscribe(Notify);
}
3. Unsubscribe when the page or component is destroyed
private void Dispose(bool disposing)
{
if (disposing)
{
DispatchService.UnSubscribe(Notify);
}
}
4. Notification implementation method Notify
private async Task Notify(DispatchEntry<GiteePostBody> payload)
{
if (payload.Entry != null)
{
var option = new ToastOption()
{
Category = ToastCategory.Information,
Title = notification title,
Content = Notification content
};
await Toast.Show(option);
}
}
Toast
component for notification, and any other built-in message component or custom component can be used for notification operation in actual combatClick the button to distribute the message, all people who open this page can receive the message distributed by this button
Demo
Since this function is a site-wide push notification, in order to prevent malicious use, in the example below, the button notification is disabled for 30 seconds; the message injection code is in the MainLayout
template
public class MessageItem
{
public string? Message { get; set; }
}
@page "/dispatches"
@inject IStringLocalizer<Dispatches> Localizer
<h3>Dispatch message distribution</h3>
<h4>By injecting the service to call the instance method, the site-wide pop-up window is used for message notification</h4>
<Tips class="mt-3">
<p>This component provides functions in the form of injection services, which are usually used for site-wide message push and other functions; using this service requires <b>subscribe</b> and <b>unsubscribe</b> operations in the code</p>
</Tips>
<p>Through this component function, this site realizes the function of prompting the whole site when the code warehouse is submitted.</p>
<p>1. Get the <b>Injection Service</b> specified message entity class</p>
<Pre>[Inject]
[NotNull]
private IDispatchService<GiteePostBody>? DispatchService { get; set; }</Pre>
<p>2. <b>Subscribe</b> notifications</p>
<Pre>protected override void OnInitialized()
{
// ...
DispatchService.Subscribe(Notify);
}</Pre>
<p>3. <b>Unsubscribe</b> when the page or component is destroyed</p>
<Pre>private void Dispose(bool disposing)
{
if (disposing)
{
DispatchService.UnSubscribe(Notify);
}
}</Pre>
<p>4. Notification implementation method <code>Notify</code></p>
<Pre>private async Task Notify(DispatchEntry<GiteePostBody> payload)
{
if (payload.Entry != null)
{
var option = new ToastOption()
{
Category = ToastCategory.Information,
Title = notification title,
Content = Notification content
};
await Toast.Show(option);
}
}</Pre>
<div>used in this example <code>Toast</code> component for notification, and any other built-in message component or custom component can be used for notification operation in actual combat</div>
<DemoBlock Title="Practical application" Introduction="Click the button to distribute the message, all people who open this page can receive the message distributed by this button" Name="Dispatch" Demo="typeof(Demos.Dispatch.DispatchNormal)">
<p>Since this function is a site-wide push notification, in order to prevent malicious use, in the example below, the button notification is disabled for <b>30</b> seconds; the message injection code is in the <code>MainLayout</code> template</p>
<Pre class="mb-3">public class MessageItem
{
public string? Message { get; set; }
}</Pre>
</DemoBlock>
Error: Response status code does not indicate success: 404 (Not Found).