Use better way to initialize task manager listener and timers

This commit is contained in:
2024-05-26 07:42:26 +08:00
parent a6d0a2e3c7
commit dc744a9154
3 changed files with 4 additions and 1 deletions

View File

@@ -89,6 +89,7 @@ class AuthInfo {
"Logged in as ${u.username} (${u.id}). isAdmin: ${u.isAdmin}. permissions: ${u.permissions}"); "Logged in as ${u.username} (${u.id}). isAdmin: ${u.isAdmin}. permissions: ${u.permissions}");
await checkSessionInfo(); await checkSessionInfo();
if (canManageTasks == true) { if (canManageTasks == true) {
if (!tasks.inited) tasks.init();
await tasks.connect(); await tasks.connect();
} }
} else if (re.status == 401 || re.status == 1 || re.status == 404) { } else if (re.status == 401 || re.status == 1 || re.status == 404) {

View File

@@ -299,7 +299,6 @@ class _MainApp extends State<MainApp> with WidgetsBindingObserver {
_lifecycleState = WidgetsBinding.instance.lifecycleState; _lifecycleState = WidgetsBinding.instance.lifecycleState;
listener.tryEmit("lifecycle", _lifecycleState); listener.tryEmit("lifecycle", _lifecycleState);
} }
tasks.init();
} }
@override @override

View File

@@ -22,6 +22,8 @@ class TaskManager {
List<int> peddingGids = []; List<int> peddingGids = [];
List<String> peddingTokens = []; List<String> peddingTokens = [];
late Timer _pingTimer; late Timer _pingTimer;
bool _inited = false;
bool get inited => _inited;
void clear() { void clear() {
tasks.clear(); tasks.clear();
_channel?.stream.drain(); _channel?.stream.drain();
@@ -233,6 +235,7 @@ class TaskManager {
} }
void init() { void init() {
_inited = true;
listener.on("lifecycle", _onLifeCycleChanged); listener.on("lifecycle", _onLifeCycleChanged);
_pingTimer = Timer.periodic(const Duration(seconds: 30), (timer) { _pingTimer = Timer.periodic(const Duration(seconds: 30), (timer) {
try { try {