mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 10:30:38 +00:00
Improve error handling for profile fetching
This commit is contained in:
parent
6dc8435fa1
commit
7c9839b114
1 changed files with 28 additions and 23 deletions
|
@ -190,33 +190,38 @@ public final class ProfileHelper {
|
|||
}
|
||||
}
|
||||
|
||||
if (encryptedProfile == null) {
|
||||
profile = Profile.newBuilder().withLastUpdateTimestamp(now).build();
|
||||
} else {
|
||||
profile = decryptProfileIfKeyKnown(recipientId, encryptedProfile);
|
||||
}
|
||||
|
||||
account.getProfileStore().storeProfile(recipientId, profile);
|
||||
|
||||
return profile;
|
||||
}
|
||||
|
||||
private Profile decryptProfileIfKeyKnown(
|
||||
final RecipientId recipientId, final SignalServiceProfile encryptedProfile
|
||||
) {
|
||||
Profile newProfile = null;
|
||||
if (encryptedProfile != null) {
|
||||
var profileKey = account.getProfileStore().getProfileKey(recipientId);
|
||||
if (profileKey == null) {
|
||||
return new Profile(System.currentTimeMillis(),
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ProfileUtils.getUnidentifiedAccessMode(encryptedProfile, null),
|
||||
ProfileUtils.getCapabilities(encryptedProfile));
|
||||
if (profileKey != null) {
|
||||
newProfile = decryptProfileAndDownloadAvatar(recipientId, profileKey, encryptedProfile);
|
||||
if (newProfile == null) {
|
||||
account.getProfileStore().storeProfileKey(recipientId, null);
|
||||
}
|
||||
}
|
||||
|
||||
return decryptProfileAndDownloadAvatar(recipientId, profileKey, encryptedProfile);
|
||||
if (newProfile == null) {
|
||||
newProfile = (
|
||||
profile == null ? Profile.newBuilder() : Profile.newBuilder(profile)
|
||||
).withLastUpdateTimestamp(System.currentTimeMillis())
|
||||
.withUnidentifiedAccessMode(ProfileUtils.getUnidentifiedAccessMode(encryptedProfile, null))
|
||||
.withCapabilities(ProfileUtils.getCapabilities(encryptedProfile))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
if (newProfile == null) {
|
||||
newProfile = (
|
||||
profile == null ? Profile.newBuilder() : Profile.newBuilder(profile)
|
||||
).withLastUpdateTimestamp(now)
|
||||
.withUnidentifiedAccessMode(Profile.UnidentifiedAccessMode.UNKNOWN)
|
||||
.withCapabilities(Set.of())
|
||||
.build();
|
||||
}
|
||||
|
||||
account.getProfileStore().storeProfile(recipientId, newProfile);
|
||||
|
||||
return newProfile;
|
||||
}
|
||||
|
||||
private SignalServiceProfile retrieveEncryptedProfile(RecipientId recipientId) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue