import 'package:cashier_reserve/login/login_view.dart';

import '../base/ui.dart';
import '../channel/channel_event.dart';
import '../utils/func_tools.dart';
import 'hive_manager.dart';

class AppManager {
  static BuildContext? globalContext;
  static bool _isAlertLogin = false;

  static Future<void> initThirdPackage() async {
    MyEventChannel.startListener();

    await HiveManager.initHive();
  }

  static void setGlobalContext(BuildContext context) {
    globalContext = context;
  }

  static bool isLogin() {
    String token = HiveManager.getUserToken();
    if (isEmptyString(token)) {
      gotoLogin();
      return false;
    }
    return true;
  }

  static void gotoLogin() {
    if (_isAlertLogin) {
      return;
    }
    _isAlertLogin = true;

    while (Navigator.of(globalContext!).canPop()) {
      Navigator.of(globalContext!).pop();
    }

    showDialog(
        context: globalContext!,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return WillPopScope(
              onWillPop: () => Future.value(false), child: const LoginView());
        });
  }

  static void disposeLoginWidget() {
    _isAlertLogin = false;
  }

  static bool isShowLoginView() {
    return _isAlertLogin;
  }
}
