opt.: dismiss notification if no ssh conn (#592)

This commit is contained in:
lollipopkit🏳️‍⚧️
2024-09-24 22:01:35 +08:00
committed by GitHub
parent 47aedb2f2e
commit aef317a140
5 changed files with 59 additions and 16 deletions

View File

@@ -11,4 +11,8 @@ abstract final class BgRunMC {
static void startService() {
_channel.invokeMethod('startService');
}
static void stopService() {
_channel.invokeMethod('stopService');
}
}

View File

@@ -9,7 +9,6 @@ import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:logging/logging.dart';
import 'package:server_box/app.dart';
import 'package:server_box/core/channel/bg_run.dart';
import 'package:server_box/core/sync.dart';
import 'package:server_box/data/model/app/menu/server_func.dart';
import 'package:server_box/data/model/app/net_view.dart';
@@ -111,10 +110,6 @@ void _doPlatformRelated() async {
if (isAndroid) {
// try switch to highest refresh rate
FlutterDisplayMode.setHighRefreshRate();
if (Stores.setting.bgRun.fetch()) {
Loggers.app.info('Start foreground service');
BgRunMC.startService();
}
}
final serversCount = Stores.server.box.keys.length;

View File

@@ -6,6 +6,7 @@ import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'package:server_box/core/channel/bg_run.dart';
import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/core/utils/ssh_auth.dart';
import 'package:server_box/core/utils/server.dart';
@@ -70,13 +71,22 @@ class SSHPageState extends State<SSHPage>
late SSHClient? _client = widget.spi.server?.value.client;
Timer? _discontinuityTimer;
/// Used for (de)activate the wake lock and forground service
static var _sshConnCount = 0;
@override
void dispose() {
super.dispose();
_virtKeyLongPressTimer?.cancel();
_terminalController.dispose();
_discontinuityTimer?.cancel();
WakelockPlus.disable();
if (--_sshConnCount <= 0) {
WakelockPlus.disable();
if (isAndroid) {
BgRunMC.stopService();
}
}
}
@override
@@ -85,6 +95,13 @@ class SSHPageState extends State<SSHPage>
_initStoredCfg();
_initVirtKeys();
_setupDiscontinuityTimer();
if (++_sshConnCount == 1) {
WakelockPlus.enable();
if (isAndroid) {
BgRunMC.startService();
}
}
}
@override