aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-11-20 17:32:24 +0100
committerChristian Schneppe <christian@pix-art.de>2016-11-20 17:32:24 +0100
commit7d72a6bcf10f3c52af1f9a453225e04d7e209350 (patch)
tree98ed2e5406b18e16675118cfbbc66a6b6fe1a381 /src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java
parent80b71f7f462faef91fca628aabe0f6d5c20e0b90 (diff)
save last activation time in fingerprint status
Diffstat (limited to 'src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java')
-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,