Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add standalone modal (work in progress, do not merge) #48

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions demo/src/main/java/com/paypal/messagesdemo/XmlActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import android.util.Log
import android.view.View
import android.view.ViewGroup.LayoutParams
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.ui.graphics.Color
import com.paypal.messages.PayPalMessageView
import com.paypal.messages.PayPalMessagesModalFragment
import com.paypal.messages.config.Channel
import com.paypal.messages.config.PayPalEnvironment
import com.paypal.messages.config.PayPalMessageOfferType
import com.paypal.messages.config.PayPalMessagePageType
Expand All @@ -18,6 +21,7 @@ import com.paypal.messages.config.message.PayPalMessageViewStateCallbacks
import com.paypal.messages.config.message.style.PayPalMessageAlignment
import com.paypal.messages.config.message.style.PayPalMessageColor
import com.paypal.messages.config.message.style.PayPalMessageLogoType
import com.paypal.messages.config.modal.PayPalMessagesModalConfig
import com.paypal.messages.io.Api
import com.paypal.messagesdemo.databinding.ActivityMessageBinding

Expand All @@ -35,6 +39,23 @@ class XmlActivity : AppCompatActivity() {
binding = ActivityMessageBinding.inflate(layoutInflater)
setContentView(binding.root)

val messagesModalText = binding.messagesModalText
val modalConfig = PayPalMessagesModalConfig(
clientID = getString(R.string.client_id),
amount = 300.0,
offerType = PayPalMessageOfferType.PAY_LATER_LONG_TERM,
)
val modal = PayPalMessagesModalFragment(context = this, config = modalConfig)
messagesModalText.setOnClickListener {
modal.show()
}

// // XML can also be used
// val xmlModal = binding.xmlModal
// messagesModalText.setOnClickListener {
// xmlModal.show()
// }

val messageWrapper = binding.messageWrapper
val progressBar = binding.progressBar
val resetButton = binding.reset
Expand Down Expand Up @@ -183,6 +204,13 @@ class XmlActivity : AppCompatActivity() {
submitButton.setOnClickListener { updateMessageData() }
}

@Override
private fun activityPaused() {
val modalConfig = PayPalMessagesModalConfig(clientID = "someClientID")
val modal = PayPalMessagesModalFragment(context = this, config = modalConfig)
modal.hide()
}

/**
* Prevents unused warnings inside of PayPalMessageView and PayPalMessageConfig
*/
Expand All @@ -200,10 +228,35 @@ class XmlActivity : AppCompatActivity() {
message.merchantID = ""
message.partnerAttributionID = ""
message.pageType = PayPalMessagePageType.CART
message.channel = Channel.UPSTREAM.toString()
message.onClick = {}
message.onApply = {}
message.onLoading = {}
message.onSuccess = {}
message.onError = {}

val modalConfig = PayPalMessagesModalConfig(clientID = "someClientID")
val modal = PayPalMessagesModalFragment(context = this, config = modalConfig)
modal.getConfig()
modal.setConfig(modalConfig)
modal.environment = PayPalEnvironment.SANDBOX
modal.clientID = ""
modal.merchantID = ""
modal.partnerAttributionID = ""
modal.channel = Channel.UPSTREAM.toString()
modal.pageType = PayPalMessagePageType.CART
modal.onClick = {}
modal.onApply = {}
modal.onLoading = {}
modal.onSuccess = {}
modal.onError = {}
modal.onCalculate = {}
modal.onShow = {}
modal.onClose = {}

val textView = TextView(this)
textView.setOnClickListener {
modal.show()
}
}
}
39 changes: 26 additions & 13 deletions demo/src/main/res/layout/activity_message.xml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
android:id="@+id/offerTypeLabel"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp"
android:textStyle="bold"
android:textSize="16sp"/>
<Button
Expand Down Expand Up @@ -238,21 +238,21 @@

<RadioGroup
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_height="28dp"
android:orientation="horizontal">

