fix(notification/windows): Grant permission without invoking backend

This commit is contained in:
FabianLars
2024-07-16 13:21:10 +02:00
parent 8824a24e15
commit 4c120d4176
4 changed files with 17 additions and 8 deletions
+7 -6
View File
@@ -10,16 +10,17 @@ import type { Options } from "./index";
let permissionValue = "default";
async function isPermissionGranted(): Promise<boolean> {
if (window.Notification.permission !== "default") {
// @ts-expect-error __TEMPLATE_windows__ will be replaced in rust before it's injected.
if (window.Notification.permission !== "default" || __TEMPLATE_windows__) {
return await Promise.resolve(
window.Notification.permission === "granted",
window.Notification.permission === "granted"
);
}
return await invoke("plugin:notification|is_permission_granted");
}
function setNotificationPermission(
value: "granted" | "denied" | "default",
value: "granted" | "denied" | "default"
): void {
permissionSettable = true;
// @ts-expect-error we can actually set this value on the webview
@@ -31,10 +32,10 @@ import type { Options } from "./index";
"default" | "denied" | "granted" | "prompt"
> {
return await invoke<"prompt" | "default" | "granted" | "denied">(
"plugin:notification|request_permission",
"plugin:notification|request_permission"
).then((permission) => {
setNotificationPermission(
permission === "prompt" ? "default" : permission,
permission === "prompt" ? "default" : permission
);
return permission;
});
@@ -64,7 +65,7 @@ import type { Options } from "./index";
Object.assign(opts, {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
title,
}),
})
);
};