aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java b/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
index 3be469b5a..bffb94e1f 100644
--- a/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
+++ b/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
@@ -3,10 +3,13 @@ package de.pixart.messenger.crypto.axolotl;
import android.content.ContentValues;
import android.database.Cursor;
-public class FingerprintStatus {
+public class FingerprintStatus implements Comparable<FingerprintStatus> {
+
+ private static final long DO_NOT_OVERWRITE = -1;
private Trust trust = Trust.UNTRUSTED;
private boolean active = false;
+ private long lastActivation = DO_NOT_OVERWRITE;
@Override
public boolean equals(Object o) {
@@ -34,6 +37,9 @@ public class FingerprintStatus {
final ContentValues contentValues = new ContentValues();
contentValues.put(SQLiteAxolotlStore.TRUST, trust.toString());
contentValues.put(SQLiteAxolotlStore.ACTIVE, active ? 1 : 0);
+ if (lastActivation != DO_NOT_OVERWRITE) {
+ contentValues.put(SQLiteAxolotlStore.LAST_ACTIVATION,lastActivation);
+ }
return contentValues;
}
@@ -45,6 +51,7 @@ public class FingerprintStatus {
status.trust = Trust.UNTRUSTED;
}
status.active = cursor.getInt(cursor.getColumnIndex(SQLiteAxolotlStore.ACTIVE)) > 0;
+ status.lastActivation = cursor.getLong(cursor.getColumnIndex(SQLiteAxolotlStore.LAST_ACTIVATION));
return status;
}
@@ -52,6 +59,7 @@ public class FingerprintStatus {
final FingerprintStatus status = new FingerprintStatus();
status.trust = Trust.UNDECIDED;
status.active = true;
+ status.lastActivation = System.currentTimeMillis();
return status;
}
@@ -92,6 +100,9 @@ public class FingerprintStatus {
public FingerprintStatus toActive() {
FingerprintStatus status = new FingerprintStatus();
status.trust = trust;
+ if (!status.active) {
+ status.lastActivation = System.currentTimeMillis();
+ }
status.active = true;
return status;
}
@@ -128,6 +139,23 @@ public class FingerprintStatus {
return status;
}
+ @Override
+ public int compareTo(FingerprintStatus o) {
+ if (active == o.active) {
+ if (lastActivation > o.lastActivation) {
+ return -1;
+ } else if (lastActivation < o.lastActivation) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } else if (active){
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+
public enum Trust {
COMPROMISED,
UNDECIDED,