import 'package:cashier_reserve/common/push/push.dart';
import 'package:cashier_reserve/datas/login/login_result.dart';
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();
    }

    YJPush.presentWidget(globalContext!, const LoginView());
  }

  static void disposeLoginWidget() {
    _isAlertLogin = false;
  }

  static bool isShowLoginView() {
    return _isAlertLogin;
  }

  static String getUserToken() {
    return HiveManager.getUserToken();
  }

  static void loginSuccess(LoginResult? r) {
    HiveManager.setUserToken(r?.token ?? '');
    HiveManager.setShopId((r?.shopId ?? '').toString());
    HiveManager.setShopName(r?.shopName ?? '');
    HiveManager.setShopLogo(r?.logo ?? '');
    HiveManager.setUserInfo(r?.user?.toString() ?? '');

    disposeLoginWidget();
    Navigator.of(globalContext!).pop();
  }
}
