Merge branch 'master' into sort-favorites

This commit is contained in:
RustDesk
2023-03-10 13:05:24 +08:00
committed by GitHub
28 changed files with 3197 additions and 3057 deletions
+2 -2
View File
@@ -430,7 +430,7 @@ final ButtonStyle flatButtonStyle = TextButton.styleFrom(
);
List<Locale> supportedLocales = const [
// specify CN/TW to fix CJK issue in flutter
Locale('en', 'US'),
Locale('zh', 'CN'),
Locale('zh', 'TW'),
Locale('zh', 'SG'),
@@ -452,7 +452,7 @@ List<Locale> supportedLocales = const [
Locale('vi'),
Locale('pl'),
Locale('kz'),
Locale('en', 'US'),
Locale('es'),
];
String formatDurationToTime(Duration duration) {
+24 -18
View File
@@ -68,7 +68,7 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
var _lastChangeTime = DateTime.now();
var _lastQueryPeers = <String>{};
var _lastQueryTime = DateTime.now().subtract(const Duration(hours: 1));
var _queryCoun = 0;
var _queryCount = 0;
var _exit = false;
late final mobileWidth = () {
@@ -101,12 +101,12 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
@override
void onWindowFocus() {
_queryCoun = 0;
_queryCount = 0;
}
@override
void onWindowMinimize() {
_queryCoun = _maxQueryCount;
_queryCount = _maxQueryCount;
}
@override
@@ -123,6 +123,19 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
);
}
onVisibilityChanged(VisibilityInfo info) {
final peerId = _peerId((info.key as ValueKey).value);
if (info.visibleFraction > 0.00001) {
_curPeers.add(peerId);
} else {
_curPeers.remove(peerId);
}
_lastChangeTime = DateTime.now();
}
String _cardId(String id) => widget.peers.name + id;
String _peerId(String cardId) => cardId.replaceAll(widget.peers.name, '');
Widget _buildPeersView(Peers peers) {
final body = ObxValue<RxList>((filters) {
return FutureBuilder<List<Peer>>(
@@ -132,16 +145,8 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
final cards = <Widget>[];
for (final peer in peers) {
final visibilityChild = VisibilityDetector(
key: ValueKey(peer.id),
onVisibilityChanged: (info) {
final peerId = (info.key as ValueKey).value;
if (info.visibleFraction > 0.00001) {
_curPeers.add(peerId);
} else {
_curPeers.remove(peerId);
}
_lastChangeTime = DateTime.now();
},
key: ValueKey(_cardId(peer.id)),
onVisibilityChanged: onVisibilityChanged,
child: widget.peerCardBuilder(peer),
);
cards.add(isDesktop
@@ -172,6 +177,7 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
// ignore: todo
// TODO: variables walk through async tasks?
void _startCheckOnlines() {
final queryInterval = const Duration(seconds: 20);
() async {
while (!_exit) {
final now = DateTime.now();
@@ -181,18 +187,18 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryPeers = {..._curPeers};
_lastQueryTime = DateTime.now();
_queryCoun = 0;
_lastQueryTime = DateTime.now().subtract(queryInterval);
_queryCount = 0;
}
}
} else {
if (_queryCoun < _maxQueryCount) {
if (now.difference(_lastQueryTime) > const Duration(seconds: 20)) {
if (_queryCount < _maxQueryCount) {
if (now.difference(_lastQueryTime) >= queryInterval) {
if (_curPeers.isNotEmpty) {
platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryTime = DateTime.now();
_queryCoun += 1;
_queryCount += 1;
}
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+11 -9
View File
@@ -166,17 +166,18 @@ class FfiModel with ChangeNotifier {
} else if (name == 'file_dir') {
parent.target?.fileModel.receiveFileDir(evt);
} else if (name == 'job_progress') {
parent.target?.fileModel.tryUpdateJobProgress(evt);
parent.target?.fileModel.jobController.tryUpdateJobProgress(evt);
} else if (name == 'job_done') {
parent.target?.fileModel.jobDone(evt);
parent.target?.fileModel.jobController.jobDone(evt);
parent.target?.fileModel.refreshAll();
} else if (name == 'job_error') {
parent.target?.fileModel.jobError(evt);
parent.target?.fileModel.jobController.jobError(evt);
} else if (name == 'override_file_confirm') {
parent.target?.fileModel.overrideFileConfirm(evt);
} else if (name == 'load_last_job') {
parent.target?.fileModel.loadLastJob(evt);
parent.target?.fileModel.jobController.loadLastJob(evt);
} else if (name == 'update_folder_files') {
parent.target?.fileModel.updateFolderFiles(evt);
parent.target?.fileModel.jobController.updateFolderFiles(evt);
} else if (name == 'add_connection') {
parent.target?.serverModel.addConnection(evt);
} else if (name == 'on_client_remove') {
@@ -371,7 +372,11 @@ class FfiModel with ChangeNotifier {
_updateSessionWidthHeight(String id) {
parent.target?.canvasModel.updateViewStyle();
bind.sessionSetSize(id: id, width: display.width, height: display.height);
if (display.width <= 0 || display.height <= 0) {
debugPrintStack(label: 'invalid display size (${display.width},${display.height})');
} else {
bind.sessionSetSize(id: id, width: display.width, height: display.height);
}
}
/// Handle the peer info event based on [evt].
@@ -1571,9 +1576,6 @@ class FFI {
}();
// every instance will bind a stream
this.id = id;
if (isFileTransfer) {
fileModel.initFileFetcher();
}
}
/// Login with [password], choose if the client should [remember] it.
+9 -4
View File
@@ -28,10 +28,9 @@ class StateGlobal {
setWindowId(int id) => _windowId = id;
setMaximize(bool v) {
if (_maximize != v) {
if (_maximize != v && !_fullscreen) {
_maximize = v;
_resizeEdgeSize.value =
_maximize ? kMaximizeEdgeSize : kWindowEdgeSize;
_resizeEdgeSize.value = _maximize ? kMaximizeEdgeSize : kWindowEdgeSize;
}
}
setFullscreen(bool v) {
@@ -39,7 +38,13 @@ class StateGlobal {
_fullscreen = v;
_showTabBar.value = !_fullscreen;
_resizeEdgeSize.value =
fullscreen ? kFullScreenEdgeSize : kWindowEdgeSize;
fullscreen
? kFullScreenEdgeSize
: _maximize
? kMaximizeEdgeSize
: kWindowEdgeSize;
print(
"fullscreen: ${fullscreen}, resizeEdgeSize: ${_resizeEdgeSize.value}");
_windowBorderWidth.value = fullscreen ? 0 : kWindowBorderWidth;
WindowController.fromWindowId(windowId)
.setFullscreen(_fullscreen)
+1 -1
View File
@@ -59,7 +59,7 @@ dependencies:
desktop_multi_window:
git:
url: https://github.com/Kingtous/rustdesk_desktop_multi_window
ref: 3e2655677c54f421f9e378680d8171b95a211e0f
ref: e3947d4b4f8edaa655de63cd47f2a59a6e024218
freezed_annotation: ^2.0.3
flutter_custom_cursor: ^0.0.4
window_size: