Permissions
How to use the Permissions class of the bit Butil?
Usage
To query the browser's permission state you need to inject the Bit.Butil.Permissions class and use it like this:
@inject Bit.Butil.Permissions permissions
@code {
var state = await permissions.Query("geolocation");
}Methods
IsSupported:
Returns whether the Permissions API (navigator.permissions) is available in the current browser (MDN).
@inject Bit.Butil.Permissions permissions
<BitButton OnClick="@CheckSupported">IsSupported</BitButton>
<div>Is supported: @isSupported</div>
@code {
private string? isSupported;
private async Task CheckSupported()
{
isSupported = (await permissions.IsSupported()).ToString();
}
}Query:
Returns the current state (granted, denied, prompt or unknown) for a given permission descriptor name, without triggering a prompt (MDN).
@inject Bit.Butil.Permissions permissions
<select @bind="selectedPermission">
@foreach (var name in permissionNames)
{
<option value="@name">@name</option>
}
</select>
<BitButton OnClick="@QuerySelected">Query selected</BitButton>
<BitButton OnClick="@QueryAll">Query all common</BitButton>
<div>@queryResult</div>
@code {
private string selectedPermission = "geolocation";
private string? queryResult;
private static readonly string[] permissionNames =
[
"geolocation", "notifications", "camera", "microphone",
"clipboard-read", "clipboard-write", "push", "midi",
"background-sync", "persistent-storage",
];
private async Task QuerySelected()
{
var state = await permissions.Query(selectedPermission);
queryResult = $"{selectedPermission} → {state}";
}
private async Task QueryAll()
{
var result = "";
foreach (var name in permissionNames)
{
var state = await permissions.Query(name);
result += $"{name} → {state}\n";
}
queryResult = result;
}
}