Skip to content
This repository has been archived by the owner. It is now read-only.

Commit

Permalink
Merge pull request #2 from ppav/cloudtips_intent_sneder
Browse files Browse the repository at this point in the history
Add CloudTipsIntentSender and launching an activity for result
  • Loading branch information
a-ignatov-cp committed Oct 29, 2021
2 parents 51842d9 + fabad2b commit 90f2874
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
24 changes: 24 additions & 0 deletions sdk/src/main/java/ru/cloudtips/sdk/CloudTipsIntentSender.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ru.cloudtips.sdk

import android.content.Context
import android.content.Intent
import androidx.activity.result.contract.ActivityResultContract
import ru.cloudtips.sdk.CloudTipsSDK.IntentKeys
import ru.cloudtips.sdk.CloudTipsSDK.TransactionStatus
import ru.cloudtips.sdk.CloudTipsSDK.TransactionStatus.Cancelled
import ru.cloudtips.sdk.CloudTipsSDK.TransactionStatus.Succeeded
import ru.cloudtips.sdk.ui.TipsActivity

internal class CloudTipsIntentSender : ActivityResultContract<TipsConfiguration, TransactionStatus>() {
override fun createIntent(context: Context, input: TipsConfiguration): Intent {
return TipsActivity.getStartIntent(context, input)
}

override fun parseResult(resultCode: Int, intent: Intent?): TransactionStatus {
return if (intent?.getSerializableExtra(IntentKeys.TransactionStatus.name) == Succeeded
) Succeeded
else {
Cancelled
}
}
}
18 changes: 18 additions & 0 deletions sdk/src/main/java/ru/cloudtips/sdk/CloudTipsSDK.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package ru.cloudtips.sdk

import androidx.activity.result.ActivityResultLauncher
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import ru.cloudtips.sdk.CloudTipsSDK.TransactionStatus
import ru.cloudtips.sdk.ui.TipsActivity

interface CloudTipsSDK {

fun start(configuration: TipsConfiguration, from: AppCompatActivity, requestCode: Int)
fun launcher(from: AppCompatActivity, result: (TransactionStatus) -> Unit) : ActivityResultLauncher<TipsConfiguration>
fun launcher(from: Fragment, result: (TransactionStatus) -> Unit) : ActivityResultLauncher<TipsConfiguration>

enum class TransactionStatus {
Succeeded,
Expand All @@ -27,4 +32,17 @@ internal class CloudTipsSDKImpl: CloudTipsSDK {
override fun start(configuration: TipsConfiguration, from: AppCompatActivity, requestCode: Int) {
from.startActivityForResult(TipsActivity.getStartIntent(from, configuration), requestCode)
}

override fun launcher(
from: AppCompatActivity,
result: (TransactionStatus) -> Unit): ActivityResultLauncher<TipsConfiguration>{
return from.registerForActivityResult(CloudTipsIntentSender(), result)
}

override fun launcher(
from: Fragment,
result: (TransactionStatus) -> Unit
): ActivityResultLauncher<TipsConfiguration> {
return from.registerForActivityResult(CloudTipsIntentSender(), result)
}
}

0 comments on commit 90f2874

Please sign in to comment.