show fetch errors in trust keys activity

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java | 13 
src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java          |  3 
2 files changed, 15 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java 🔗

@@ -79,6 +79,19 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
 		}
 	}
 
+	public boolean fetchMapHasErrors(Contact contact) {
+		Jid jid = contact.getJid().toBareJid();
+		if (deviceIds.get(jid) != null) {
+			for (Integer foreignId : this.deviceIds.get(jid)) {
+				AxolotlAddress address = new AxolotlAddress(jid.toString(), foreignId);
+				if (fetchStatusMap.getAll(address).containsValue(FetchStatus.ERROR)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
 	private static class AxolotlAddressMap<T> {
 		protected Map<String, Map<Integer, T>> map;
 		protected final Object MAP_LOCK = new Object();

src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java 🔗

@@ -162,7 +162,8 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
 		} else {
 			if (!hasForeignKeys && hasNoOtherTrustedKeys()) {
 				keyErrorMessageCard.setVisibility(View.VISIBLE);
-				if (lastFetchReport == AxolotlService.FetchStatus.ERROR) {
+				if (lastFetchReport == AxolotlService.FetchStatus.ERROR
+						|| contact.getAccount().getAxolotlService().fetchMapHasErrors(contact)) {
 					keyErrorMessage.setText(R.string.error_no_keys_to_trust_server_error);
 				} else {
 					keyErrorMessage.setText(R.string.error_no_keys_to_trust);