package com.reactnativekakaosharelink import android.content.ActivityNotFoundException import com.facebook.react.bridge.* import com.kakao.sdk.common.KakaoSdk import com.kakao.sdk.common.util.KakaoCustomTabsClient import com.kakao.sdk.share.ShareClient import com.kakao.sdk.share.WebSharerClient import com.kakao.sdk.template.model.* class KakaoShareLinkModule(private val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { override fun getName(): String { return "KakaoShareLink" } private fun getS(dict: ReadableMap, key: String): String? { return if (dict.hasKey(key)) dict.getString(key) else null } private fun getI(dict: ReadableMap, key: String): Int? { return if (dict.hasKey(key)) dict.getInt(key) else null } private fun createExecutionParams(dictArr: ReadableArray?): Map? { if (dictArr == null) return null val length = dictArr.size() - 1 if (length == -1) return null var map = mutableMapOf(); for (i in 0..length) { val dict: ReadableMap = dictArr.getMap(i)!! val key = getS(dict, "key")!! val value = getS(dict, "value")!! map.put(key, value) } return map.toMap() } private fun createLink(dict: ReadableMap): Link { val webURL: String? = getS(dict, "webUrl") val mobileWebURL: String? = getS(dict, "mobileWebUrl") val iosExecutionParams: Map? = createExecutionParams(dict.getArray("iosExecutionParams")) val androidExecutionParams: Map? = createExecutionParams(dict.getArray("androidExecutionParams")) return Link(webUrl = webURL, mobileWebUrl = mobileWebURL, iosExecutionParams = iosExecutionParams, androidExecutionParams = androidExecutionParams) } private fun createButton(dict: ReadableMap): Button { val title: String = getS(dict, "title")!! val link: Link = createLink(dict.getMap("link")!!) return Button(title, link) } private fun createButtons(dictArr: ReadableArray): List