Set discoverable account attribute.
parent
bcd27355f9
commit
43ed9e7310
|
@ -71,18 +71,22 @@ public class RefreshAttributesJob extends BaseJob {
|
|||
registrationLockV1 = TextSecurePreferences.getDeprecatedV1RegistrationLockPin(context);
|
||||
}
|
||||
|
||||
boolean phoneNumberDiscoverable = SignalStore.phoneNumberPrivacy().getPhoneNumberListingMode().isDiscoverable();
|
||||
|
||||
SignalServiceProfile.Capabilities capabilities = AppCapabilities.getCapabilities(kbsValues.hasPin() && !kbsValues.hasOptedOut());
|
||||
Log.i(TAG, "Calling setAccountAttributes() reglockV1? " + !TextUtils.isEmpty(registrationLockV1) + ", reglockV2? " + !TextUtils.isEmpty(registrationLockV2) + ", pin? " + kbsValues.hasPin() +
|
||||
"\n Phone number discoverable : " + phoneNumberDiscoverable +
|
||||
"\n Capabilities:" +
|
||||
"\n Storage? " + capabilities.isStorage() +
|
||||
"\n GV2? " + capabilities.isGv2() +
|
||||
"\n UUID? " + capabilities.isUuid()) ;
|
||||
"\n UUID? " + capabilities.isUuid());
|
||||
|
||||
SignalServiceAccountManager signalAccountManager = ApplicationDependencies.getSignalServiceAccountManager();
|
||||
signalAccountManager.setAccountAttributes(null, registrationId, fetchesMessages,
|
||||
registrationLockV1, registrationLockV2,
|
||||
unidentifiedAccessKey, universalUnidentifiedAccess,
|
||||
capabilities);
|
||||
capabilities,
|
||||
phoneNumberDiscoverable);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -81,6 +81,14 @@ public final class PhoneNumberPrivacyValues extends SignalStoreValues {
|
|||
*/
|
||||
public enum PhoneNumberListingMode {
|
||||
LISTED,
|
||||
UNLISTED
|
||||
UNLISTED;
|
||||
|
||||
public boolean isDiscoverable() {
|
||||
return this == LISTED;
|
||||
}
|
||||
|
||||
public boolean isUnlisted() {
|
||||
return this == UNLISTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -599,6 +599,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment
|
|||
phoneNumberPrivacyValues.setPhoneNumberListingMode(phoneNumberListingMode);
|
||||
Log.i(TAG, String.format("PhoneNumberListingMode changed to %s. Scheduling storage value sync", phoneNumberListingMode));
|
||||
StorageSyncHelper.scheduleSyncForDataChange();
|
||||
ApplicationDependencies.getJobManager().add(new RefreshAttributesJob());
|
||||
initializePhoneNumberPrivacyWhoCanFindSummary();
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
|||
import org.thoughtcrime.securesms.jobmanager.JobManager;
|
||||
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
|
||||
import org.thoughtcrime.securesms.jobs.RotateCertificateJob;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.pin.PinState;
|
||||
import org.thoughtcrime.securesms.push.AccountManagerFactory;
|
||||
|
@ -220,7 +221,8 @@ public final class CodeVerificationRequest {
|
|||
registrationLockV2,
|
||||
unidentifiedAccessKey,
|
||||
universalUnidentifiedAccess,
|
||||
AppCapabilities.getCapabilities(true));
|
||||
AppCapabilities.getCapabilities(true),
|
||||
SignalStore.phoneNumberPrivacy().getPhoneNumberListingMode().isDiscoverable());
|
||||
|
||||
UUID uuid = UuidUtil.parseOrThrow(response.getUuid());
|
||||
boolean hasPin = response.isStorageCapable();
|
||||
|
|
|
@ -399,7 +399,7 @@ public final class StorageSyncHelper {
|
|||
.setReadReceiptsEnabled(TextSecurePreferences.isReadReceiptsEnabled(context))
|
||||
.setSealedSenderIndicatorsEnabled(TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context))
|
||||
.setLinkPreviewsEnabled(SignalStore.settings().isLinkPreviewsEnabled())
|
||||
.setUnlistedPhoneNumber(SignalStore.phoneNumberPrivacy().getPhoneNumberListingMode() == PhoneNumberPrivacyValues.PhoneNumberListingMode.UNLISTED)
|
||||
.setUnlistedPhoneNumber(SignalStore.phoneNumberPrivacy().getPhoneNumberListingMode().isUnlisted())
|
||||
.setPhoneNumberSharingMode(localToRemotePhoneNumberSharingMode(SignalStore.phoneNumberPrivacy().getPhoneNumberSharingMode()))
|
||||
.build();
|
||||
|
||||
|
|
|
@ -244,7 +244,8 @@ public class SignalServiceAccountManager {
|
|||
public VerifyAccountResponse verifyAccountWithCode(String verificationCode, String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
||||
String pin, String registrationLock,
|
||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||
SignalServiceProfile.Capabilities capabilities)
|
||||
SignalServiceProfile.Capabilities capabilities,
|
||||
boolean discoverableByPhoneNumber)
|
||||
throws IOException
|
||||
{
|
||||
return this.pushServiceSocket.verifyAccountCode(verificationCode, signalingKey,
|
||||
|
@ -253,7 +254,8 @@ public class SignalServiceAccountManager {
|
|||
pin, registrationLock,
|
||||
unidentifiedAccessKey,
|
||||
unrestrictedUnidentifiedAccess,
|
||||
capabilities);
|
||||
capabilities,
|
||||
discoverableByPhoneNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -272,13 +274,15 @@ public class SignalServiceAccountManager {
|
|||
public void setAccountAttributes(String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
||||
String pin, String registrationLock,
|
||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||
SignalServiceProfile.Capabilities capabilities)
|
||||
SignalServiceProfile.Capabilities capabilities,
|
||||
boolean discoverableByPhoneNumber)
|
||||
throws IOException
|
||||
{
|
||||
this.pushServiceSocket.setAccountAttributes(signalingKey, signalProtocolRegistrationId, fetchesMessages,
|
||||
pin, registrationLock,
|
||||
unidentifiedAccessKey, unrestrictedUnidentifiedAccess,
|
||||
capabilities);
|
||||
capabilities,
|
||||
discoverableByPhoneNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -39,6 +39,9 @@ public class AccountAttributes {
|
|||
@JsonProperty
|
||||
private boolean unrestrictedUnidentifiedAccess;
|
||||
|
||||
@JsonProperty
|
||||
private boolean discoverableByPhoneNumber;
|
||||
|
||||
@JsonProperty
|
||||
private SignalServiceProfile.Capabilities capabilities;
|
||||
|
||||
|
@ -49,7 +52,8 @@ public class AccountAttributes {
|
|||
String registrationLock,
|
||||
byte[] unidentifiedAccessKey,
|
||||
boolean unrestrictedUnidentifiedAccess,
|
||||
SignalServiceProfile.Capabilities capabilities)
|
||||
SignalServiceProfile.Capabilities capabilities,
|
||||
boolean discoverableByPhoneNumber)
|
||||
{
|
||||
this.signalingKey = signalingKey;
|
||||
this.registrationId = registrationId;
|
||||
|
@ -61,6 +65,7 @@ public class AccountAttributes {
|
|||
this.unidentifiedAccessKey = unidentifiedAccessKey;
|
||||
this.unrestrictedUnidentifiedAccess = unrestrictedUnidentifiedAccess;
|
||||
this.capabilities = capabilities;
|
||||
this.discoverableByPhoneNumber = discoverableByPhoneNumber;
|
||||
}
|
||||
|
||||
public AccountAttributes() {}
|
||||
|
@ -101,6 +106,10 @@ public class AccountAttributes {
|
|||
return unrestrictedUnidentifiedAccess;
|
||||
}
|
||||
|
||||
public boolean isDiscoverableByPhoneNumber() {
|
||||
return discoverableByPhoneNumber;
|
||||
}
|
||||
|
||||
public SignalServiceProfile.Capabilities getCapabilities() {
|
||||
return capabilities;
|
||||
}
|
||||
|
|
|
@ -292,10 +292,11 @@ public class PushServiceSocket {
|
|||
public VerifyAccountResponse verifyAccountCode(String verificationCode, String signalingKey, int registrationId, boolean fetchesMessages,
|
||||
String pin, String registrationLock,
|
||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||
SignalServiceProfile.Capabilities capabilities)
|
||||
SignalServiceProfile.Capabilities capabilities,
|
||||
boolean discoverableByPhoneNumber)
|
||||
throws IOException
|
||||
{
|
||||
AccountAttributes signalingKeyEntity = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock, unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities);
|
||||
AccountAttributes signalingKeyEntity = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock, unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities, discoverableByPhoneNumber);
|
||||
String requestBody = JsonUtil.toJson(signalingKeyEntity);
|
||||
String responseBody = makeServiceRequest(String.format(VERIFY_ACCOUNT_CODE_PATH, verificationCode), "PUT", requestBody);
|
||||
|
||||
|
@ -305,7 +306,8 @@ public class PushServiceSocket {
|
|||
public void setAccountAttributes(String signalingKey, int registrationId, boolean fetchesMessages,
|
||||
String pin, String registrationLock,
|
||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||
SignalServiceProfile.Capabilities capabilities)
|
||||
SignalServiceProfile.Capabilities capabilities,
|
||||
boolean discoverableByPhoneNumber)
|
||||
throws IOException
|
||||
{
|
||||
if (registrationLock != null && pin != null) {
|
||||
|
@ -313,7 +315,8 @@ public class PushServiceSocket {
|
|||
}
|
||||
|
||||
AccountAttributes accountAttributes = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock,
|
||||
unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities);
|
||||
unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities,
|
||||
discoverableByPhoneNumber);
|
||||
makeServiceRequest(SET_ACCOUNT_ATTRIBUTES, "PUT", JsonUtil.toJson(accountAttributes));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue