upgrade to tauri 2.0 beta
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
use std::error::Error;
|
||||
use std::convert::AsRef;
|
||||
use std::ffi::OsString;
|
||||
use std::sync::mpsc;
|
||||
use std::string::FromUtf8Error;
|
||||
use strum_macros::AsRefStr;
|
||||
|
||||
@@ -10,14 +9,16 @@ use aws_sdk_sts::{
|
||||
types::SdkError as AwsSdkError,
|
||||
error::GetSessionTokenError,
|
||||
};
|
||||
use rfd::{
|
||||
AsyncMessageDialog,
|
||||
MessageDialog,
|
||||
MessageLevel,
|
||||
};
|
||||
use sqlx::{
|
||||
error::Error as SqlxError,
|
||||
migrate::MigrateError,
|
||||
};
|
||||
use tauri::api::dialog::{
|
||||
MessageDialogBuilder,
|
||||
MessageDialogKind,
|
||||
};
|
||||
use tauri_plugin_global_shortcut::Error as ShortcutError;
|
||||
use tokio::sync::oneshot::error::RecvError;
|
||||
use serde::{
|
||||
Serialize,
|
||||
@@ -27,33 +28,66 @@ use serde::{
|
||||
};
|
||||
|
||||
|
||||
pub trait ShowError {
|
||||
fn error_popup(self, title: &str);
|
||||
fn error_popup_nowait(self, title: &str);
|
||||
#[allow(async_fn_in_trait)]
|
||||
pub trait ShowError<T>
|
||||
{
|
||||
async fn error_popup(self, title: &str);
|
||||
async fn error_popup_passthrough(self, title: &str) -> Result<T, ()>;
|
||||
fn blocking_error_popup(self, title: &str);
|
||||
fn error_print(self);
|
||||
fn error_print_prefix(self, prefix: &str);
|
||||
}
|
||||
|
||||
impl<E: std::fmt::Display> ShowError for Result<(), E> {
|
||||
fn error_popup(self, title: &str) {
|
||||
impl<T, E> ShowError<T> for Result<T, E>
|
||||
where E: std::fmt::Display
|
||||
{
|
||||
async fn error_popup(self, title: &str) {
|
||||
if let Err(e) = self {
|
||||
let (tx, rx) = mpsc::channel();
|
||||
MessageDialogBuilder::new(title, format!("{e}"))
|
||||
.kind(MessageDialogKind::Error)
|
||||
.show(move |_| tx.send(true).unwrap());
|
||||
|
||||
rx.recv().unwrap();
|
||||
AsyncMessageDialog::new()
|
||||
.set_level(MessageLevel::Error)
|
||||
.set_title(title)
|
||||
.set_description(format!("{e}"))
|
||||
.show()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
|
||||
fn error_popup_nowait(self, title: &str) {
|
||||
fn blocking_error_popup(self, title: &str) {
|
||||
if let Err(e) = self {
|
||||
MessageDialogBuilder::new(title, format!("{e}"))
|
||||
.kind(MessageDialogKind::Error)
|
||||
.show(|_| {})
|
||||
MessageDialog::new()
|
||||
.set_level(MessageLevel::Error)
|
||||
.set_title(title)
|
||||
.set_description(format!("{e}"))
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
async fn error_popup_passthrough(self, title: &str) -> Result<T, ()> {
|
||||
match self {
|
||||
Ok(v) => Ok(v),
|
||||
Err(e) => {
|
||||
AsyncMessageDialog::new()
|
||||
.set_level(MessageLevel::Error)
|
||||
.set_title(title)
|
||||
.set_description(format!("{e}"))
|
||||
.show()
|
||||
.await;
|
||||
Err(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// fn error_popup_nowait(self, title: &str) {
|
||||
// if let Err(e) = self {
|
||||
// let app = app::APP.get().expect("Error popup failed, app handle not available");
|
||||
// app.dialog()
|
||||
// .message(format!("{e}"))
|
||||
// .kind(MessageDialogKind::Error)
|
||||
// .title(title)
|
||||
// .show(|_| {})
|
||||
// }
|
||||
// }
|
||||
|
||||
fn error_print(self) {
|
||||
if let Err(e) = self {
|
||||
eprintln!("{e}");
|
||||
@@ -144,7 +178,7 @@ pub enum SetupError {
|
||||
#[error("Failed to resolve data directory: {0}")]
|
||||
DataDir(#[from] DataDirError),
|
||||
#[error("Failed to register hotkeys: {0}")]
|
||||
RegisterHotkeys(#[from] tauri::Error),
|
||||
RegisterHotkeys(#[from] ShortcutError),
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user