Skip to content

Commit 8d42763

Browse files
committed
untagged & YesNoCancel
1 parent dd22a88 commit 8d42763

File tree

6 files changed

+17
-23
lines changed

6 files changed

+17
-23
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
},
3636
"engines": {
3737
"pnpm": "^10.0.0"
38-
}
38+
},
39+
"packageManager": "[email protected]+sha512.cdf928fca20832cd59ec53826492b7dc25dc524d4370b6b4adbf65803d32efaa6c1c88147c0ae4e8d579a6c9eec715757b50d4fa35eea179d868eada4ed043af"
3940
}

plugins/dialog/api-iife.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/dialog/guest-js/index.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,11 @@ interface SaveDialogOptions {
8282
*
8383
* @since 2.3.0
8484
*/
85-
export type MessageDialogDefaultButtons = 'Ok' | 'OkCancel' | 'YesNo'
85+
export type MessageDialogDefaultButtons =
86+
| 'Ok'
87+
| 'OkCancel'
88+
| 'YesNo'
89+
| 'YesNoCancel'
8690

8791
/**
8892
* The Yes, No and Cancel buttons of a message dialog.
@@ -307,22 +311,6 @@ async function save(options: SaveDialogOptions = {}): Promise<string | null> {
307311
*/
308312
export type MessageDialogResult = 'Yes' | 'No' | 'Ok' | 'Cancel' | (string & {})
309313

310-
type MessageDialogResultRust =
311-
| 'Yes'
312-
| 'No'
313-
| 'Ok'
314-
| 'Cancel'
315-
| { Custom: string }
316-
317-
/** Internal function to convert the result to JS. */
318-
function resultToJS(res: MessageDialogResultRust): MessageDialogResult {
319-
if (typeof res === 'string') {
320-
return res
321-
} else {
322-
return res.Custom
323-
}
324-
}
325-
326314
/**
327315
* Shows a message dialog with an `Ok` button.
328316
* @example
@@ -346,15 +334,13 @@ async function message(
346334
): Promise<MessageDialogResult> {
347335
const opts = typeof options === 'string' ? { title: options } : options
348336

349-
const res = await invoke<MessageDialogResultRust>('plugin:dialog|message', {
337+
return invoke<MessageDialogResult>('plugin:dialog|message', {
350338
message: message.toString(),
351339
title: opts?.title?.toString(),
352340
kind: opts?.kind,
353341
okButtonLabel: opts?.okLabel?.toString(),
354342
buttons: buttonsToRust(opts?.buttons)
355343
})
356-
357-
return resultToJS(res)
358344
}
359345

360346
/**

plugins/dialog/src/desktop.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use rfd::{AsyncFileDialog, AsyncMessageDialog};
1313
use serde::de::DeserializeOwned;
1414
use tauri::{plugin::PluginApi, AppHandle, Runtime};
1515

16-
use crate::{models::*, FileDialogBuilder, FilePath, MessageDialogBuilder};
16+
use crate::{models::*, FileDialogBuilder, FilePath, MessageDialogBuilder, CANCEL, NO, YES};
1717

1818
pub fn init<R: Runtime, C: DeserializeOwned>(
1919
app: &AppHandle<R>,
@@ -115,6 +115,9 @@ impl From<MessageDialogButtons> for rfd::MessageButtons {
115115
MessageDialogButtons::YesNo => Self::YesNo,
116116
MessageDialogButtons::OkCustom(ok) => Self::OkCustom(ok),
117117
MessageDialogButtons::OkCancelCustom(ok, cancel) => Self::OkCancelCustom(ok, cancel),
118+
MessageDialogButtons::YesNoCancel => {
119+
Self::YesNoCancelCustom(YES.into(), NO.into(), CANCEL.into())
120+
}
118121
MessageDialogButtons::YesNoCancelCustom(yes, no, cancel) => {
119122
Self::YesNoCancelCustom(yes, no, cancel)
120123
}

plugins/dialog/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ impl<R: Runtime> MessageDialogBuilder<R> {
243243
MessageDialogButtons::Ok => (Some(OK), None, None),
244244
MessageDialogButtons::OkCancel => (Some(OK), None, Some(CANCEL)),
245245
MessageDialogButtons::YesNo => (Some(YES), Some(NO), None),
246+
MessageDialogButtons::YesNoCancel => (Some(YES), Some(NO), Some(CANCEL)),
246247
MessageDialogButtons::OkCustom(ok) => (Some(ok.as_str()), None, None),
247248
MessageDialogButtons::OkCancelCustom(ok, cancel) => {
248249
(Some(ok.as_str()), None, Some(cancel.as_str()))

plugins/dialog/src/models.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ pub enum MessageDialogButtons {
6161
OkCancel,
6262
/// 2 buttons `Yes` and `No` with OS default dialog texts
6363
YesNo,
64+
/// 3 buttons `Yes`, `No` and `Cancel` with OS default dialog texts
65+
YesNoCancel,
6466
/// A single `Ok` button with custom text
6567
OkCustom(String),
6668
/// 2 buttons `Ok` and `Cancel` with custom texts
@@ -71,6 +73,7 @@ pub enum MessageDialogButtons {
7173

7274
/// Result of a message dialog
7375
#[derive(Debug, Default, Clone, PartialEq, Eq, Deserialize, Serialize)]
76+
#[serde(untagged)]
7477
pub enum MessageDialogResult {
7578
Yes,
7679
No,

0 commit comments

Comments
 (0)