I have tauri problem. When I use function sendNotification it doesn`t do anything.
Main.jsx file. Here I listen for event “show_notification”. I am sure that it works because I tried to log payload when event emitted from backend. Also I need to writeText to clipboard but It also doesn`t work.
Handlers.rs file. Here function notification waits for request and then it send event to frontend with message payload.
Code:
Main.jsx
import { invoke } from "@tauri-apps/api";
import { listen } from "@tauri-apps/api/event";
import {
isPermissionGranted,
sendNotification,
requestPermission,
} from "@tauri-apps/api/notification";
import { readText, writeText } from "@tauri-apps/api/clipboard"
if (process.env.NODE_ENV === "production") {
invoke("plugin:autostart|enable");
}
readText().then((response) => console.log(response));
useEffect(() => {
const unlisten = listen("show_notification", (ev) => {
sendNotification({ title: "INotifyer", body: ev.payload });
});
listen("set_clipboard", (ev) => {
writeText(ev.payload);
});
return () => {
unlisten.then((f) => f());
};
}, []);
Handlers.rs
pub async fn notification(
action: models::Action,
window: tauri::Window
) -> Result<impl Reply, Infallible> {
window.emit("show_notification", action.msg.to_string()).unwrap();
Ok(warp::http::StatusCode::OK)
}
Configuration
tauri.conf.json
"tauri": {
"allowlist": {
"all": false,
"clipboard": {
"all": true
},
"notification": {
"all": true
}
},
"bundle": {
"active": true,
"category": "DeveloperTool",
"copyright": "",
"deb": {
"depends": []
},
"externalBin": [],
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/[email protected]",
"icons/icon.ico"
],
"longDescription": "",
"macOS": {
"entitlements": null,
"exceptionDomain": "",
"frameworks": [],
"providerShortName": null,
"signingIdentity": null
},
"resources": [],
"shortDescription": "",
"targets": "all",
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
},
"security": {
"csp": null
},
"windows": [
{
"fullscreen": false,
"height": 600,
"resizable": false,
"title": "INotifyer",
"width": 1000,
"decorations": false,
"transparent": true,
"visible": false
}
],
"systemTray": {
"iconPath": "icons/32x32.png",
"iconAsTemplate": true
}
}
Cargo.toml
tauri = { version = "1.2.3", features = ["clipboard-all", "devtools", "notification-all", "system-tray"] }
tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/tauri-plugin-single-instance", branch = "dev" }
tauri-plugin-autostart = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "dev" }
Package.json
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"tauri": "tauri",
"start": "tauri dev"
},
"devDependencies": {
"@tauri-apps/api": "^1.2.0",
"@tauri-apps/cli": "^1.2.3",
"@types/react": "^18.0.32",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-react": "^3.1.0",
"react-error-overlay": "^6.0.11",
"sass": "^1.60.0",
"vite": "^4.2.1"
},
"dependencies": {
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
"@react-icons/all-files": "^4.1.0",
"@tauri-apps/api": "^1.2.0",
"animejs": "^3.2.1",
"firebase": "^9.19.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.8.0",
"react-router-dom": "^6.10.0",
"vite-plugin-require": "^1.1.10"
}
Platform
OS: Windows 11