Skip to content

Commit 02a8024

Browse files
authored
feat(BrowserFinger): redesign IBrowserFinger service (#4543)
* refactor: 移除 BorwerFinger 组件 * refactor: 重构服务 * test: 更新单元测试
1 parent 696292e commit 02a8024

File tree

5 files changed

+11
-121
lines changed

5 files changed

+11
-121
lines changed

src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<DrawerContainer></DrawerContainer>
1212

1313
<ResizeNotification></ResizeNotification>
14-
<BrowserFinger></BrowserFinger>
1514
<ConnectionHub></ConnectionHub>
1615
<Mask></Mask>
1716

src/BootstrapBlazor/Components/BrowserFinger/BrowserFinger.cs

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/BootstrapBlazor/Services/DefaultBrowserFingerService.cs

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,24 @@
33
// See the LICENSE file in the project root for more information.
44
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
55

6-
using System.Collections.Concurrent;
7-
86
namespace BootstrapBlazor.Components;
97

108
/// <summary>
119
/// 浏览器指纹服务
1210
/// </summary>
13-
class DefaultBrowserFingerService : IBrowserFingerService
11+
class DefaultBrowserFingerService(IJSRuntime jSRuntime) : IBrowserFingerService
1412
{
15-
private ConcurrentDictionary<object, Func<Task<string?>>> Cache { get; } = new();
16-
17-
/// <summary>
18-
/// <inheritdoc/>
19-
/// </summary>
20-
/// <param name="target"></param>
21-
/// <param name="callback"></param>
22-
public void Subscribe(object target, Func<Task<string?>> callback) => Cache.GetOrAdd(target, k => callback);
13+
[NotNull]
14+
private JSModule? _module = null;
2315

24-
/// <summary>
25-
/// <inheritdoc/>
26-
/// </summary>
27-
/// <param name="target"></param>
28-
public void Unsubscribe(object target) => Cache.TryRemove(target, out _);
16+
private Task<JSModule> LoadModule() => jSRuntime.LoadModule("./_content/BootstrapBlazor/modules/utility.js");
2917

3018
/// <summary>
31-
/// <inheritdoc/>
19+
/// 获取剪切板数据方法
3220
/// </summary>
33-
/// <returns></returns>
34-
public async Task<string?> GetFingerCodeAsync()
21+
public async Task<string?> GetFingerCodeAsync(CancellationToken token = default)
3522
{
36-
string? code = null;
37-
var cb = Cache.LastOrDefault();
38-
if (cb.Value != null)
39-
{
40-
code = await cb.Value();
41-
}
42-
return code;
23+
_module ??= await LoadModule();
24+
return await _module.InvokeAsync<string?>("getFingerCode", token);
4325
}
4426
}

src/BootstrapBlazor/Services/IBrowserFingerService.cs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,9 @@ namespace BootstrapBlazor.Components;
1010
/// </summary>
1111
public interface IBrowserFingerService
1212
{
13-
/// <summary>
14-
/// 订阅指纹方法回调
15-
/// </summary>
16-
/// <param name="target"></param>
17-
/// <param name="callback"></param>
18-
void Subscribe(object target, Func<Task<string?>> callback);
19-
20-
/// <summary>
21-
/// 取消指纹方法回调
22-
/// </summary>
23-
/// <param name="target"></param>
24-
void Unsubscribe(object target);
25-
2613
/// <summary>
2714
/// 获得当前浏览器指纹方法
2815
/// </summary>
2916
/// <returns></returns>
30-
Task<string?> GetFingerCodeAsync();
17+
Task<string?> GetFingerCodeAsync(CancellationToken token = default);
3118
}

test/UnitTest/Services/BrowserFingerServiceTest.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ public class BrowserFingerServiceTest : BootstrapBlazorTestBase
1010
[Fact]
1111
public async Task GetFingerCodeAsync_Ok()
1212
{
13+
Context.JSInterop.Setup<string?>("getFingerCode").SetResult("9527");
1314
var service = Context.Services.GetRequiredService<IBrowserFingerService>();
14-
var cut = Context.RenderComponent<BrowserFinger>();
1515
var code = await service.GetFingerCodeAsync();
16-
cut.Instance.Dispose();
17-
Assert.Null(code);
16+
Assert.Equal("9527", code);
1817
}
1918
}

0 commit comments

Comments
 (0)