fix: web/mobile, skip querying onlines, if not in main page (#9535)
* fix: web, skip querying onlines, if not in main page Signed-off-by: fufesou <linlong1266@gmail.com> * fix: web/mobile, skip querying onlines Signed-off-by: fufesou <linlong1266@gmail.com> * Set isInMainPage to false after router is changed. Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
b5414ec002
commit
334526026c
@ -680,10 +680,12 @@ closeConnection({String? id}) {
|
|||||||
overlays: SystemUiOverlay.values);
|
overlays: SystemUiOverlay.values);
|
||||||
gFFI.chatModel.hideChatOverlay();
|
gFFI.chatModel.hideChatOverlay();
|
||||||
Navigator.popUntil(globalKey.currentContext!, ModalRoute.withName("/"));
|
Navigator.popUntil(globalKey.currentContext!, ModalRoute.withName("/"));
|
||||||
|
stateGlobal.isInMainPage = true;
|
||||||
}();
|
}();
|
||||||
} else {
|
} else {
|
||||||
if (isWeb) {
|
if (isWeb) {
|
||||||
Navigator.popUntil(globalKey.currentContext!, ModalRoute.withName("/"));
|
Navigator.popUntil(globalKey.currentContext!, ModalRoute.withName("/"));
|
||||||
|
stateGlobal.isInMainPage = true;
|
||||||
} else {
|
} else {
|
||||||
final controller = Get.find<DesktopTabController>();
|
final controller = Get.find<DesktopTabController>();
|
||||||
controller.closeBy(id);
|
controller.closeBy(id);
|
||||||
@ -2405,6 +2407,7 @@ connect(BuildContext context, String id,
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stateGlobal.isInMainPage = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
FocusScopeNode currentFocus = FocusScope.of(context);
|
FocusScopeNode currentFocus = FocusScope.of(context);
|
||||||
|
@ -332,7 +332,12 @@ class _PeersViewState extends State<_PeersView>
|
|||||||
_queryOnlines(false);
|
_queryOnlines(false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_isActive && (_queryCount < _maxQueryCount || !p)) {
|
final skipIfIsWeb =
|
||||||
|
isWeb && !(stateGlobal.isWebVisible && stateGlobal.isInMainPage);
|
||||||
|
final skipIfMobile =
|
||||||
|
(isAndroid || isIOS) && !stateGlobal.isInMainPage;
|
||||||
|
final skipIfNotActive = skipIfIsWeb || skipIfMobile || !_isActive;
|
||||||
|
if (!skipIfNotActive && (_queryCount < _maxQueryCount || !p)) {
|
||||||
if (now.difference(_lastQueryTime) >= _queryInterval) {
|
if (now.difference(_lastQueryTime) >= _queryInterval) {
|
||||||
if (_curPeers.isNotEmpty) {
|
if (_curPeers.isNotEmpty) {
|
||||||
bind.queryOnlines(ids: _curPeers.toList(growable: false));
|
bind.queryOnlines(ids: _curPeers.toList(growable: false));
|
||||||
|
@ -6,6 +6,7 @@ import 'package:get/get.dart';
|
|||||||
import '../../common.dart';
|
import '../../common.dart';
|
||||||
import '../../common/widgets/chat_page.dart';
|
import '../../common/widgets/chat_page.dart';
|
||||||
import '../../models/platform_model.dart';
|
import '../../models/platform_model.dart';
|
||||||
|
import '../../models/state_model.dart';
|
||||||
import 'connection_page.dart';
|
import 'connection_page.dart';
|
||||||
|
|
||||||
abstract class PageShape extends Widget {
|
abstract class PageShape extends Widget {
|
||||||
@ -159,6 +160,7 @@ class WebHomePage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
stateGlobal.isInMainPage = true;
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
// backgroundColor: MyTheme.grayBg,
|
// backgroundColor: MyTheme.grayBg,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
@ -19,6 +19,9 @@ class StateGlobal {
|
|||||||
final RxBool showRemoteToolBar = false.obs;
|
final RxBool showRemoteToolBar = false.obs;
|
||||||
final svcStatus = SvcStatus.notReady.obs;
|
final svcStatus = SvcStatus.notReady.obs;
|
||||||
final RxBool isFocused = false.obs;
|
final RxBool isFocused = false.obs;
|
||||||
|
// for mobile and web
|
||||||
|
bool isInMainPage = true;
|
||||||
|
bool isWebVisible = true;
|
||||||
|
|
||||||
final isPortrait = false.obs;
|
final isPortrait = false.obs;
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import 'dart:html';
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:flutter_hbb/models/state_model.dart';
|
||||||
|
|
||||||
import 'package:flutter_hbb/web/bridge.dart';
|
import 'package:flutter_hbb/web/bridge.dart';
|
||||||
import 'package:flutter_hbb/common.dart';
|
import 'package:flutter_hbb/common.dart';
|
||||||
@ -28,7 +29,15 @@ class PlatformFFI {
|
|||||||
context.callMethod('setByName', [name, value]);
|
context.callMethod('setByName', [name, value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlatformFFI._();
|
PlatformFFI._() {
|
||||||
|
window.document.addEventListener(
|
||||||
|
'visibilitychange',
|
||||||
|
(event) => {
|
||||||
|
stateGlobal.isWebVisible =
|
||||||
|
window.document.visibilityState == 'visible'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static final PlatformFFI instance = PlatformFFI._();
|
static final PlatformFFI instance = PlatformFFI._();
|
||||||
|
|
||||||
static get localeName => window.navigator.language;
|
static get localeName => window.navigator.language;
|
||||||
|
@ -95,4 +95,3 @@ class WebSettingsPage extends StatelessWidget {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user