TF-2901 Create before unload manager to handle before log out callbacks

This commit is contained in:
DatDang
2024-06-18 15:23:06 +07:00
committed by Dat H. Pham
parent fc4ca58d4e
commit c4bffd6626
5 changed files with 138 additions and 0 deletions
@@ -0,0 +1,24 @@
import 'package:core/utils/app_logger.dart';
typedef BeforeUnloadListener = Future<void> Function();
class BeforeUnloadManager {
static final BeforeUnloadManager _instance = BeforeUnloadManager._();
factory BeforeUnloadManager() => _instance;
BeforeUnloadManager._();
final _listeners = <BeforeUnloadListener>[];
void addListener(BeforeUnloadListener listener) {
_listeners.add(listener);
}
void removeListener(BeforeUnloadListener listener) {
_listeners.remove(listener);
}
Future<void> executeBeforeUnloadListeners() async {
await Future.wait(_listeners.map((listener) => listener.call()))
.onError((error, stackTrace) => [logError(error.toString())]);
}
}