31 lines
1.3 KiB
C#
31 lines
1.3 KiB
C#
using Microsoft.JSInterop;
|
|
|
|
namespace ChessCubing.App.Services;
|
|
|
|
public sealed class BrowserBridge(IJSRuntime jsRuntime)
|
|
{
|
|
public ValueTask StartViewportAsync()
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingViewport.start");
|
|
|
|
public ValueTask SetBodyStateAsync(string? page, string? bodyClass)
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingPage.setBodyState", page, bodyClass ?? string.Empty);
|
|
|
|
public ValueTask<string?> ReadMatchJsonAsync()
|
|
=> jsRuntime.InvokeAsync<string?>("chesscubingStorage.getMatchState", MatchStore.StorageKey, MatchStore.WindowNameKey);
|
|
|
|
public ValueTask WriteMatchJsonAsync(string json)
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingStorage.setMatchState", MatchStore.StorageKey, MatchStore.WindowNameKey, json);
|
|
|
|
public ValueTask ClearMatchAsync()
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingStorage.clearMatchState", MatchStore.StorageKey);
|
|
|
|
public ValueTask<bool> PlayCubePhaseAlertAsync()
|
|
=> jsRuntime.InvokeAsync<bool>("chesscubingAudio.playCubePhaseAlert");
|
|
|
|
public ValueTask PrimeAudioAsync()
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingAudio.prime");
|
|
|
|
public ValueTask ForceRefreshAsync(string path)
|
|
=> jsRuntime.InvokeVoidAsync("chesscubingBrowser.forceRefresh", path);
|
|
}
|