import 'package:flutter/foundation.dart';
import 'package:package_info_plus/package_info_plus.dart';

import '../../api/apiResponse.dart';
import '../../api/mhsl/breaker/getBreakers/getBreakersCache.dart';
import '../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
import '../dataHolder.dart';

class BreakerProps extends DataHolder {
  GetBreakersResponse? _getBreakersResponse;
  GetBreakersResponse get getBreakersResponse => _getBreakersResponse!;

  PackageInfo? packageInfo;

  String? isBlocked(BreakerArea? type) {
    if(kDebugMode) return null;

    if(packageInfo == null) {
      PackageInfo.fromPlatform().then((value) => packageInfo = value);
      return null;
    }

    if(primaryLoading()) return null;
    var breakers = _getBreakersResponse!;

    if(breakers.global.areas.contains(type)) return breakers.global.message;

    var selfVersion = int.parse(packageInfo!.buildNumber);
    for(var key in breakers.regional.keys) {
      var value = breakers.regional[key]!;

      if(int.parse(key.split('b')[1]) >= selfVersion) {
        if(value.areas.contains(type)) return value.message;
      }
    }

    return null;
  }

  @override
  List<ApiResponse?> properties() => [_getBreakersResponse];

  @override
  void run() {
    GetBreakersCache(
      onUpdate: (GetBreakersResponse getBreakersResponse) {
        _getBreakersResponse = getBreakersResponse;
        notifyListeners();
      }
    );
  }
}