From 2ae0335ec870a4ed7484188ccf67b461b1643e83 Mon Sep 17 00:00:00 2001 From: Simon Hyll Date: Tue, 15 Aug 2023 23:35:36 +0200 Subject: [PATCH] fix: some final tweaks --- src/components/list/Recipes.astro | 2 +- .../docs/2/guide/recipe/notifications.mdx | 112 ++++++++++++++++++ src/content/docs/2/recipe/notifications.mdx | 112 ------------------ 3 files changed, 113 insertions(+), 113 deletions(-) create mode 100644 src/content/docs/2/guide/recipe/notifications.mdx delete mode 100644 src/content/docs/2/recipe/notifications.mdx diff --git a/src/components/list/Recipes.astro b/src/components/list/Recipes.astro index 9c31e3b0a7b..3fea8be5b25 100644 --- a/src/components/list/Recipes.astro +++ b/src/components/list/Recipes.astro @@ -2,7 +2,7 @@ import { LinkCard, CardGrid } from '@astrojs/starlight/components'; import { type CollectionEntry, getEntry } from 'astro:content'; -const entries = ['2/guide/recipe/stub']; +const entries = ['2/guide/recipe/notifications']; const list = (await Promise.all( entries.flatMap((entry) => getEntry('docs', entry)) diff --git a/src/content/docs/2/guide/recipe/notifications.mdx b/src/content/docs/2/guide/recipe/notifications.mdx new file mode 100644 index 00000000000..7a51cdb9f07 --- /dev/null +++ b/src/content/docs/2/guide/recipe/notifications.mdx @@ -0,0 +1,112 @@ +--- +title: Notifications +description: Stay tuned while we work on some delicious recipes. +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +In this recipe we'll take a look at sending a native notification to your user. We'll do this by using the official notification plugin. + +## Setup + +First you have to install the notification plugin in your backend. + + + + ```bash + tauri plugin add notification + ``` + + + + + ```toml + [dependencies] + tauri-plugin-notification = "2.0.0-alpha" + ``` + + + ```rust + #[cfg_attr(mobile, tauri::mobile_entry_point)] + pub fn run() { + tauri::Builder::default() + // Initialize the plugin + .plugin(tauri_plugin_notification::init()) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` + + + + + +## Usage + +Once you're done with the general setup you're free to use the notification plugin in either your frontend or straight from the backend. + +### Frontend + +Install the `@tauri-apps/plugin-notification` package using your favorite package manager. + +```js +import { + isPermissionGranted, + requestPermission, + sendNotification, +} from '@tauri-apps/plugin-notification'; + +// Do you have permission to send a notification? +let permissionGranted = await isPermissionGranted(); + +// If not we need to request it +if (!permissionGranted) { + const permission = await requestPermission(); + permissionGranted = permission === 'granted'; +} + +// Once permission has been granted we can send the notification +if (permissionGranted) { + sendNotification({ title: 'TAURI', body: 'Tauri is awesome!' }); +} +``` + +### Backend + +You can also create notifications straight from the backend. All you need to do is create an instance of `Notification` and `.show()` it. + + + + ```rust + use tauri_plugin_notification::Notification; + + #[tauri::command] + async fn notify(app: AppHandle) -> Result<(), ()> { + Notification::new(&app.config().tauri.bundle.identifier) + .title("New message") + .body("You've got a new message.") + .show() + } + ``` + + + ```rust + ``` + + + ```rust + ``` + + + + +## Deep dive + +### How it works + +The API sends a signal over the IPC to the backend. After that either the `notify-rust` or `win7-notifications` crate +takes care of sending a notification to the users system. + +### Security + +Aside from normal sanitization procedures of user input there are currently no known security notes for this recipe. diff --git a/src/content/docs/2/recipe/notifications.mdx b/src/content/docs/2/recipe/notifications.mdx deleted file mode 100644 index ef0fdd79d4d..00000000000 --- a/src/content/docs/2/recipe/notifications.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Notifications ---- - -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -In this recipe we'll take a look at sending a native notification to your user. We'll do this by using the official notification plugin. - -## Setup - -First you have to install the notification plugin in your backend. - - - - ```toml - [dependencies] - tauri-plugin-notification = "2.0.0-alpha" - ``` - - - ```rust - #[cfg_attr(mobile, tauri::mobile_entry_point)] - pub fn run() { - tauri::Builder::default() - // Initialize the plugin - .plugin(tauri_plugin_notification::init()) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); - } - ``` - - - -## Usage - -Once you're done with the general setup you're free to use the notification plugin in either your frontend or straight from the backend. - -### Frontend - -Install the `@tauri-apps/plugin-notification` package using your favorite package manager. - - - - ```html - ``` - - - ```html - - - - ``` - - - -### Backend - -You can also create notifications straight from the backend. All you need to do is create an instance of `Notification` and `.show()` it. - - - - ```rust - use tauri_plugin_notification::Notification; - - #[tauri::command] - async fn notify(app: AppHandle) -> Result<(), ()> { - Notification::new(&app.config().tauri.bundle.identifier) - .title("New message") - .body("You've got a new message.") - .show() - } - ``` - - - ```rust - ``` - - - ```rust - ``` - - - -## Deep dive - -### How it works - -TODO: Write stuff - -### Security - -TODO: Write stuff