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

This reverts commit 4c120d4176.
pull/1569/head
FabianLars 11 months ago
parent 4c120d4176
commit 93bdb6d133
No known key found for this signature in database

@ -1,5 +0,0 @@
---
notification: patch
---
Fixed an issue that caused the `notification` plugin's initialization script to cause the WebView on Windows to throw a `STATUS_ACCESS_VIOLATION` error on remote websites.

@ -10,17 +10,16 @@ import type { Options } from "./index";
let permissionValue = "default";
async function isPermissionGranted(): Promise<boolean> {
// @ts-expect-error __TEMPLATE_windows__ will be replaced in rust before it's injected.
if (window.Notification.permission !== "default" || __TEMPLATE_windows__) {
if (window.Notification.permission !== "default") {
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
@ -32,10 +31,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;
});
@ -65,7 +64,7 @@ import type { Options } from "./index";
Object.assign(opts, {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
title,
})
}),
);
};

@ -1 +1 @@
!function(){"use strict";async function i(i,n={},t){return window.__TAURI_INTERNALS__.invoke(i,n,t)}"function"==typeof SuppressedError&&SuppressedError,function(){let n=!1,t="default";function o(i){n=!0,window.Notification.permission=i,n=!1}window.Notification=function(n,t){const o=t||{};!async function(n){"object"==typeof n&&Object.freeze(n),await i("plugin:notification|notify",{options:"string"==typeof n?{title:n}:n})}(Object.assign(o,{title:n}))},window.Notification.requestPermission=async function(){return await i("plugin:notification|request_permission").then((i=>(o("prompt"===i?"default":i),i)))},Object.defineProperty(window.Notification,"permission",{enumerable:!0,get:()=>t,set:i=>{if(!n)throw new Error("Readonly property");t=i}}),async function(){return"default"!==window.Notification.permission||__TEMPLATE_windows__?await Promise.resolve("granted"===window.Notification.permission):await i("plugin:notification|is_permission_granted")}().then((function(i){o(null===i?"default":i?"granted":"denied")}))}()}();
!function(){"use strict";async function i(i,n={},t){return window.__TAURI_INTERNALS__.invoke(i,n,t)}"function"==typeof SuppressedError&&SuppressedError,function(){let n=!1,t="default";function o(i){n=!0,window.Notification.permission=i,n=!1}window.Notification=function(n,t){const o=t||{};!async function(n){"object"==typeof n&&Object.freeze(n),await i("plugin:notification|notify",{options:"string"==typeof n?{title:n}:n})}(Object.assign(o,{title:n}))},window.Notification.requestPermission=async function(){return await i("plugin:notification|request_permission").then((i=>(o("prompt"===i?"default":i),i)))},Object.defineProperty(window.Notification,"permission",{enumerable:!0,get:()=>t,set:i=>{if(!n)throw new Error("Readonly property");t=i}}),async function(){return"default"!==window.Notification.permission?await Promise.resolve("granted"===window.Notification.permission):await i("plugin:notification|is_permission_granted")}().then((function(i){o(null===i?"default":i?"granted":"denied")}))}()}();

@ -227,10 +227,7 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
commands::request_permission,
commands::is_permission_granted
])
.js_init_script(include_str!("init-iife.js").replace(
"__TEMPLATE_windows__",
if cfg!(windows) { "true" } else { "false" },
))
.js_init_script(include_str!("init-iife.js").to_string())
.setup(|app, api| {
#[cfg(mobile)]
let notification = mobile::init(app, api)?;

Loading…
Cancel
Save