feat: use notify-rust, remove dart/windows_ui

This commit is contained in:
2024-04-27 14:25:11 +08:00
parent d2694a1e25
commit 0f349bee33
10 changed files with 169 additions and 24 deletions

View File

@ -0,0 +1,20 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.32.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
import '../frb_generated.dart';
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
Future<void> sendNotify(
{String? summary,
String? body,
String? appName,
String? appId,
dynamic hint}) =>
RustLib.instance.api.sendNotify(
summary: summary,
body: body,
appName: appName,
appId: appId,
hint: hint);

View File

@ -4,6 +4,7 @@
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
import 'api/http_api.dart';
import 'api/notify_api.dart';
import 'api/rs_process.dart';
import 'dart:async';
import 'dart:convert';
@ -56,7 +57,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
String get codegenVersion => '2.0.0-dev.32';
@override
int get rustContentHash => 1270049297;
int get rustContentHash => 1067953400;
static const kDefaultExternalLibraryLoaderConfig =
ExternalLibraryLoaderConfig(
@ -82,6 +83,13 @@ abstract class RustLibApi extends BaseApi {
Future<void> setDefaultHeader(
{required Map<String, String> headers, dynamic hint});
Future<void> sendNotify(
{String? summary,
String? body,
String? appName,
String? appId,
dynamic hint});
Stream<RsProcessStreamData> start(
{required String executable,
required List<String> arguments,
@ -202,6 +210,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
argNames: ["headers"],
);
@override
Future<void> sendNotify(
{String? summary,
String? body,
String? appName,
String? appId,
dynamic hint}) {
return handler.executeNormal(NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_opt_String(summary);
var arg1 = cst_encode_opt_String(body);
var arg2 = cst_encode_opt_String(appName);
var arg3 = cst_encode_opt_String(appId);
return wire.wire_send_notify(port_, arg0, arg1, arg2, arg3);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_unit,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kSendNotifyConstMeta,
argValues: [summary, body, appName, appId],
apiImpl: this,
hint: hint,
));
}
TaskConstMeta get kSendNotifyConstMeta => const TaskConstMeta(
debugName: "send_notify",
argNames: ["summary", "body", "appName", "appId"],
);
@override
Stream<RsProcessStreamData> start(
{required String executable,

View File

@ -4,6 +4,7 @@
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
import 'api/http_api.dart';
import 'api/notify_api.dart';
import 'api/rs_process.dart';
import 'dart:async';
import 'dart:convert';
@ -548,6 +549,39 @@ class RustLibWire implements BaseWire {
late final _wire_set_default_header = _wire_set_default_headerPtr.asFunction<
void Function(int, ffi.Pointer<wire_cst_list_record_string_string>)>();
void wire_send_notify(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> summary,
ffi.Pointer<wire_cst_list_prim_u_8_strict> body,
ffi.Pointer<wire_cst_list_prim_u_8_strict> app_name,
ffi.Pointer<wire_cst_list_prim_u_8_strict> app_id,
) {
return _wire_send_notify(
port_,
summary,
body,
app_name,
app_id,
);
}
late final _wire_send_notifyPtr = _lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>)>>(
'frbgen_starcitizen_doctor_wire_send_notify');
late final _wire_send_notify = _wire_send_notifyPtr.asFunction<
void Function(
int,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>)>();
void wire_start(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> executable,

View File

@ -16,6 +16,8 @@ import 'package:starcitizen_doctor/common/conf/url_conf.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
import 'package:starcitizen_doctor/common/io/rs_http.dart';
import 'package:starcitizen_doctor/common/rust/api/notify_api.dart'
as notify_api;
import 'package:starcitizen_doctor/common/utils/async.dart';
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
import 'package:starcitizen_doctor/common/utils/log.dart';
@ -27,7 +29,6 @@ import 'package:starcitizen_doctor/ui/home/dialogs/home_game_login_dialog_ui.dar
import 'package:url_launcher/url_launcher_string.dart';
import 'package:html/parser.dart' as html;
import 'package:html/dom.dart' as html_dom;
import 'package:windows_ui/windows_ui.dart';
import '../webview/webview.dart';
import 'localization/localization_ui_model.dart';
@ -290,25 +291,14 @@ class HomeUIModel extends _$HomeUIModel {
_appUpdateTimer?.cancel();
_appUpdateTimer = null;
// 发送通知
final toastNotifier = ToastNotificationManager.createToastNotifierWithId(
S.current.home_title_app_name);
if (toastNotifier != null) {
final toastContent = ToastNotificationManager.getTemplateContent(
ToastTemplateType.toastText02);
if (toastContent != null) {
final xmlNodeList = toastContent.getElementsByTagName('text');
final title = S.current.home_localization_new_version_available;
final content =
S.current.home_localization_new_version_installed(updates.first);
xmlNodeList.item(0)?.appendChild(toastContent.createTextNode(title));
xmlNodeList
.item(1)
?.appendChild(toastContent.createTextNode(content));
final toastNotification =
ToastNotification.createToastNotification(toastContent);
toastNotifier.show(toastNotification);
}
}
await notify_api.sendNotify(
summary: S.current.home_localization_new_version_available,
body:
S.current.home_localization_new_version_installed(updates.first),
appName: S.current.home_title_app_name,
appId: ConstConf.isMSE
? "56575xkeyC.MSE_bsn1nexg8e4qe!starcitizendoctor"
: "{6D809377-6AF0-444B-8957-A3773F02200E}\\Starcitizen_Doctor\\starcitizen_doctor.exe");
}
}