d3b6026bfd
- Filled empty libs/hbb_common/ submodule (cloned from rustdesk/hbb_common) - Patched Flutter 3.44 / Dart 3.12 compatibility: * flutter/lib/generated_bridge.dart: asTypedList with cast<>, DartPort=Int64 * flutter/lib/common.dart: DialogTheme->DialogThemeData, TabBarTheme->TabBarThemeData * flutter/pubspec.yaml: extended_text 14.0.0->15.0.2, google_fonts override 5.0.0 * flutter/macos/Runner/Configs/Release.xcconfig: EXCLUDED_ARCHS=x86_64 - Build verified: cargo check + cargo build --features flutter + cargo build --release --features flutter - Verified flutter build macos --debug and --release both produce working .app - Verified .dmg installer (27MB arm64) created via hdiutil - Build deps: Xcode 26.5, CocoaPods 1.16.2, Flutter 3.44, VCPKG arm64-osx
56 lines
1.3 KiB
Rust
56 lines
1.3 KiB
Rust
use crate::ResultType;
|
|
use osascript;
|
|
use serde_derive::{Deserialize, Serialize};
|
|
|
|
#[derive(Serialize)]
|
|
struct AlertParams {
|
|
title: String,
|
|
message: String,
|
|
alert_type: String,
|
|
buttons: Vec<String>,
|
|
}
|
|
|
|
#[derive(Deserialize)]
|
|
struct AlertResult {
|
|
#[serde(rename = "buttonReturned")]
|
|
button: String,
|
|
}
|
|
|
|
/// Firstly run the specified app, then alert a dialog. Return the clicked button value.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `app` - The app to execute the script.
|
|
/// * `alert_type` - Alert type. . informational, warning, critical
|
|
/// * `title` - The alert title.
|
|
/// * `message` - The alert message.
|
|
/// * `buttons` - The buttons to show.
|
|
pub fn alert(
|
|
app: String,
|
|
alert_type: String,
|
|
title: String,
|
|
message: String,
|
|
buttons: Vec<String>,
|
|
) -> ResultType<String> {
|
|
let script = osascript::JavaScript::new(&format!(
|
|
"
|
|
var App = Application('{}');
|
|
App.includeStandardAdditions = true;
|
|
return App.displayAlert($params.title, {{
|
|
message: $params.message,
|
|
'as': $params.alert_type,
|
|
buttons: $params.buttons,
|
|
}});
|
|
",
|
|
app
|
|
));
|
|
|
|
let result: AlertResult = script.execute_with_params(AlertParams {
|
|
title,
|
|
message,
|
|
alert_type,
|
|
buttons,
|
|
})?;
|
|
Ok(result.button)
|
|
}
|