Merge pull request #5298 from 21pages/opt

opt peercard order
This commit is contained in:
RustDesk 2023-08-09 10:52:46 +08:00 committed by GitHub
commit 38d4f29e51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 36 additions and 8 deletions

View File

@ -11,6 +11,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hbb/common/formatter/id_formatter.dart';
import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart';
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
import 'package:flutter_hbb/main.dart';
@ -1842,6 +1843,14 @@ connect(
bool isRDP = false,
}) async {
if (id == '') return;
if (!isDesktop || desktopType == DesktopType.main) {
try {
if (Get.isRegistered<IDTextEditingController>()) {
final idController = Get.find<IDTextEditingController>();
idController.text = formatID(id);
}
} catch (_) {}
}
id = id.replaceAll(' ', '');
final oldId = id;
id = await bind.mainHandleRelayId(id: id);

View File

@ -35,6 +35,11 @@ class IDTextInputFormatter extends TextInputFormatter {
String formatID(String id) {
String id2 = id.replaceAll(' ', '');
String suffix = '';
if (id2.endsWith(r'\r') || id2.endsWith(r'/r')) {
suffix = id2.substring(id2.length - 2, id2.length);
id2 = id2.substring(0, id2.length - 2);
}
if (int.tryParse(id2) == null) return id;
String newID = '';
if (id2.length <= 3) {
@ -47,7 +52,7 @@ String formatID(String id) {
newID += " ${id2.substring(i, i + 3)}";
}
}
return newID;
return newID + suffix;
}
String trimID(String id) {

View File

@ -1352,7 +1352,7 @@ customImageQualityDialog(SessionID sessionId, String id, FFI ffi) async {
msgBoxCommon(ffi.dialogManager, 'Custom Image Quality', content, [btnClose]);
}
void deletePeerConfirmDialog(Function onSubmit) async {
void deletePeerConfirmDialog(Function onSubmit, String title) async {
gFFI.dialogManager.show(
(setState, close, context) {
submit() async {
@ -1368,8 +1368,10 @@ void deletePeerConfirmDialog(Function onSubmit) async {
Icons.delete_rounded,
color: Colors.red,
),
Text(translate('Delete')).paddingOnly(
left: 10,
Expanded(
child: Text(title, overflow: TextOverflow.ellipsis).paddingOnly(
left: 10,
),
),
],
),

View File

@ -542,8 +542,8 @@ abstract class BasePeerCard extends StatelessWidget {
_openInTabsAction(String id) async =>
await _openNewConnInAction(id, 'Open in New Tab', kOptionOpenInTabs);
_openInWindowsAction(String id) async =>
await _openNewConnInAction(id, 'Open in New Window', kOptionOpenInWindows);
_openInWindowsAction(String id) async => await _openNewConnInAction(
id, 'Open in New Window', kOptionOpenInWindows);
_openNewConnInOptAction(String id) async =>
mainGetLocalBoolOptionSync(kOptionOpenNewConnInTabs)
@ -636,7 +636,8 @@ abstract class BasePeerCard extends StatelessWidget {
}
}
deletePeerConfirmDialog(onSubmit);
deletePeerConfirmDialog(onSubmit,
'${translate('Delete')} "${peer.alias.isEmpty ? formatID(peer.id) : peer.alias}"?');
},
padding: menuPadding,
dismissOnClicked: true,

View File

@ -312,7 +312,7 @@ class _PeerTabPageState extends State<PeerTabPage>
showToast(translate('Successful'));
}
deletePeerConfirmDialog(onSubmit);
deletePeerConfirmDialog(onSubmit, translate('Delete'));
},
child: Tooltip(
message: translate('Delete'),

View File

@ -68,6 +68,7 @@ class _ConnectionPageState extends State<ConnectionPage>
_idController.selection = TextSelection(
baseOffset: 0, extentOffset: _idController.value.text.length);
});
Get.put<IDTextEditingController>(_idController);
windowManager.addListener(this);
}

View File

@ -66,6 +66,7 @@ class _ConnectionPageState extends State<ConnectionPage> {
_idController.addListener(() {
_idEmpty.value = _idController.text.isEmpty;
});
Get.put<IDTextEditingController>(_idController);
}
@override

View File

@ -1209,6 +1209,10 @@ impl LoginConfigHandler {
/// * `k` - key of option
/// * `v` - value of option
pub fn save_ui_flutter(&mut self, k: String, v: String) {
if self.version == 0 && k == "wm_" {
log::info!("skip saving {k}");
return;
}
let mut config = self.load_config();
config.ui_flutter.insert(k, v);
self.save_config(config);

View File

@ -850,6 +850,11 @@ impl<T: InvokeUiSession> Remote<T> {
}
pub async fn sync_jobs_status_to_local(&mut self) -> bool {
let peer_version = self.handler.lc.read().unwrap().version;
if peer_version == 0 {
log::info!("skip saving job status");
return false;
}
log::info!("sync transfer job status");
let mut config: PeerConfig = self.handler.load_config();
let mut transfer_metas = TransferSerde::default();