mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-23 03:05:26 +00:00
Add payment activation capability.
This commit is contained in:
committed by
Greyson Parrelli
parent
96b2051400
commit
a13599ae2a
@@ -1,28 +0,0 @@
|
||||
package org.thoughtcrime.securesms;
|
||||
|
||||
import org.thoughtcrime.securesms.stories.Stories;
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||
import org.whispersystems.signalservice.api.account.AccountAttributes;
|
||||
|
||||
public final class AppCapabilities {
|
||||
|
||||
private AppCapabilities() {
|
||||
}
|
||||
|
||||
private static final boolean UUID_CAPABLE = false;
|
||||
private static final boolean GV2_CAPABLE = true;
|
||||
private static final boolean GV1_MIGRATION = true;
|
||||
private static final boolean ANNOUNCEMENT_GROUPS = true;
|
||||
private static final boolean SENDER_KEY = true;
|
||||
private static final boolean CHANGE_NUMBER = true;
|
||||
private static final boolean STORIES = true;
|
||||
private static final boolean GIFT_BADGES = true;
|
||||
|
||||
/**
|
||||
* @param storageCapable Whether or not the user can use storage service. This is another way of
|
||||
* asking if the user has set a Signal PIN or not.
|
||||
*/
|
||||
public static AccountAttributes.Capabilities getCapabilities(boolean storageCapable) {
|
||||
return new AccountAttributes.Capabilities(UUID_CAPABLE, GV2_CAPABLE, storageCapable, GV1_MIGRATION, SENDER_KEY, ANNOUNCEMENT_GROUPS, CHANGE_NUMBER, STORIES, GIFT_BADGES, FeatureFlags.phoneNumberPrivacy());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.thoughtcrime.securesms
|
||||
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
||||
import org.whispersystems.signalservice.api.account.AccountAttributes
|
||||
|
||||
object AppCapabilities {
|
||||
/**
|
||||
* @param storageCapable Whether or not the user can use storage service. This is another way of
|
||||
* asking if the user has set a Signal PIN or not.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun getCapabilities(storageCapable: Boolean): AccountAttributes.Capabilities {
|
||||
return AccountAttributes.Capabilities(
|
||||
isUuid = false,
|
||||
isGv2 = true,
|
||||
isStorage = storageCapable,
|
||||
isGv1Migration = true,
|
||||
isSenderKey = true,
|
||||
isAnnouncementGroup = true,
|
||||
isChangeNumber = true,
|
||||
isStories = true,
|
||||
isGiftBadges = true,
|
||||
isPnp = FeatureFlags.phoneNumberPrivacy(),
|
||||
paymentActivation = true
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1552,6 +1552,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
|
||||
value = Bitmask.update(value, Capabilities.STORIES, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isStories).serialize().toLong())
|
||||
value = Bitmask.update(value, Capabilities.GIFT_BADGES, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isGiftBadges).serialize().toLong())
|
||||
value = Bitmask.update(value, Capabilities.PNP, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isPnp).serialize().toLong())
|
||||
value = Bitmask.update(value, Capabilities.PAYMENT_ACTIVATION, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isPaymentActivation).serialize().toLong())
|
||||
|
||||
val values = ContentValues(1).apply {
|
||||
put(CAPABILITIES, value)
|
||||
@@ -3919,6 +3920,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
|
||||
storiesCapability = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.STORIES, Capabilities.BIT_LENGTH).toInt()),
|
||||
giftBadgesCapability = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.GIFT_BADGES, Capabilities.BIT_LENGTH).toInt()),
|
||||
pnpCapability = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.PNP, Capabilities.BIT_LENGTH).toInt()),
|
||||
paymentActivation = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.PAYMENT_ACTIVATION, Capabilities.BIT_LENGTH).toInt()),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4240,6 +4242,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
|
||||
const val STORIES = 5
|
||||
const val GIFT_BADGES = 6
|
||||
const val PNP = 7
|
||||
const val PAYMENT_ACTIVATION = 8
|
||||
}
|
||||
|
||||
enum class VibrateState(val id: Int) {
|
||||
|
||||
@@ -125,6 +125,7 @@ data class RecipientRecord(
|
||||
val storiesCapability: Recipient.Capability,
|
||||
val giftBadgesCapability: Recipient.Capability,
|
||||
val pnpCapability: Recipient.Capability,
|
||||
val paymentActivation: Recipient.Capability
|
||||
) {
|
||||
companion object {
|
||||
@JvmField
|
||||
@@ -136,6 +137,7 @@ data class RecipientRecord(
|
||||
Recipient.Capability.UNKNOWN,
|
||||
Recipient.Capability.UNKNOWN,
|
||||
Recipient.Capability.UNKNOWN,
|
||||
Recipient.Capability.UNKNOWN,
|
||||
Recipient.Capability.UNKNOWN
|
||||
)
|
||||
}
|
||||
|
||||
@@ -108,17 +108,7 @@ public class RefreshAttributesJob extends BaseJob {
|
||||
Log.i(TAG, "Calling setAccountAttributes() reglockV1? " + !TextUtils.isEmpty(registrationLockV1) + ", reglockV2? " + !TextUtils.isEmpty(registrationLockV2) + ", pin? " + kbsValues.hasPin() +
|
||||
"\n Phone number discoverable : " + phoneNumberDiscoverable +
|
||||
"\n Device Name : " + (encryptedDeviceName != null) +
|
||||
"\n Capabilities:" +
|
||||
"\n Storage? " + capabilities.isStorage() +
|
||||
"\n GV2? " + capabilities.isGv2() +
|
||||
"\n GV1 Migration? " + capabilities.isGv1Migration() +
|
||||
"\n Sender Key? " + capabilities.isSenderKey() +
|
||||
"\n Announcement Groups? " + capabilities.isAnnouncementGroup() +
|
||||
"\n Change Number? " + capabilities.isChangeNumber() +
|
||||
"\n Stories? " + capabilities.isStories() +
|
||||
"\n Gift Badges? " + capabilities.isGiftBadges() +
|
||||
"\n PNP? " + capabilities.isPnp() +
|
||||
"\n UUID? " + capabilities.isUuid());
|
||||
"\n Capabilities: " + capabilities);
|
||||
|
||||
SignalServiceAccountManager signalAccountManager = ApplicationDependencies.getSignalServiceAccountManager();
|
||||
signalAccountManager.setAccountAttributes(null,
|
||||
|
||||
@@ -450,7 +450,7 @@ public class AttachmentManager {
|
||||
intent.putExtra(PaymentsActivity.EXTRA_PAYMENTS_STARTING_ACTION, R.id.action_directly_to_createPayment);
|
||||
intent.putExtra(PaymentsActivity.EXTRA_STARTING_ARGUMENTS, new CreatePaymentFragmentArgs.Builder(new PayeeParcelable(recipient.getId())).setFinishOnConfirm(true).build().toBundle());
|
||||
fragment.startActivity(intent);
|
||||
} else if (FeatureFlags.paymentsRequestActivateFlow()) {
|
||||
} else if (FeatureFlags.paymentsRequestActivateFlow() && recipient.getPaymentActivationCapability().isSupported()) {
|
||||
showRequestToActivatePayments(fragment.requireContext(), recipient);
|
||||
} else {
|
||||
RecipientHasNotEnabledPaymentsDialog.show(fragment.requireContext());
|
||||
|
||||
@@ -1024,6 +1024,10 @@ public class Recipient {
|
||||
return capabilities.getPnpCapability();
|
||||
}
|
||||
|
||||
public @NonNull Capability getPaymentActivationCapability() {
|
||||
return capabilities.getPaymentActivation();
|
||||
}
|
||||
|
||||
public @Nullable byte[] getProfileKey() {
|
||||
return profileKey;
|
||||
}
|
||||
@@ -1213,6 +1217,10 @@ public class Recipient {
|
||||
return value;
|
||||
}
|
||||
|
||||
public boolean isSupported() {
|
||||
return this == SUPPORTED;
|
||||
}
|
||||
|
||||
public static Capability deserialize(int value) {
|
||||
switch (value) {
|
||||
case 0: return UNKNOWN;
|
||||
|
||||
Reference in New Issue
Block a user