Skip to content

Commit bea0cfc

Browse files
committed
feat: 增加回调方法
1 parent 689228c commit bea0cfc

1 file changed

Lines changed: 70 additions & 7 deletions

File tree

src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.cs

Lines changed: 70 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,31 @@ public partial class HikVisionWebPlugin
5858
/// 获得/设置 插件初始化完成后回调方法
5959
/// </summary>
6060
[Parameter]
61-
public Func<bool, Task> OnInitedAsync { get; set; }
61+
public Func<bool, Task>? OnInitedAsync { get; set; }
62+
63+
/// <summary>
64+
/// 获得/设置 登录成功后回调方法
65+
/// </summary>
66+
[Parameter]
67+
public Func<Task>? OnLoginedAsync { get; set; }
68+
69+
/// <summary>
70+
/// 获得/设置 注销成功后回调方法
71+
/// </summary>
72+
[Parameter]
73+
public Func<Task>? OnLogoutedAsync { get; set; }
74+
75+
/// <summary>
76+
/// 获得/设置 开始预览后回调方法
77+
/// </summary>
78+
[Parameter]
79+
public Func<Task>? OnStartRealPlayedAsync { get; set; }
80+
81+
/// <summary>
82+
/// 获得/设置 停止预览后回调方法
83+
/// </summary>
84+
[Parameter]
85+
public Func<Task>? OnStopRealPlayedAsync { get; set; }
6286

6387
private string? ClassString => CssBuilder.Default("bb-hik")
6488
.AddClassFromAttributes(AdditionalAttributes)
@@ -109,9 +133,21 @@ public async Task<bool> Login(string ip, int port, string userName, string passw
109133
{
110134
ThrowIfNotInited();
111135
IsLogined = await InvokeAsync<bool?>("login", Id, ip, port, userName, password, (int)loginType) ?? false;
136+
if (IsLogined)
137+
{
138+
await TriggerLogined();
139+
}
112140
return IsLogined;
113141
}
114142

143+
private async Task TriggerLogined()
144+
{
145+
if (OnLoginedAsync != null)
146+
{
147+
await OnLoginedAsync();
148+
}
149+
}
150+
115151
/// <summary>
116152
/// 登出方法
117153
/// </summary>
@@ -124,6 +160,15 @@ public async Task Logout()
124160
}
125161
IsRealPlaying = false;
126162
IsLogined = false;
163+
await TriggerLogouted();
164+
}
165+
166+
private async Task TriggerLogouted()
167+
{
168+
if (OnLogoutedAsync != null)
169+
{
170+
await OnLogoutedAsync();
171+
}
127172
}
128173

129174
/// <summary>
@@ -135,6 +180,18 @@ public async Task StartRealPlay(int streamType, int channelId)
135180
if (IsLogined && !IsRealPlaying)
136181
{
137182
IsRealPlaying = await InvokeAsync<bool?>("startRealPlay", Id, streamType, channelId) ?? false;
183+
if (IsRealPlaying)
184+
{
185+
await TriggerStartRealPlay();
186+
}
187+
}
188+
}
189+
190+
private async Task TriggerStartRealPlay()
191+
{
192+
if (OnStartRealPlayedAsync != null)
193+
{
194+
await OnStartRealPlayedAsync();
138195
}
139196
}
140197

@@ -144,13 +201,19 @@ public async Task StartRealPlay(int streamType, int channelId)
144201
/// <returns></returns>
145202
public async Task StopRealPlay()
146203
{
147-
if (IsLogined && IsRealPlaying)
204+
if (IsRealPlaying)
148205
{
149-
var result = await InvokeAsync<bool?>("stopRealPlay", Id) ?? false;
150-
if (result)
151-
{
152-
IsRealPlaying = false;
153-
}
206+
await InvokeVoidAsync("stopRealPlay", Id);
207+
IsRealPlaying = false;
208+
await TriggerStopRealPlay();
209+
}
210+
}
211+
212+
private async Task TriggerStopRealPlay()
213+
{
214+
if (OnStopRealPlayedAsync != null)
215+
{
216+
await OnStopRealPlayedAsync();
154217
}
155218
}
156219

0 commit comments

Comments
 (0)