Check if peer info is set

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2023-08-24 12:03:29 +08:00
parent e17002c6da
commit 0e838d59d5
4 changed files with 48 additions and 22 deletions

View File

@@ -228,18 +228,12 @@ class _RemotePageState extends State<RemotePage>
removeSharedStates(widget.id);
}
Widget emptyOverlay() => GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
bind.sessionInputOsPassword(sessionId: sessionId, value: '');
},
child: BlockableOverlay(
/// the Overlay key will be set with _blockableOverlayState in BlockableOverlay
/// see override build() in [BlockableOverlay]
state: _blockableOverlayState,
underlying: Container(
color: Colors.transparent,
),
Widget emptyOverlay() => BlockableOverlay(
/// the Overlay key will be set with _blockableOverlayState in BlockableOverlay
/// see override build() in [BlockableOverlay]
state: _blockableOverlayState,
underlying: Container(
color: Colors.transparent,
),
);
@@ -273,7 +267,8 @@ class _RemotePageState extends State<RemotePage>
inputModel: _ffi.inputModel,
child: getBodyForDesktop(context))),
Obx(
() => _ffi.ffiModel.waitForFirstImage.isTrue
() => _ffi.ffiModel.pi.isSet.isTrue &&
_ffi.ffiModel.waitForFirstImage.isTrue
? emptyOverlay()
: Offstage(),
),
@@ -286,6 +281,9 @@ class _RemotePageState extends State<RemotePage>
onEnterOrLeaveImageCleaner: () =>
_onEnterOrLeaveImage4Toolbar = null,
),
Obx(
() => _ffi.ffiModel.pi.isSet.isFalse ? emptyOverlay() : Offstage(),
),
],
),
);

View File

@@ -20,6 +20,7 @@ import 'package:get/get.dart';
import 'package:bot_toast/bot_toast.dart';
import '../../common/widgets/dialog.dart';
import '../../models/model.dart';
import '../../models/platform_model.dart';
class _MenuTheme {
@@ -266,7 +267,11 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
if (e.kind != ui.PointerDeviceKind.mouse) {
return;
}
if (e.buttons == 2) {
final remotePage = tabController.state.value.tabs
.firstWhere((tab) => tab.key == key)
.page as RemotePage;
if (remotePage.ffi.ffiModel.pi.isSet.isTrue &&
e.buttons == 2) {
showRightMenu(
(CancelFunc cancelFunc) {
return _tabMenuBuilder(key, cancelFunc);

View File

@@ -99,6 +99,7 @@ class FfiModel with ChangeNotifier {
late final SessionID sessionId;
RxBool waitForImageDialogShow = true.obs;
Timer? waitForImageTimer;
RxBool waitForFirstImage = true.obs;
Map<String, bool> get permissions => _permissions;
@@ -159,6 +160,7 @@ class FfiModel with ChangeNotifier {
_timer?.cancel();
_timer = null;
clearPermissions();
waitForImageTimer?.cancel();
}
setConnectionType(String peerId, bool secure, bool direct) {
@@ -511,6 +513,11 @@ class FfiModel with ChangeNotifier {
tag: '$sessionId-waiting-for-image',
);
waitForImageDialogShow.value = true;
waitForImageTimer = Timer(Duration(milliseconds: 1500), () {
if (waitForFirstImage.isTrue) {
bind.sessionInputOsPassword(sessionId: sessionId, value: '');
}
});
bind.sessionOnWaitingForImageDialogShow(sessionId: sessionId);
}
@@ -603,6 +610,7 @@ class FfiModel with ChangeNotifier {
}
}
_pi.isSet.value = true;
stateGlobal.resetLastResolutionGroupValues(peerId);
notifyListeners();
@@ -1817,6 +1825,7 @@ class FFI {
void onEvent2UIRgba() async {
if (ffiModel.waitForImageDialogShow.isTrue) {
ffiModel.waitForImageDialogShow.value = false;
ffiModel.waitForImageTimer?.cancel();
clearWaitingForImage(dialogManager, sessionId);
}
if (ffiModel.waitForFirstImage.value == true) {
@@ -1935,7 +1944,7 @@ class Features {
bool privacyMode = false;
}
class PeerInfo {
class PeerInfo with ChangeNotifier {
String version = '';
String username = '';
String hostname = '';
@@ -1947,6 +1956,8 @@ class PeerInfo {
List<Resolution> resolutions = [];
Map<String, dynamic> platform_additions = {};
RxBool isSet = false.obs;
bool get is_wayland => platform_additions['is_wayland'] == true;
bool get is_headless => platform_additions['headless'] == true;
}