Skip to content

Commit deaf194

Browse files
authored
feat(HikVision): add Login/Logout/StartRealPlay/StopRealPlay callback (#787)
* refactor: 精简代码 * refactor: 增加状态更改逻辑 * feat: 增加回调方法
1 parent 9ea8f6f commit deaf194

2 files changed

Lines changed: 71 additions & 8 deletions

File tree

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

Lines changed: 71 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>
@@ -122,7 +158,17 @@ public async Task Logout()
122158
{
123159
await InvokeVoidAsync("logout", Id);
124160
}
161+
IsRealPlaying = false;
125162
IsLogined = false;
163+
await TriggerLogouted();
164+
}
165+
166+
private async Task TriggerLogouted()
167+
{
168+
if (OnLogoutedAsync != null)
169+
{
170+
await OnLogoutedAsync();
171+
}
126172
}
127173

128174
/// <summary>
@@ -134,6 +180,18 @@ public async Task StartRealPlay(int streamType, int channelId)
134180
if (IsLogined && !IsRealPlaying)
135181
{
136182
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();
137195
}
138196
}
139197

@@ -143,13 +201,19 @@ public async Task StartRealPlay(int streamType, int channelId)
143201
/// <returns></returns>
144202
public async Task StopRealPlay()
145203
{
146-
if (IsLogined && IsRealPlaying)
204+
if (IsRealPlaying)
147205
{
148-
var result = await InvokeAsync<bool?>("stopRealPlay", Id) ?? false;
149-
if (result)
150-
{
151-
IsRealPlaying = false;
152-
}
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();
153217
}
154218
}
155219

src/components/BootstrapBlazor.HikVision/wwwroot/hikvision.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ export async function startRealPlay(id, iStreamType, iChannelID) {
212212
});
213213
};
214214

215-
console.log(oWndInfo);
216215
if (oWndInfo !== null) {
217216
WebVideoCtrl.I_Stop({
218217
success: function () {

0 commit comments

Comments
 (0)