diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-11-16 00:20:20 +0100 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-11-16 00:20:20 +0100 |
commit | 88c3537b6869996098da25954985fcb0c6971635 (patch) | |
tree | 07e407896b951de710ec9027468d98022ae40241 /src/main/java/eu/siacs/conversations/entities/Contact.java | |
parent | 0fb1772f18e71755ce72a97f18ea2c28cc771aba (diff) |
parse otr-fingerprint in qr codes and nfc. include otr fingerprint in shareable uri where ever possible
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities/Contact.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/entities/Contact.java | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index 9a827f854..32e4601dc 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -7,6 +7,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.util.ArrayList; import java.util.HashSet; import java.util.Set; @@ -206,24 +207,26 @@ public class Contact implements ListItem { return systemAccount; } - public Set<String> getOtrFingerprints() { - Set<String> set = new HashSet<>(); + public ArrayList<String> getOtrFingerprints() { + ArrayList<String> fingerprints = new ArrayList<String>(); try { if (this.keys.has("otr_fingerprints")) { - JSONArray fingerprints = this.keys + JSONArray prints = this.keys .getJSONArray("otr_fingerprints"); - for (int i = 0; i < fingerprints.length(); ++i) { - set.add(fingerprints.getString(i)); + for (int i = 0; i < prints.length(); ++i) { + fingerprints.add(prints.getString(i)); } } - } catch (JSONException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (final JSONException ignored) { + } - return set; + return fingerprints; } - public void addOtrFingerprint(String print) { + public boolean addOtrFingerprint(String print) { + if (getOtrFingerprints().contains(print)) { + return false; + } try { JSONArray fingerprints; if (!this.keys.has("otr_fingerprints")) { @@ -234,8 +237,9 @@ public class Contact implements ListItem { } fingerprints.put(print); this.keys.put("otr_fingerprints", fingerprints); + return true; } catch (final JSONException ignored) { - + return false; } } @@ -396,4 +400,13 @@ public class Contact implements ListItem { public boolean trusted() { return getOption(Options.FROM) && getOption(Options.TO); } + + public String getShareableUri() { + if (getOtrFingerprints().size() >= 1) { + String otr = getOtrFingerprints().get(0); + return "xmpp:"+getJid().toBareJid().toString()+"?otr-fingerprint="+otr.replace(" ",""); + } else { + return "xmpp:"+getJid().toBareJid().toString(); + } + } } |