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"; let permissionValue = "default";
async function isPermissionGranted(): Promise<boolean> { async function isPermissionGranted(): Promise<boolean> {
// @ts-expect-error __TEMPLATE_windows__ will be replaced in rust before it's injected. if (window.Notification.permission !== "default") {
if (window.Notification.permission !== "default" || __TEMPLATE_windows__) {
return await Promise.resolve( return await Promise.resolve(
window.Notification.permission === "granted" window.Notification.permission === "granted",
); );
} }
return await invoke("plugin:notification|is_permission_granted"); return await invoke("plugin:notification|is_permission_granted");
} }
function setNotificationPermission( function setNotificationPermission(
value: "granted" | "denied" | "default" value: "granted" | "denied" | "default",
): void { ): void {
permissionSettable = true; permissionSettable = true;
// @ts-expect-error we can actually set this value on the webview // @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" "default" | "denied" | "granted" | "prompt"
> { > {
return await invoke<"prompt" | "default" | "granted" | "denied">( return await invoke<"prompt" | "default" | "granted" | "denied">(
"plugin:notification|request_permission" "plugin:notification|request_permission",
).then((permission) => { ).then((permission) => {
setNotificationPermission( setNotificationPermission(
permission === "prompt" ? "default" : permission permission === "prompt" ? "default" : permission,
); );
return permission; return permission;
}); });
@ -65,7 +64,7 @@ import type { Options } from "./index";
Object.assign(opts, { Object.assign(opts, {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
title, 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::request_permission,
commands::is_permission_granted commands::is_permission_granted
]) ])
.js_init_script(include_str!("init-iife.js").replace( .js_init_script(include_str!("init-iife.js").to_string())
"__TEMPLATE_windows__",
if cfg!(windows) { "true" } else { "false" },
))
.setup(|app, api| { .setup(|app, api| {
#[cfg(mobile)] #[cfg(mobile)]
let notification = mobile::init(app, api)?; let notification = mobile::init(app, api)?;

Loading…
Cancel
Save