mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-12-12 02:57:22 +00:00
@@ -1,10 +1,16 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:desktop_multi_window/desktop_multi_window.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../consts.dart';
|
||||
import '../common.dart';
|
||||
|
||||
import './platform_model.dart';
|
||||
import './user_model.dart';
|
||||
|
||||
enum SvcStatus { notReady, connecting, ready }
|
||||
|
||||
@@ -18,7 +24,10 @@ class StateGlobal {
|
||||
final RxDouble _windowBorderWidth = RxDouble(kWindowBorderWidth);
|
||||
final RxBool showRemoteToolBar = false.obs;
|
||||
final RxInt displaysCount = 0.obs;
|
||||
|
||||
final svcStatus = SvcStatus.notReady.obs;
|
||||
final svcIsUsingPublicServer = true.obs;
|
||||
Timer? _svcStatusTimer;
|
||||
|
||||
// Use for desktop -> remote toolbar -> resolution
|
||||
final Map<String, Map<int, String?>> _lastResolutionGroupValues = {};
|
||||
@@ -84,6 +93,46 @@ class StateGlobal {
|
||||
}
|
||||
}
|
||||
|
||||
startSvcStatusTimer() {
|
||||
_svcStatusTimer = periodic_immediate(Duration(seconds: 1), () async {
|
||||
_updateSvcStatus();
|
||||
});
|
||||
}
|
||||
|
||||
cancelSvcStatusTimer() {
|
||||
_svcStatusTimer?.cancel();
|
||||
_svcStatusTimer = null;
|
||||
}
|
||||
|
||||
_updateSvcStatus() async {
|
||||
final status =
|
||||
jsonDecode(await bind.mainGetConnectStatus()) as Map<String, dynamic>;
|
||||
final statusNum = status['status_num'] as int;
|
||||
final preStatus = stateGlobal.svcStatus.value;
|
||||
if (statusNum == 0) {
|
||||
stateGlobal.svcStatus.value = SvcStatus.connecting;
|
||||
} else if (statusNum == -1) {
|
||||
stateGlobal.svcStatus.value = SvcStatus.notReady;
|
||||
} else if (statusNum == 1) {
|
||||
stateGlobal.svcStatus.value = SvcStatus.ready;
|
||||
if (preStatus != SvcStatus.ready) {
|
||||
gFFI.userModel.refreshCurrentUser();
|
||||
}
|
||||
} else {
|
||||
stateGlobal.svcStatus.value = SvcStatus.notReady;
|
||||
}
|
||||
if (stateGlobal.svcStatus.value != SvcStatus.ready) {
|
||||
gFFI.userModel.isAdmin.value = false;
|
||||
gFFI.groupModel.reset();
|
||||
}
|
||||
debugPrint('REMOVE ME ========================== $preStatus -> ${stateGlobal.svcStatus.value}');
|
||||
if (preStatus != stateGlobal.svcStatus.value) {
|
||||
UserModel.updateOtherModels();
|
||||
}
|
||||
stateGlobal.svcIsUsingPublicServer.value =
|
||||
await bind.mainIsUsingPublicServer();
|
||||
}
|
||||
|
||||
StateGlobal._();
|
||||
|
||||
static final StateGlobal instance = StateGlobal._();
|
||||
|
||||
Reference in New Issue
Block a user