kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add expiry information to gift conversation items.
rodzic
ce2418ce9f
commit
a1025a8e9a
|
@ -13,6 +13,7 @@ import com.google.android.material.button.MaterialButton
|
|||
import org.signal.core.util.DimensionUnit
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.badges.BadgeImageView
|
||||
import org.thoughtcrime.securesms.badges.gifts.Gifts.formatExpiry
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||
|
||||
|
@ -50,7 +51,7 @@ class GiftMessageView @JvmOverloads constructor(
|
|||
|
||||
fun setGiftBadge(glideRequests: GlideRequests, giftBadge: GiftBadge, isOutgoing: Boolean, callback: Callback) {
|
||||
titleView.setText(R.string.GiftMessageView__gift_badge)
|
||||
descriptionView.text = resources.getQuantityString(R.plurals.GiftMessageView__lasts_for_d_months, 1, 1)
|
||||
descriptionView.text = giftBadge.formatExpiry(context)
|
||||
actionView.icon = null
|
||||
actionView.setOnClickListener { callback.onViewGiftBadgeClicked() }
|
||||
actionView.isEnabled = true
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
package org.thoughtcrime.securesms.badges.gifts
|
||||
|
||||
import android.content.Context
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException
|
||||
import org.signal.libsignal.zkgroup.receipts.ReceiptCredentialPresentation
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase
|
||||
import org.thoughtcrime.securesms.database.model.StoryType
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge
|
||||
|
@ -7,6 +11,8 @@ import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
|
|||
import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.util.Base64
|
||||
import java.lang.Integer.min
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* Helper object for Gift badges
|
||||
|
@ -45,4 +51,36 @@ object Gifts {
|
|||
giftBadge
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the expiration time from the redemption token, in UNIX epoch seconds.
|
||||
*/
|
||||
private fun GiftBadge.getExpiry(): Long {
|
||||
return try {
|
||||
ReceiptCredentialPresentation(redemptionToken.toByteArray()).receiptExpirationTime
|
||||
} catch (e: InvalidInputException) {
|
||||
return 0L
|
||||
}
|
||||
}
|
||||
|
||||
fun GiftBadge.formatExpiry(context: Context): String {
|
||||
val expiry = getExpiry()
|
||||
val timeRemaining = TimeUnit.SECONDS.toMillis(expiry) - System.currentTimeMillis()
|
||||
if (timeRemaining <= 0) {
|
||||
return context.getString(R.string.Gifts__expired)
|
||||
}
|
||||
|
||||
val days = TimeUnit.MILLISECONDS.toDays(timeRemaining).toInt()
|
||||
if (days > 0) {
|
||||
return context.resources.getQuantityString(R.plurals.Gifts__d_days_remaining, days, days)
|
||||
}
|
||||
|
||||
val hours = TimeUnit.MILLISECONDS.toHours(timeRemaining).toInt()
|
||||
if (hours > 0) {
|
||||
return context.resources.getQuantityString(R.plurals.Gifts__d_hours_remaining, hours, hours)
|
||||
}
|
||||
|
||||
val minutes = min(1, TimeUnit.MILLISECONDS.toMinutes(timeRemaining).toInt())
|
||||
return context.resources.getQuantityString(R.plurals.Gifts__d_minutes_remaining, minutes, minutes)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4824,6 +4824,23 @@
|
|||
<item quantity="one">Group Story · %1$d viewer</item>
|
||||
<item quantity="other">Group Story · %1$d viewers</item>
|
||||
</plurals>
|
||||
<!-- Gift expiry days remaining -->
|
||||
<plurals name="Gifts__d_days_remaining">
|
||||
<item quantity="one">%1$d days remaining</item>
|
||||
<item quantity="other">%1$d days remaining</item>
|
||||
</plurals>
|
||||
<!-- Gift expiry hours remaining -->
|
||||
<plurals name="Gifts__d_hours_remaining">
|
||||
<item quantity="one">%1$d hours remaining</item>
|
||||
<item quantity="other">%1$d hours remaining</item>
|
||||
</plurals>
|
||||
<!-- Gift expiry minutes remaining -->
|
||||
<plurals name="Gifts__d_minutes_remaining">
|
||||
<item quantity="one">%1$d minute remaining</item>
|
||||
<item quantity="other">%1$d minutes remaining</item>
|
||||
</plurals>
|
||||
<!-- Gift expiry expired -->
|
||||
<string name="Gifts__expired">Expired</string>
|
||||
|
||||
<!-- EOF -->
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue