From ef69ce97242a7c1d5e83e5344f08c75201533104 Mon Sep 17 00:00:00 2001 From: merlinpaypal <124289716+merlinpaypal@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:10:44 -0400 Subject: [PATCH] fix: allow messages to be updated any time (#34) --- .../com/paypal/messagesdemo/XmlActivity.kt | 2 +- .../com/paypal/messages/PayPalMessageView.kt | 31 +++++++------------ .../messages/analytics/AnalyticsLogger.kt | 1 - .../{config => analytics}/GlobalAnalytics.kt | 2 +- .../config/message/PayPalMessageConfig.kt | 6 ++-- .../main/java/com/paypal/messages/io/Api.kt | 9 ++++-- .../KoverExcludeGenerated.kt | 2 +- .../GlobalAnalyticsTest.kt | 2 +- .../config/message/PayPalMessageConfigTest.kt | 4 +-- scripts/pre-commit | 10 ++---- 10 files changed, 31 insertions(+), 38 deletions(-) rename library/src/main/java/com/paypal/messages/{config => analytics}/GlobalAnalytics.kt (80%) rename library/src/main/java/com/paypal/messages/{config/message => utils}/KoverExcludeGenerated.kt (89%) rename library/src/test/java/com/paypal/messages/{config => analytics}/GlobalAnalyticsTest.kt (90%) diff --git a/demo/src/main/java/com/paypal/messagesdemo/XmlActivity.kt b/demo/src/main/java/com/paypal/messagesdemo/XmlActivity.kt index 70f59276..17430ed2 100644 --- a/demo/src/main/java/com/paypal/messagesdemo/XmlActivity.kt +++ b/demo/src/main/java/com/paypal/messagesdemo/XmlActivity.kt @@ -190,7 +190,7 @@ class XmlActivity : AppCompatActivity() { binding = ActivityMessageBinding.inflate(layoutInflater) setContentView(binding.root) - PayPalMessageConfig.setGlobalAnalytics() + PayPalMessageConfig.setGlobalAnalytics("", "") val config = PayPalMessageConfig(data = PayPalMessageData(clientID = "someClientID")) val message = PayPalMessageView(context = this, config = config) message.getConfig() diff --git a/library/src/main/java/com/paypal/messages/PayPalMessageView.kt b/library/src/main/java/com/paypal/messages/PayPalMessageView.kt index 9ad2b5b0..3abdebd7 100644 --- a/library/src/main/java/com/paypal/messages/PayPalMessageView.kt +++ b/library/src/main/java/com/paypal/messages/PayPalMessageView.kt @@ -67,7 +67,6 @@ class PayPalMessageView @JvmOverloads constructor( ) : FrameLayout(context, attributeSet, defStyleAttr), OnActionCompleted { private val TAG = "PayPalMessage" private var messageTextView: TextView - private var updateInProgress = false private var instanceId = UUID.randomUUID() fun getConfig(): MessageConfig { @@ -441,23 +440,18 @@ class PayPalMessageView @JvmOverloads constructor( * This function updates message content uses [Api.getMessageWithHash] to fetch the data. */ private fun updateMessageContent() { - LogCat.debug(TAG, "updateMessageContent config: ${getConfig()}") - if (!updateInProgress) { - // Call OnLoading callback and prepare view for the process - onLoading.invoke() - messageTextView.visibility = View.GONE - updateInProgress = true - LogCat.debug(TAG, "Firing request to get message") - - requestDuration = measureTimeMillis { - Api.getMessageWithHash( - context, - getConfig(), - this.instanceId, - this, - ) - }.toInt() - } + // Call OnLoading callback and prepare view for the process + onLoading.invoke() + LogCat.debug(TAG, "Firing request to get message with config: ${getConfig()}") + + requestDuration = measureTimeMillis { + Api.getMessageWithHash( + context, + getConfig(), + this.instanceId, + this, + ) + }.toInt() } override fun onActionCompleted(result: ApiResult) { @@ -487,7 +481,6 @@ class PayPalMessageView @JvmOverloads constructor( result.error?.let { this.onError(it) } } } - updateInProgress = false } /** diff --git a/library/src/main/java/com/paypal/messages/analytics/AnalyticsLogger.kt b/library/src/main/java/com/paypal/messages/analytics/AnalyticsLogger.kt index eb3228b0..3228001e 100644 --- a/library/src/main/java/com/paypal/messages/analytics/AnalyticsLogger.kt +++ b/library/src/main/java/com/paypal/messages/analytics/AnalyticsLogger.kt @@ -1,7 +1,6 @@ package com.paypal.messages.analytics import android.content.Context -import com.paypal.messages.config.GlobalAnalytics import com.paypal.messages.io.Api import com.paypal.messages.io.LocalStorage import com.paypal.messages.utils.LogCat diff --git a/library/src/main/java/com/paypal/messages/config/GlobalAnalytics.kt b/library/src/main/java/com/paypal/messages/analytics/GlobalAnalytics.kt similarity index 80% rename from library/src/main/java/com/paypal/messages/config/GlobalAnalytics.kt rename to library/src/main/java/com/paypal/messages/analytics/GlobalAnalytics.kt index 9a3b8ec6..758275bd 100644 --- a/library/src/main/java/com/paypal/messages/config/GlobalAnalytics.kt +++ b/library/src/main/java/com/paypal/messages/analytics/GlobalAnalytics.kt @@ -1,4 +1,4 @@ -package com.paypal.messages.config +package com.paypal.messages.analytics object GlobalAnalytics { var integrationName: String = "" diff --git a/library/src/main/java/com/paypal/messages/config/message/PayPalMessageConfig.kt b/library/src/main/java/com/paypal/messages/config/message/PayPalMessageConfig.kt index 55aae562..11930957 100644 --- a/library/src/main/java/com/paypal/messages/config/message/PayPalMessageConfig.kt +++ b/library/src/main/java/com/paypal/messages/config/message/PayPalMessageConfig.kt @@ -1,6 +1,6 @@ package com.paypal.messages.config.message -import com.paypal.messages.config.GlobalAnalytics +import com.paypal.messages.analytics.GlobalAnalytics /** * [PayPalMessageConfig] is the main configuration model for interacting with the PayPalMessage component @@ -19,8 +19,8 @@ data class PayPalMessageConfig( companion object { fun setGlobalAnalytics( - integrationName: String = "", - integrationVersion: String = "", + integrationName: String, + integrationVersion: String, deviceId: String = "", sessionId: String = "", ) { diff --git a/library/src/main/java/com/paypal/messages/io/Api.kt b/library/src/main/java/com/paypal/messages/io/Api.kt index db5c358b..9f69a48a 100644 --- a/library/src/main/java/com/paypal/messages/io/Api.kt +++ b/library/src/main/java/com/paypal/messages/io/Api.kt @@ -170,7 +170,10 @@ object Api { return ApiResult.getFailureWithDebugId(response.headers) } - LogCat.debug(TAG, "callMessageHashEndpoint response: $bodyJson") + LogCat.debug( + TAG, + "callMessageHashEndpoint response: ${bodyJson?.let { JSONObject(it).toString(2) }}}", + ) val hashResponse = gson.fromJson(bodyJson, ApiHashData.Response::class.java) return ApiResult.Success(hashResponse) @@ -221,12 +224,14 @@ object Api { } internal fun createLoggerRequest(json: String): Request { + LogCat.debug(TAG, "json after removal: ${JSONObject(json).toString(2)}") val request = Request.Builder().apply { url(env.url(Env.Endpoints.LOGGER)) post(json.toRequestBody("application/json".toMediaType())) }.build() - val jsonNoFdata = json.replace(""""fdata":".*?"""".toRegex(), "") + val jsonNoFdata = JSONObject(json).toString(2) + .replace(""""fdata":.*?",""".toRegex(), "") LogCat.debug(TAG, "createLoggerRequest: $request\npayloadJson: $jsonNoFdata") return request } diff --git a/library/src/main/java/com/paypal/messages/config/message/KoverExcludeGenerated.kt b/library/src/main/java/com/paypal/messages/utils/KoverExcludeGenerated.kt similarity index 89% rename from library/src/main/java/com/paypal/messages/config/message/KoverExcludeGenerated.kt rename to library/src/main/java/com/paypal/messages/utils/KoverExcludeGenerated.kt index df42f0e0..25dab997 100644 --- a/library/src/main/java/com/paypal/messages/config/message/KoverExcludeGenerated.kt +++ b/library/src/main/java/com/paypal/messages/utils/KoverExcludeGenerated.kt @@ -1,4 +1,4 @@ -package com.paypal.messages.config.message +package com.paypal.messages.utils @Retention(AnnotationRetention.RUNTIME) @Target( diff --git a/library/src/test/java/com/paypal/messages/config/GlobalAnalyticsTest.kt b/library/src/test/java/com/paypal/messages/analytics/GlobalAnalyticsTest.kt similarity index 90% rename from library/src/test/java/com/paypal/messages/config/GlobalAnalyticsTest.kt rename to library/src/test/java/com/paypal/messages/analytics/GlobalAnalyticsTest.kt index 8f4fcf31..6b5eacfe 100644 --- a/library/src/test/java/com/paypal/messages/config/GlobalAnalyticsTest.kt +++ b/library/src/test/java/com/paypal/messages/analytics/GlobalAnalyticsTest.kt @@ -1,4 +1,4 @@ -package com.paypal.messages.config +package com.paypal.messages.analytics import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test diff --git a/library/src/test/java/com/paypal/messages/config/message/PayPalMessageConfigTest.kt b/library/src/test/java/com/paypal/messages/config/message/PayPalMessageConfigTest.kt index 6ec762c8..a2e8d803 100644 --- a/library/src/test/java/com/paypal/messages/config/message/PayPalMessageConfigTest.kt +++ b/library/src/test/java/com/paypal/messages/config/message/PayPalMessageConfigTest.kt @@ -1,6 +1,6 @@ package com.paypal.messages.config.message -import com.paypal.messages.config.GlobalAnalytics +import com.paypal.messages.analytics.GlobalAnalytics import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotEquals import org.junit.jupiter.api.Test @@ -50,7 +50,7 @@ class PayPalMessageConfigTest { // It is also required for full test coverage as calculated by kover @Test fun testSetGlobalAnalyticsWithNoValues() { - PayPalMessageConfig.setGlobalAnalytics() + PayPalMessageConfig.setGlobalAnalytics("", "") assertEquals("", GlobalAnalytics.integrationName) assertEquals("", GlobalAnalytics.integrationVersion) diff --git a/scripts/pre-commit b/scripts/pre-commit index 71397dd0..25d47b06 100755 --- a/scripts/pre-commit +++ b/scripts/pre-commit @@ -12,18 +12,14 @@ if [[ "$stagedFilesCount" -eq "0" ]]; then fi echo "Found $stagedFilesCount staged files." -echo git diff --staged --name-only | grep -E '(library|demo)' +git diff --staged --name-only | grep -E '(library|demo)' echo "" echo "Running ktFormat to fix any auto-fixable issues" -git stash --keep-index --quiet - ./gradlew ktFormat -git add library/ -git add demo/ - -git stash pop --quiet +# Only re-add staged files that are in library/ or demo/ folders +git diff --staged --name-only | grep -E '(library|demo)' | xargs git add echo "***********************************************" echo "Added changed files to commit"