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