MemberCardView

TerraCore v0

Introduction#

Use this built-in view to display summary information of the member include: name, avatar, current balance points, current tier.

Usage#

Prerequiresite#

To use this component, the main app needs to use androidx component for its fragment/activity:


Adding LoyaltyMemberCardView to your layout#

<vn.teko.loyalty.consumer.ui.component.membercard.LoyaltyMemberCardView
android:id="@+id/loyaltyMemberCardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp" />

Setting up the controller in activity/fragment#

There is a note when we use the LoyaltyMemberCardView. When we add that view to our screen, it will fetch data of member automatically. This process can cause some errors like network connect... In these cases, that view will notify error to the client via callback. The client can show dialog or something for these errors and try to reload LoyaltyMemberCardView by reload method.

class OurFancyActivity : AppCompatActivity() {
private lateinit var loyaltyMemberCardViewController: LoyaltyMemberCardViewController
private val memberCardCallback by lazy {
object : MemberCardCallback {
override fun onClickSettingButton() {
// TODO: navigate to setting screen or account screen
}
override fun onClickCreateMemberButton() {
// TODO: navigate to create new member screen
}
override fun onClickUsePointsButton() {
// TODO: navigate to membership qr screen
}
override fun onError(error: Throwable) {
// handle the given error
AlertDialog.Builder(context)
.setMessage("Error occurred when initializing MemberCard")
.setPositiveButton("Retry") { _, _ -> loyaltyMemberCardViewController.reload() }
.show()
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(/**....*/)
val loyaltyMemberCardView =
findViewById<LoyaltyMemberCardView>(R.id.loyaltyMemberCardView)
loyaltyMemberCardViewController =
LoyaltyMemberCardViewController(
activity = this,
memberCardData = MemberCardData(
memberName = "Dylan Pham",
memberAvatarUrl = "member-avatar-url",
visibleSettingButton = true
),
loyaltyConsumer = LoyaltyConsumerManager.getInstance(),
callback = memberCardCallback
)
loyaltyMemberCardViewController.enable()
loyaltyMemberCardViewController.setMemberCardView(loyaltyMemberCardView)
}
}
class OurFancyFragment : Fragment() {
private lateinit var loyaltyMemberCardViewController: LoyaltyMemberCardViewController
private val memberCardCallback by lazy {
// create new MemberCardCallback instance like something we have done in `OurFancyActivity`
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val loyaltyMemberCardView =
findViewById<LoyaltyMemberCardView>(R.id.loyaltyMemberCardView)
loyaltyMemberCardViewController =
LoyaltyMemberCardViewController(
fragment = this,
memberCardData = MemberCardData(
memberName = "Dylan Pham",
memberAvatarUrl = "member-avatar-url",
visibleSettingButton = true
),
loyaltyConsumer = LoyaltyConsumerManager.getInstance(),
callback = memberCardCallback
)
loyaltyMemberCardViewController.enable()
loyaltyMemberCardViewController.setMemberCardView(loyaltyMemberCardView)
}
}