package com.platform101xp.plugin

import org.json.JSONObject

import com.platform101xp.base.error.BaseErrorType;
import com.platform101xp.base.error.Platform101XPError;
import com.platform101xp.advertising.interfaces.AdvertisingListener;

class Platform101XPAdvertisingListener(private val actionListener: Platform101XPUnityActionListener) : AdvertisingListener {
    override fun onRewardedInterstitialAdShowed(
        amount: Int,
        name: String?,
        error: Platform101XPError?
    ) {
        val payload = JSONObject()
            .put("amount", amount)
            .putOpt("name", name)
            .putOpt("error", error?.toString())

        sendAction("OnRewardedInterstitialAdShowed", payload)
    }

    override fun onRewardedInterstitialAdLoaded(error: Platform101XPError?) {
        sendAction("OnRewardedInterstitialAdLoaded", JSONObject().put("error", error?.toString()))
    }

    override fun onInterstitialAdShowed(error: Platform101XPError?) {
        sendAction("OnInterstitialAdShowed", JSONObject().put("error", error?.toString()))
    }

    override fun onInterstitialAdLoaded(error: Platform101XPError?) {
        sendAction("OnInterstitialAdLoaded", JSONObject().put("error", error?.toString()))
    }

    override fun onBannerAdLoaded(error: Platform101XPError?) {
        sendAction("OnBannerAdLoaded", JSONObject().put("error", error?.toString()))
    }

    override fun onBannerAdShowed(error: Platform101XPError?) {
        sendAction("OnBannerAdShowed", JSONObject().put("error", error?.toString()))
    }

    override fun onAppOpenAdShowed(error: Platform101XPError?) {
        sendAction("OnAppOpenAdShowed", JSONObject().put("error", error?.toString()))
    }

    override fun onAppOpenAdLoaded(error: Platform101XPError?) {
        sendAction("OnAppOpenAdLoaded", JSONObject().put("error", error?.toString()))
    }

    override fun onInitializationComplete() {
        sendAction("OnInitializationComplete", JSONObject())
    }

    override fun onRewardedAdLoaded(error: Platform101XPError?) {
        sendAction("OnRewardedAdLoaded", JSONObject().put("error", error?.toString()))
    }

    override fun onRewardedAdShowed(amount: Int, name: String?, error: Platform101XPError?) {
        sendAction("OnRewardedAdShowed", JSONObject().apply {
            put("amount", amount)
            put("name", name)
            put("error", error?.toString())
        })
    }

    private fun sendAction(methodName: String, parameters: JSONObject) {
        actionListener.onSendAction(methodName, parameters.toString())
    }
}
