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

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) {

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

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.

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)