All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.io.dyte.mobilecorebridge.listeners.PluginEventsListener.kt Maven / Gradle / Ivy

package io.dyte.mobilecorebridge.listeners

import io.dyte.core.feat.DytePlugin
import io.dyte.core.listeners.DytePluginEventsListener
import io.dyte.mobilecorebridge.CallDetailsBuilder
import io.dyte.mobilecorebridge.DyteSink

class PluginEventsListener(private val sink: DyteSink) : DytePluginEventsListener {

  private val callDetailsBuilder = CallDetailsBuilder()

  override fun onPluginActivated(plugin: DytePlugin) {
    super.onPluginActivated(plugin)
    val pluginMap =
      hashMapOf(
        "id" to plugin.id,
        "name" to plugin.name,
        "description" to plugin.description,
        "picture" to plugin.picture,
        "private" to plugin.isPrivate,
        "staggered" to plugin.staggered,
        "baseURL" to plugin.baseURL,
      )

    callDetailsBuilder.flush().addMethodName("onPluginActivated").addArguments(pluginMap)
    sink.success(callDetailsBuilder.build())
  }

  override fun onPluginDeactivated(plugin: DytePlugin) {
    super.onPluginDeactivated(plugin)

    val pluginMap =
      hashMapOf(
        "id" to plugin.id,
        "name" to plugin.name,
        "description" to plugin.description,
        "picture" to plugin.picture,
        "private" to plugin.isPrivate,
        "staggered" to plugin.staggered,
        "baseURL" to plugin.baseURL,
      )
    callDetailsBuilder.flush().addMethodName("onPluginDeactivated").addArguments(pluginMap)
    sink.success(callDetailsBuilder.build())
  }

  override fun onPluginFileRequest(plugin: DytePlugin) {

    callDetailsBuilder
      .flush()
      .addMethodName("onPluginFileRequest")
      .addArguments(hashMapOf("plugin" to decodePlugin(plugin)))
    sink.success(callDetailsBuilder.build())
  }

  private fun decodePlugin(plugin: DytePlugin): Map {
    return mapOf(
      "id" to plugin.id,
      "name" to plugin.name,
      "description" to plugin.description,
      "picture" to plugin.picture,
      "private" to plugin.isPrivate,
      "staggered" to plugin.staggered,
      "baseURL" to plugin.baseURL,
    )
  }

  override fun onPluginMessage(plugin: DytePlugin, eventName: String, data: Any?) {
    super.onPluginMessage(plugin, eventName, data)

    callDetailsBuilder
      .flush()
      .addMethodName("onPluginMessage")
      .addArguments(
        hashMapOf(
          "plugin" to decodePlugin(plugin),
          "eventName" to eventName,
          "data" to data.toString(),
        )
      )
    sink.success(callDetailsBuilder.build())
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy