Ensure notifications for new users won't be generated first fetch

This commit is contained in:
Moxie Marlinspike
2017-11-21 11:54:18 -08:00
parent 66e1be1aeb
commit f855e161d9
11 changed files with 36 additions and 19 deletions

View File

@@ -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<>();

View File

@@ -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);