feat: use PermissionState type from tauri, closes #979 (#1701)

This commit is contained in:
Lucas Fernandes Nogueira
2024-08-29 15:40:38 -03:00
committed by GitHub
parent 9ea9e05944
commit e2e97db519
17 changed files with 55 additions and 89 deletions
+3 -5
View File
@@ -15,6 +15,8 @@ import {
addPluginListener,
} from "@tauri-apps/api/core";
export type { PermissionState } from "@tauri-apps/api/core";
/**
* Options to send a notification.
*
@@ -304,9 +306,6 @@ interface Channel {
visibility?: Visibility;
}
/** Possible permission values. */
type Permission = "granted" | "denied" | "default";
/**
* Checks if the permission to send notifications is granted.
* @example
@@ -340,7 +339,7 @@ async function isPermissionGranted(): Promise<boolean> {
*
* @since 2.0.0
*/
async function requestPermission(): Promise<Permission> {
async function requestPermission(): Promise<NotificationPermission> {
return await window.Notification.requestPermission();
}
@@ -570,7 +569,6 @@ async function onAction(
export type {
Attachment,
Options,
Permission,
Action,
ActionType,
PendingNotification,
+7 -8
View File
@@ -3,6 +3,7 @@
// SPDX-License-Identifier: MIT
import { invoke } from "@tauri-apps/api/core";
import type { PermissionState } from "@tauri-apps/api/core";
import type { Options } from "./index";
(function () {
@@ -19,23 +20,21 @@ import type { Options } from "./index";
return await invoke("plugin:notification|is_permission_granted");
}
function setNotificationPermission(
value: "granted" | "denied" | "default",
): void {
function setNotificationPermission(value: NotificationPermission): void {
permissionSettable = true;
// @ts-expect-error we can actually set this value on the webview
window.Notification.permission = value;
permissionSettable = false;
}
async function requestPermission(): Promise<
"default" | "denied" | "granted" | "prompt"
> {
return await invoke<"prompt" | "default" | "granted" | "denied">(
async function requestPermission(): Promise<PermissionState> {
return await invoke<PermissionState>(
"plugin:notification|request_permission",
).then((permission) => {
setNotificationPermission(
permission === "prompt" ? "default" : permission,
permission === "prompt" || permission === "prompt-with-rationale"
? "default"
: permission,
);
return permission;
});