<com.google.android.material.switchmaterial.SwitchMaterial
android:text="Ignore Cache"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/ignoreCache"
android:textStyle="bold"
android:layout_weight="1"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Ignore Cache"
android:textStyle="bold" />

<com.google.android.material.switchmaterial.SwitchMaterial
android:text="Dev Touchpoint"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:id="@+id/devTouchpoint"
android:textStyle="bold"
android:layout_weight="1"/>
Expand All @@ -276,23 +276,37 @@
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

<TextView
android:id="@+id/messagesModalText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/messages_modal_text" />

<!-- <com.paypal.messages.PayPalMessageView-->
<!-- android:id="@+id/xmlMessage"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="80dp"-->
<!-- app:paypal_client_id="@string/client_id"-->
<!-- />-->

<com.paypal.messages.PayPalMessagesModalFragment
android:id="@+id/xmlModal"
android:layout_width="0dp"
android:layout_height="0dp"
app:paypal_client_id="@string/client_id"
/>

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginTop="20dp">

<Button
android:id="@+id/reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reload_label"
android:layout_marginTop="24dp"/>
android:text="@string/reload_label"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
Expand All @@ -302,8 +316,7 @@
android:text="Submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/submit"
android:layout_marginTop="24dp"/>
android:id="@+id/submit"/>

</LinearLayout>

Expand Down
3 changes: 2 additions & 1 deletion demo/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<resources>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation">
<string name="app_name">Message Configuration</string>
<string name="header_kotlin">Kotlin PayPal Message</string>
<string name="reload_label">Reset</string>
<string name="messages_modal_text">Click here for a modal</string>
</resources>
5 changes: 2 additions & 3 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,8 @@ koverReport {
'*Fragment\$*',
'*Activity',
'*Activity\$*',
'com.paypal.messages.PayPalMessageView*',
'com.paypal.messages.RoundedWebView',
'com.paypal.messages.RoundedWebView\$*',
'*View',
'*View\$*',
'*.databinding.*',
'*.BuildConfig'
)
Expand Down
36 changes: 23 additions & 13 deletions library/src/main/java/com/paypal/messages/ModalFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,33 @@ internal class ModalFragment(

// MODAL CONFIG VALUES
var amount: Double? = null
set(amountArg) {
if (field != amountArg) {
field = amountArg
setJsValue(name = "amount", value = amountArg)
set(arg) {
if (field != arg) {
field = arg
setJsValue(name = "amount", value = arg)
}
}
var buyerCountry: String? = null
set(buyerCountryArg) {
if (field != buyerCountryArg) {
field = buyerCountryArg
setJsValue(name = "buyerCountry", value = buyerCountry)
set(arg) {
if (field != arg) {
field = arg
setJsValue(name = "buyerCountry", value = arg)
}
}
var channel: String? = Channel.UPSTREAM.toString()
set(arg) {
if (field != arg) {
field = arg
setJsValue(name = "channel", value = arg)
}
}
private var channel: Channel = Channel.NATIVE
private var devTouchpoint: Boolean = true
private var ignoreCache: Boolean = false
var offerType: OfferType? = null
set(offerArg) {
if (field != offerArg) {
field = offerArg
setJsValue(name = "offer", value = offerArg.toString())
set(arg) {
if (field != arg) {
field = arg
setJsValue(name = "offer", value = arg.toString())
}
}
private var stageTag: String? = null
Expand Down Expand Up @@ -246,6 +252,10 @@ internal class ModalFragment(
this.dialog?.show()
}

fun hide() {
this.dialog?.hide()
}

fun init(config: ModalConfig) {
// Set Parameters for Modal
this.amount = config.amount
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,14 @@ class PayPalMessageView @JvmOverloads constructor(
debounceUpdateContent(Unit)
}
}
var channel: String? = config.data.channel
set(arg) {
if (field != arg) {
field = arg
if (modal != null) modal?.channel = field
debounceUpdateContent(Unit)
}
}
var offerType: OfferType? = config.data.offerType
set(arg) {
if (field != arg) {
Expand Down
Loading
Loading