From b3fdcafee2647e3af229ca115ee3859514b6b1bd Mon Sep 17 00:00:00 2001 From: kota113 Date: Tue, 14 Oct 2025 09:46:46 +0900 Subject: [PATCH] fix: resolve hanging JavaScript promise on Android --- .../com/xmartlabs/line/LineLoginModule.kt | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/xmartlabs/line/LineLoginModule.kt b/android/src/main/java/com/xmartlabs/line/LineLoginModule.kt index 875fa1b..1daf5e2 100755 --- a/android/src/main/java/com/xmartlabs/line/LineLoginModule.kt +++ b/android/src/main/java/com/xmartlabs/line/LineLoginModule.kt @@ -43,18 +43,24 @@ class LineLoginModule(private val reactContext: ReactApplicationContext) : private var loginResult: Promise? = null override fun setup(args: ReadableMap, promise: Promise) { - channelId = args.getString("channelId")!! - lineApiClient = LineApiClientBuilder(reactContext.applicationContext, channelId).build() - reactContext.addActivityEventListener(object : ActivityEventListener { - override fun onNewIntent(intent: Intent) {} - override fun onActivityResult( - activity: Activity, - requestCode: Int, - resultCode: Int, - data: Intent? - ) = - handleActivityResult(requestCode, resultCode, data) - }) + try { + channelId = args.getString("channelId")!! + lineApiClient = LineApiClientBuilder(reactContext.applicationContext, channelId).build() + + reactContext.addActivityEventListener(object : ActivityEventListener { + override fun onNewIntent(intent: Intent) {} + override fun onActivityResult( + activity: Activity, + requestCode: Int, + resultCode: Int, + data: Intent? + ) = + handleActivityResult(requestCode, resultCode, data) + }) + promise.resolve(null) + } catch (t: Throwable) { + promise.reject("E_SETUP_FAILED", t.message, t) + } } override fun login(args: ReadableMap, promise: Promise) {