Fix displaying Contact IdentityKeys
Migrate ContactDetailsActivity to use new SQL IdentityKeys storage, remove dead code from Contact class.
This commit is contained in:
		
							parent
							
								
									3b8dfafecd
								
							
						
					
					
						commit
						4b0279a6ef
					
				| 
						 | 
				
			
			@ -350,70 +350,6 @@ public class Contact implements ListItem, Blockable {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public List<IdentityKey> getAxolotlIdentityKeys() {
 | 
			
		||||
		synchronized (this.keys) {
 | 
			
		||||
			JSONArray serializedKeyItems = this.keys.optJSONArray("axolotl_identity_key");
 | 
			
		||||
			List<IdentityKey> identityKeys = new ArrayList<>();
 | 
			
		||||
			List<Integer> toDelete = new ArrayList<>();
 | 
			
		||||
			if(serializedKeyItems != null) {
 | 
			
		||||
				for(int i = 0; i<serializedKeyItems.length();++i) {
 | 
			
		||||
					try {
 | 
			
		||||
						String serializedKeyItem = serializedKeyItems.getString(i);
 | 
			
		||||
						IdentityKey identityKey = new IdentityKey(Base64.decode(serializedKeyItem, Base64.DEFAULT), 0);
 | 
			
		||||
						identityKeys.add(identityKey);
 | 
			
		||||
					} catch (InvalidKeyException e) {
 | 
			
		||||
						Log.e(Config.LOGTAG, "Invalid axolotl identity key encountered at contact" + this.getJid() + ": " + e.getMessage() + ", marking for deletion...");
 | 
			
		||||
						toDelete.add(i);
 | 
			
		||||
					} catch (JSONException e) {
 | 
			
		||||
						Log.e(Config.LOGTAG, "Error retrieving axolotl identity key at contact " + this.getJid() + ": " + e.getMessage());
 | 
			
		||||
					} catch (IllegalArgumentException e) {
 | 
			
		||||
						Log.e(Config.LOGTAG, "Encountered malformed identity key for contact" + this.getJid() + ": " + e.getMessage() + ", marking for deletion... ");
 | 
			
		||||
						toDelete.add(i);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				if(!toDelete.isEmpty()) {
 | 
			
		||||
					try {
 | 
			
		||||
						JSONArray filteredKeyItems = new JSONArray();
 | 
			
		||||
						for (int i = 0; i < serializedKeyItems.length(); ++i) {
 | 
			
		||||
							if (!toDelete.contains(i)) {
 | 
			
		||||
								filteredKeyItems.put(serializedKeyItems.get(i));
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						this.keys.put("axolotl_identity_key", filteredKeyItems);
 | 
			
		||||
					} catch (JSONException e) {
 | 
			
		||||
						//should never happen
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return identityKeys;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean addAxolotlIdentityKey(IdentityKey identityKey) {
 | 
			
		||||
		synchronized (this.keys) {
 | 
			
		||||
			if(!getAxolotlIdentityKeys().contains(identityKey)) {
 | 
			
		||||
				JSONArray keysList;
 | 
			
		||||
				try {
 | 
			
		||||
					keysList = this.keys.getJSONArray("axolotl_identity_key");
 | 
			
		||||
				} catch (JSONException e) {
 | 
			
		||||
					keysList = new JSONArray();
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				keysList.put(Base64.encodeToString(identityKey.serialize(), Base64.DEFAULT));
 | 
			
		||||
				try {
 | 
			
		||||
					this.keys.put("axolotl_identity_key", keysList);
 | 
			
		||||
				} catch (JSONException e) {
 | 
			
		||||
					Log.e(Config.LOGTAG, "Error adding Identity Key to Contact " + this.getJid() + ": " + e.getMessage());
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
				return true;
 | 
			
		||||
			} else {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	public void setOption(int option) {
 | 
			
		||||
		this.subscription |= 1 << option;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -377,7 +377,8 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
 | 
			
		|||
				}
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
		for(final IdentityKey identityKey:contact.getAxolotlIdentityKeys()) {
 | 
			
		||||
		for(final IdentityKey identityKey : xmppConnectionService.databaseBackend.loadIdentityKeys(
 | 
			
		||||
				contact.getAccount(), contact.getJid().toBareJid().toString())) {
 | 
			
		||||
			hasKeys = true;
 | 
			
		||||
			View view = inflater.inflate(R.layout.contact_key, keys, false);
 | 
			
		||||
			TextView key = (TextView) view.findViewById(R.id.key);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue