fix: Cached recipient values not updating approved flags, remove unused static recipient settings map in RecipientProvider (#860)

This commit is contained in:
Harris 2022-03-22 11:13:44 +11:00 committed by GitHub
parent 2445418e3e
commit 712deebb42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 12 deletions

View File

@ -209,6 +209,8 @@ public class Recipient implements RecipientModifiedListener {
Recipient.this.callRingtone = result.callRingtone; Recipient.this.callRingtone = result.callRingtone;
Recipient.this.mutedUntil = result.mutedUntil; Recipient.this.mutedUntil = result.mutedUntil;
Recipient.this.blocked = result.blocked; Recipient.this.blocked = result.blocked;
Recipient.this.approved = result.approved;
Recipient.this.approvedMe = result.approvedMe;
Recipient.this.messageVibrate = result.messageVibrateState; Recipient.this.messageVibrate = result.messageVibrateState;
Recipient.this.callVibrate = result.callVibrateState; Recipient.this.callVibrate = result.callVibrateState;
Recipient.this.expireMessages = result.expireMessages; Recipient.this.expireMessages = result.expireMessages;
@ -259,6 +261,8 @@ public class Recipient implements RecipientModifiedListener {
this.mutedUntil = details.mutedUntil; this.mutedUntil = details.mutedUntil;
this.notifyType = details.notifyType; this.notifyType = details.notifyType;
this.blocked = details.blocked; this.blocked = details.blocked;
this.approved = details.approved;
this.approvedMe = details.approvedMe;
this.messageVibrate = details.messageVibrateState; this.messageVibrate = details.messageVibrateState;
this.callVibrate = details.callVibrateState; this.callVibrate = details.callVibrateState;
this.expireMessages = details.expireMessages; this.expireMessages = details.expireMessages;

View File

@ -37,7 +37,6 @@ import org.session.libsession.utilities.recipients.Recipient.UnidentifiedAccessM
import org.session.libsession.utilities.recipients.Recipient.VibrateState; import org.session.libsession.utilities.recipients.Recipient.VibrateState;
import org.session.libsignal.utilities.guava.Optional; import org.session.libsignal.utilities.guava.Optional;
import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -53,10 +52,6 @@ class RecipientProvider {
private static final RecipientCache recipientCache = new RecipientCache(); private static final RecipientCache recipientCache = new RecipientCache();
private static final ExecutorService asyncRecipientResolver = Util.newSingleThreadedLifoExecutor(); private static final ExecutorService asyncRecipientResolver = Util.newSingleThreadedLifoExecutor();
private static final Map<String, RecipientDetails> STATIC_DETAILS = new HashMap<String, RecipientDetails>() {{
put("262966", new RecipientDetails("Amazon", null, false, false, null, null));
}};
@NonNull Recipient getRecipient(@NonNull Context context, @NonNull Address address, @NonNull Optional<RecipientSettings> settings, @NonNull Optional<GroupRecord> groupRecord, boolean asynchronous) { @NonNull Recipient getRecipient(@NonNull Context context, @NonNull Address address, @NonNull Optional<RecipientSettings> settings, @NonNull Optional<GroupRecord> groupRecord, boolean asynchronous) {
Recipient cachedRecipient = recipientCache.get(address); Recipient cachedRecipient = recipientCache.get(address);
@ -117,14 +112,10 @@ class RecipientProvider {
settings = Optional.fromNullable(MessagingModuleConfiguration.shared.getStorage().getRecipientSettings(address)); settings = Optional.fromNullable(MessagingModuleConfiguration.shared.getStorage().getRecipientSettings(address));
} }
if (!settings.isPresent() && STATIC_DETAILS.containsKey(address.serialize())) {
return STATIC_DETAILS.get(address.serialize());
} else {
boolean systemContact = settings.isPresent() && !TextUtils.isEmpty(settings.get().getSystemDisplayName()); boolean systemContact = settings.isPresent() && !TextUtils.isEmpty(settings.get().getSystemDisplayName());
boolean isLocalNumber = address.serialize().equals(TextSecurePreferences.getLocalNumber(context)); boolean isLocalNumber = address.serialize().equals(TextSecurePreferences.getLocalNumber(context));
return new RecipientDetails(null, null, systemContact, isLocalNumber, settings.orNull(), null); return new RecipientDetails(null, null, systemContact, isLocalNumber, settings.orNull(), null);
} }
}
private @NonNull RecipientDetails getGroupRecipientDetails(Context context, Address groupId, Optional<GroupRecord> groupRecord, Optional<RecipientSettings> settings, boolean asynchronous) { private @NonNull RecipientDetails getGroupRecipientDetails(Context context, Address groupId, Optional<GroupRecord> groupRecord, Optional<RecipientSettings> settings, boolean asynchronous) {