override fun onMethodCall()

in android/src/main/kotlin/com/example/confidence_flutter_sdk/ConfidenceFlutterSdkPlugin.kt [38:125]


  override fun onMethodCall(call: MethodCall, result: Result) {
    when(call.method) {
      "flush" -> {
        confidence.flush()
      }
      "setup" -> {
        val apiKey = call.arguments as String
        confidence = ConfidenceFactory.create(
          context,
          apiKey,
          sdk = SdkMetadata("SDK_ID_FLUTTER_ANDROID_CONFIDENCE", "0.0.1")
        )
        result.success(null)
      }
      "fetchAndActivate" -> {
        coroutineScope.launch {
          confidence.fetchAndActivate()
          result.success(null)
        }
      }
      "activateAndFetchAsync" -> {
        coroutineScope.launch {
          confidence.activate()
          confidence.asyncFetch()
          result.success(null)
        }
      }
      "isStorageEmpty" -> {
        val isEmpty = confidence.isStorageEmpty()
        result.success(isEmpty)
      }
      "getString" -> {
        val key = call.argument<String>("key")!!
        val defaultValue = call.argument<String>("defaultValue")
        val value = confidence.getValue(key, defaultValue)
        result.success(value)
      }
      "getDouble" -> {
        val key = call.argument<String>("key")!!
        val defaultValue = call.argument<Double>("defaultValue")
        val value = confidence.getValue(key, defaultValue)
        result.success(value)
      }
      "getBool" -> {
        val key = call.argument<String>("key")!!
        val defaultValue = call.argument<Boolean>("defaultValue")
        val value = confidence.getValue(key, defaultValue)
        result.success(value)
      }
      "getInt" -> {
        val key = call.argument<String>("key")!!
        val defaultValue = call.argument<Int>("defaultValue")
        val value = confidence.getValue(key, defaultValue)
        result.success(value)
      }
      "getObject" -> {
        val key = call.argument<String>("key")!!
        val wrappedDefaultValue = call.argument<Map<String, Map<String, Any>>>("defaultValue")!!
        val defaultValue: ConfidenceValue.Struct = ConfidenceValue.Struct(wrappedDefaultValue.mapValues { (_, value) -> value.convert() })
        val value = confidence.getValue(key, defaultValue)
        result.success(Json.encodeToString(NetworkConfidenceValueSerializer, value))
      }
      "readAllFlags" -> {
        val flags = readAllFlags()
        val map = flags.flags.associateBy({ it.flag }, { ConfidenceValue.Struct(it.value) })
        result.success(Json.encodeToString(NetworkConfidenceValueSerializer, ConfidenceValue.Struct(map)))
      }
      "putContext" -> {
        val key = call.argument<String>("key")!!
        val value = call.argument<Map<String, Any>>("value")!!.convert()
        confidence.putContext(key, value)
        result.success(null)
      }
      "putAllContext" -> {
        val wrappedContext = call.argument<Map<String, Map<String, Any>>>("context")!!
        val context: Map<String, ConfidenceValue> = wrappedContext.mapValues { (_, value) -> value.convert() }
        confidence.putContext(context)
        result.success(null)
      }
      "track" -> {
        val eventName = call.argument<String>("eventName")!!
        val wrappedData = call.argument<Map<String, Map<String, Any>>>("data")!!
        val data: Map<String, ConfidenceValue> = wrappedData.mapValues { (_, value) -> value.convert() }
        confidence.track(eventName, data)
      }
      else -> result.notImplemented()
    }
  }