kopia lustrzana https://github.com/ryukoposting/Signal-Android
85 wiersze
3.1 KiB
Kotlin
85 wiersze
3.1 KiB
Kotlin
package org.thoughtcrime.securesms.badges.gifts.thanks
|
|
|
|
import android.os.Bundle
|
|
import androidx.fragment.app.FragmentManager
|
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|
import org.signal.core.util.DimensionUnit
|
|
import org.signal.core.util.getParcelableCompat
|
|
import org.thoughtcrime.securesms.R
|
|
import org.thoughtcrime.securesms.badges.models.Badge
|
|
import org.thoughtcrime.securesms.badges.models.BadgePreview
|
|
import org.thoughtcrime.securesms.components.settings.DSLConfiguration
|
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter
|
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsBottomSheetFragment
|
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
|
import org.thoughtcrime.securesms.components.settings.configure
|
|
import org.thoughtcrime.securesms.recipients.Recipient
|
|
import org.thoughtcrime.securesms.recipients.RecipientId
|
|
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
|
import org.thoughtcrime.securesms.util.LifecycleDisposable
|
|
|
|
/**
|
|
* Displays a "Thank you" message in a conversation when redirected
|
|
* there after purchasing and sending a gift badge.
|
|
*/
|
|
class GiftThanksSheet : DSLSettingsBottomSheetFragment() {
|
|
|
|
companion object {
|
|
private const val ARGS_RECIPIENT_ID = "args.recipient.id"
|
|
private const val ARGS_BADGE = "args.badge"
|
|
|
|
@JvmStatic
|
|
fun show(fragmentManager: FragmentManager, recipientId: RecipientId, badge: Badge) {
|
|
GiftThanksSheet().apply {
|
|
arguments = Bundle().apply {
|
|
putParcelable(ARGS_RECIPIENT_ID, recipientId)
|
|
putParcelable(ARGS_BADGE, badge)
|
|
}
|
|
}.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
|
|
}
|
|
}
|
|
|
|
private val lifecycleDisposable = LifecycleDisposable()
|
|
|
|
private val recipientId: RecipientId
|
|
get() = requireArguments().getParcelableCompat(ARGS_RECIPIENT_ID, RecipientId::class.java)!!
|
|
|
|
private val badge: Badge
|
|
get() = requireArguments().getParcelableCompat(ARGS_BADGE, Badge::class.java)!!
|
|
|
|
override fun bindAdapter(adapter: DSLSettingsAdapter) {
|
|
BadgePreview.register(adapter)
|
|
|
|
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
|
lifecycleDisposable += Recipient.observable(recipientId).observeOn(AndroidSchedulers.mainThread()).subscribe {
|
|
adapter.submitList(getConfiguration(it).toMappingModelList())
|
|
}
|
|
}
|
|
|
|
private fun getConfiguration(recipient: Recipient): DSLConfiguration {
|
|
return configure {
|
|
textPref(
|
|
title = DSLSettingsText.from(R.string.SubscribeThanksForYourSupportBottomSheetDialogFragment__thanks_for_your_support, DSLSettingsText.TitleLargeModifier, DSLSettingsText.CenterModifier)
|
|
)
|
|
|
|
noPadTextPref(
|
|
title = DSLSettingsText.from(
|
|
getString(R.string.GiftThanksSheet__youve_made_a_donation, recipient.getDisplayName(requireContext())),
|
|
DSLSettingsText.CenterModifier
|
|
)
|
|
)
|
|
|
|
space(DimensionUnit.DP.toPixels(37f).toInt())
|
|
|
|
customPref(
|
|
BadgePreview.BadgeModel.GiftedBadgeModel(
|
|
badge = badge,
|
|
recipient = recipient
|
|
)
|
|
)
|
|
|
|
space(DimensionUnit.DP.toPixels(60f).toInt())
|
|
}
|
|
}
|
|
}
|