Ensure notifications for new users won't be generated first fetch
This commit is contained in:
parent
66e1be1aeb
commit
f855e161d9
11 changed files with 36 additions and 19 deletions
|
@ -140,7 +140,7 @@ public abstract class ContactSelectionActivity extends PassphraseRequiredActionB
|
|||
protected Void doInBackground(Context... params) {
|
||||
|
||||
try {
|
||||
DirectoryHelper.refreshDirectory(params[0], masterSecret);
|
||||
DirectoryHelper.refreshDirectory(params[0], masterSecret, true);
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, e);
|
||||
}
|
||||
|
|
|
@ -223,7 +223,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
|
|||
if (params[0] < CONTACTS_ACCOUNT_VERSION) {
|
||||
ApplicationContext.getInstance(getApplicationContext())
|
||||
.getJobManager()
|
||||
.add(new DirectoryRefreshJob(getApplicationContext()));
|
||||
.add(new DirectoryRefreshJob(getApplicationContext(), false));
|
||||
}
|
||||
|
||||
if (params[0] < MEDIA_DOWNLOAD_CONTROLS_VERSION) {
|
||||
|
@ -236,13 +236,13 @@ public class DatabaseUpgradeActivity extends BaseActivity {
|
|||
.add(new RefreshAttributesJob(getApplicationContext()));
|
||||
ApplicationContext.getInstance(getApplicationContext())
|
||||
.getJobManager()
|
||||
.add(new DirectoryRefreshJob(getApplicationContext()));
|
||||
.add(new DirectoryRefreshJob(getApplicationContext(), false));
|
||||
}
|
||||
|
||||
if (params[0] < PROFILES) {
|
||||
ApplicationContext.getInstance(getApplicationContext())
|
||||
.getJobManager()
|
||||
.add(new DirectoryRefreshJob(getApplicationContext()));
|
||||
.add(new DirectoryRefreshJob(getApplicationContext(), false));
|
||||
}
|
||||
|
||||
if (params[0] < SCREENSHOTS) {
|
||||
|
|
|
@ -391,7 +391,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements Verif
|
|||
keyboard.displaySuccess().addListener(new AssertedSuccessListener<Boolean>() {
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
ApplicationContext.getInstance(RegistrationActivity.this).getJobManager().add(new DirectoryRefreshJob(RegistrationActivity.this));
|
||||
ApplicationContext.getInstance(RegistrationActivity.this).getJobManager().add(new DirectoryRefreshJob(RegistrationActivity.this, false));
|
||||
|
||||
DirectoryRefreshListener.schedule(RegistrationActivity.this);
|
||||
RotateSignedPreKeyListener.schedule(RegistrationActivity.this);
|
||||
|
|
|
@ -30,7 +30,7 @@ public class ContactsSyncAdapter extends AbstractThreadedSyncAdapter {
|
|||
|
||||
if (TextSecurePreferences.isPushRegistered(getContext())) {
|
||||
try {
|
||||
DirectoryHelper.refreshDirectory(getContext(), KeyCachingService.getMasterSecret(getContext()));
|
||||
DirectoryHelper.refreshDirectory(getContext(), KeyCachingService.getMasterSecret(getContext()), true);
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, e);
|
||||
}
|
||||
|
|
|
@ -21,22 +21,25 @@ public class DirectoryRefreshJob extends ContextJob {
|
|||
|
||||
@Nullable private transient Recipient recipient;
|
||||
@Nullable private transient MasterSecret masterSecret;
|
||||
private transient boolean notifyOfNewUsers;
|
||||
|
||||
public DirectoryRefreshJob(@NonNull Context context) {
|
||||
this(context, null, null);
|
||||
public DirectoryRefreshJob(@NonNull Context context, boolean notifyOfNewUsers) {
|
||||
this(context, null, null, notifyOfNewUsers);
|
||||
}
|
||||
|
||||
public DirectoryRefreshJob(@NonNull Context context,
|
||||
@Nullable MasterSecret masterSecret,
|
||||
@Nullable Recipient recipient)
|
||||
@Nullable Recipient recipient,
|
||||
boolean notifyOfNewUsers)
|
||||
{
|
||||
super(context, JobParameters.newBuilder()
|
||||
.withGroupId(DirectoryRefreshJob.class.getSimpleName())
|
||||
.withRequirement(new NetworkRequirement(context))
|
||||
.create());
|
||||
|
||||
this.recipient = recipient;
|
||||
this.masterSecret = masterSecret;
|
||||
this.recipient = recipient;
|
||||
this.masterSecret = masterSecret;
|
||||
this.notifyOfNewUsers = notifyOfNewUsers;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -51,7 +54,7 @@ public class DirectoryRefreshJob extends ContextJob {
|
|||
try {
|
||||
wakeLock.acquire();
|
||||
if (recipient == null) {
|
||||
DirectoryHelper.refreshDirectory(context, KeyCachingService.getMasterSecret(context));
|
||||
DirectoryHelper.refreshDirectory(context, KeyCachingService.getMasterSecret(context), notifyOfNewUsers);
|
||||
} else {
|
||||
DirectoryHelper.refreshDirectoryFor(context, masterSecret, recipient);
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
|||
Log.w(TAG, ifae);
|
||||
database.markAsPendingInsecureSmsFallback(messageId);
|
||||
notifyMediaMessageDeliveryFailed(context, messageId);
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context));
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context, false));
|
||||
} catch (UntrustedIdentityException uie) {
|
||||
Log.w(TAG, uie);
|
||||
database.addMismatchedIdentity(messageId, Address.fromSerialized(uie.getE164Number()), uie.getIdentityKey());
|
||||
|
|
|
@ -29,7 +29,7 @@ public abstract class PushReceivedJob extends ContextJob {
|
|||
|
||||
if (!isActiveNumber(recipient)) {
|
||||
DatabaseFactory.getRecipientDatabase(context).setRegistered(recipient, RecipientDatabase.RegisteredState.REGISTERED);
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context, KeyCachingService.getMasterSecret(context), recipient));
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context, KeyCachingService.getMasterSecret(context), recipient, false));
|
||||
}
|
||||
|
||||
if (envelope.isReceipt()) {
|
||||
|
|
|
@ -66,7 +66,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
|
|||
Log.w(TAG, e);
|
||||
database.markAsPendingInsecureSmsFallback(record.getId());
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, record.getRecipient(), record.getThreadId());
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context));
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context, false));
|
||||
} catch (UntrustedIdentityException e) {
|
||||
Log.w(TAG, e);
|
||||
database.addMismatchedIdentity(record.getId(), Address.fromSerialized(e.getE164Number()), e.getIdentityKey());
|
||||
|
|
|
@ -24,7 +24,7 @@ public class DirectoryRefreshListener extends PersistentAlarmManagerListener {
|
|||
if (scheduledTime != 0 && TextSecurePreferences.isPushRegistered(context)) {
|
||||
ApplicationContext.getInstance(context)
|
||||
.getJobManager()
|
||||
.add(new DirectoryRefreshJob(context));
|
||||
.add(new DirectoryRefreshJob(context, true));
|
||||
}
|
||||
|
||||
long newTime = System.currentTimeMillis() + INTERVAL;
|
||||
|
|
|
@ -47,7 +47,7 @@ public class DirectoryHelper {
|
|||
|
||||
private static final String TAG = DirectoryHelper.class.getSimpleName();
|
||||
|
||||
public static void refreshDirectory(@NonNull Context context, @Nullable MasterSecret masterSecret)
|
||||
public static void refreshDirectory(@NonNull Context context, @Nullable MasterSecret masterSecret, boolean notifyOfNewUsers)
|
||||
throws IOException
|
||||
{
|
||||
if (TextUtils.isEmpty(TextSecurePreferences.getLocalNumber(context))) return;
|
||||
|
@ -60,7 +60,7 @@ public class DirectoryHelper {
|
|||
.add(new MultiDeviceContactUpdateJob(context));
|
||||
}
|
||||
|
||||
notifyNewUsers(context, masterSecret, newlyActiveUsers);
|
||||
if (notifyOfNewUsers) notifyNewUsers(context, masterSecret, newlyActiveUsers);
|
||||
}
|
||||
|
||||
public static @NonNull List<Address> refreshDirectory(@NonNull Context context, @NonNull SignalServiceAccountManager accountManager)
|
||||
|
@ -101,7 +101,12 @@ public class DirectoryHelper {
|
|||
recipientDatabase.setRegistered(activeRecipients, inactiveRecipients);
|
||||
updateContactsDatabase(context, Stream.of(activeRecipients).map(Recipient::getAddress).toList(), true);
|
||||
|
||||
return newlyActiveAddresses;
|
||||
if (TextSecurePreferences.hasSuccessfullyRetrievedDirectory(context)) {
|
||||
return newlyActiveAddresses;
|
||||
} else {
|
||||
TextSecurePreferences.setHasSuccessfullyRetrievedDirectory(context, true);
|
||||
return new LinkedList<>();
|
||||
}
|
||||
}
|
||||
|
||||
return new LinkedList<>();
|
||||
|
|
|
@ -116,6 +116,15 @@ public class TextSecurePreferences {
|
|||
public static final String READ_RECEIPTS_PREF = "pref_read_receipts";
|
||||
public static final String INCOGNITO_KEYBORAD_PREF = "pref_incognito_keyboard";
|
||||
private static final String UNAUTHORIZED_RECEIVED = "pref_unauthorized_received";
|
||||
private static final String SUCCESSFUL_DIRECTORY_PREF = "pref_successful_directory";
|
||||
|
||||
public static void setHasSuccessfullyRetrievedDirectory(Context context, boolean value) {
|
||||
setBooleanPreference(context, SUCCESSFUL_DIRECTORY_PREF, value);
|
||||
}
|
||||
|
||||
public static boolean hasSuccessfullyRetrievedDirectory(Context context) {
|
||||
return getBooleanPreference(context, SUCCESSFUL_DIRECTORY_PREF, false);
|
||||
}
|
||||
|
||||
public static void setUnauthorizedReceived(Context context, boolean value) {
|
||||
setBooleanPreference(context, UNAUTHORIZED_RECEIVED, value);
|
||||
|
|
Loading…
Add table
Reference in a new issue