getBannerConfig method

  1. @override
Future<BannerConfig?> getBannerConfig([
  1. MainConfiguration? cdn
])
override

Implementation

@override
Future<BannerConfig?> getBannerConfig([MainConfiguration? cdn]) async {
  try {
    debugPrint('Calling getBannerConfig method...');
    final result = await methodChannel.invokeMethod<dynamic>(
      'getBannerConfig',
      cdn?.toJson()
    );

    debugPrint('getBannerConfig raw result: ${result != null ? result.toString().substring(0, min(200, result.toString().length)) : "null"}...');
    debugPrint('getBannerConfig result type: ${result?.runtimeType}');

    if (result == null) {
      debugPrint('getBannerConfig result is null');
      return null;
    }

    if (result is Map) {
      // Convert the entire map structure, including nested maps
      Map<String, dynamic> convertedMap = _convertMapToStringDynamic(result);
      debugPrint('Successfully converted map structure');

      try {
        return BannerConfig.fromJson(convertedMap);
      } catch (e) {
        debugPrint('Error creating BannerConfig from converted map: $e');
        return null;
      }
    } else {
      debugPrint('Unexpected result type: ${result.runtimeType}');
      return null;
    }
  } catch (e) {
    debugPrint('Error in getBannerConfig: $e');
    debugPrint('Stack trace: ${StackTrace.current}');
    return null;
  }
}