import 'package:device_info_plus/device_info_plus.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:get/get.dart';
import 'package:shared/utils/device_utils.dart';
import 'package:shared/utils/log_utils.dart';

import 'app_config_service.dart';


/*
   全局服务 Service 的初始化入口

   1. 初始化 AppPackageInfo 插件，获取应用相关信息。
   2. 初始化 DeviceInfo 插件，获取设备相关信息。

   全局一些服务的注入与信息的保存。
   注意：最好是用户同意了隐私协议之后再初始化
 */
class ConfigServicesInjection {
  /// android 设备信息
  static AndroidDeviceInfo? androidDeviceInfo;

  /// ios 设备信息
  static IosDeviceInfo? iosDeviceInfo;

  /// 包信息
  static PackageInfo? packageInfo;

  /// 是否 release  包（生产环境）
  static bool get isRelease => const bool.fromEnvironment("dart.vm.product");

  /// init
  static Future init() async {
    Log.d('----ConfigServicesInjection------start-----');

    // device_info_plus插件获取设备信息
    DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
    if (DeviceUtils.isIOS) {
      ConfigServicesInjection.iosDeviceInfo = await deviceInfoPlugin.iosInfo;
    } else if (DeviceUtils.isAndroid) {
      ConfigServicesInjection.androidDeviceInfo = await deviceInfoPlugin.androidInfo;
    }

    // package_info 插件获取到App的包信息
    ConfigServicesInjection.packageInfo = await PackageInfo.fromPlatform();

    // 一些配置信息的全局单例保存 (国际化、版本信息、设备信息、主题（暗黑/明亮）)
    Get.put<ConfigService>(ConfigService());

  }

  // 获取当前Android设备的Android版本
  static int getAndroidSdkInt() {
    if (DeviceUtils.isAndroid) {
      return androidDeviceInfo?.version.sdkInt ?? -1;
    } else {
      return -1;
    }
  }
}
