RedeemPointPopup

TerraCore v0

Introduction#

In the basic flow, the client app uses RedeemPointView to allow your users to enter loyalty points for shopping include opening RedeemPointPopup for choosing the number of points to use. But in some cases, the client wants to use a custom view instead of RedeemPointView. In these cases, the client needs to handle the popup or something else for member can choose the number of points to use.

This built-in popup allows your users to choose the number of loyalty points for using.

Usage#

Using LoyaltyRedeemPointPopup#

Assume we have gotten MemberInfo, NetworkConfigResult from LoyaltyService. These data are neccessary for display our custom popup.

class OurFancyActivity : AppCompatActivity() {
private val redeemPointPopupCallback by lazy {
object : RedeemPointPopupCallback {
override fun onUsePoints(data: RedeemPointData) {
viewDataBinding.tvYourPoints.text = "-${data.points}"
Toast.makeText(requireContext(), "Used points: ${data.points}", Toast.LENGTH_LONG)
.show()
}
override fun onMemberInfoUpdate(currentMemberInfo: MemberInfo) {
memberInfo = currentMemberInfo
}
}
}
private fun openLoyaltyRedeemPopup() {
if (supportFragmentManager.findFragmentByTag(LoyaltyComponent.TAG_REDEEM_POINT_POPUP) == null) {
LoyaltyComponent.getRedeemPointPopup(
terraApp = TerraApp.getInstance(),
orderAmount = 10000L,
memberInfo = memberInfo,
network = networkConfigResult,
callback = redeemPointPopupCallback
)
.show(supportFragmentManager, LoyaltyComponent.TAG_REDEEM_POINT_POPUP)
}
}
}
class OurFancyFragment : Fragment() {
private val redeemPointPopupCallback by lazy {
object : RedeemPointPopupCallback {
override fun onUsePoints(data: RedeemPointData) {
viewDataBinding.tvYourPoints.text = "-${data.points}"
Toast.makeText(requireContext(), "Used points: ${data.points}", Toast.LENGTH_LONG)
.show()
}
override fun onMemberInfoUpdate(currentMemberInfo: MemberInfo) {
memberInfo = currentMemberInfo
}
}
}
private fun openLoyaltyRedeemPopup() {
if (childFragmentManager.findFragmentByTag(LoyaltyComponent.TAG_REDEEM_POINT_POPUP) == null) {
LoyaltyComponent.getRedeemPointPopup(
terraApp = TerraApp.getInstance(),
orderAmount = 10000L,
memberInfo = memberInfo,
network = networkConfigResult,
callback = redeemPointPopupCallback
)
.show(childFragmentManager, LoyaltyComponent.TAG_REDEEM_POINT_POPUP)
}
}
}