correctly set keyserver status on first lookup
This commit is contained in:
@@ -280,6 +280,32 @@ public class KeyRepository {
|
|||||||
return lastUpdateTime;
|
return lastUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
Boolean getSeenOnKeyservers(long masterKeyId) {
|
||||||
|
Cursor cursor = mContentResolver.query(
|
||||||
|
UpdatedKeys.CONTENT_URI,
|
||||||
|
new String[] { UpdatedKeys.SEEN_ON_KEYSERVERS },
|
||||||
|
UpdatedKeys.MASTER_KEY_ID + " = ?",
|
||||||
|
new String[] { "" + masterKeyId },
|
||||||
|
null
|
||||||
|
);
|
||||||
|
if (cursor == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean seenOnKeyservers;
|
||||||
|
try {
|
||||||
|
if (!cursor.moveToNext()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
seenOnKeyservers = cursor.isNull(0) ? null : cursor.getInt(0) != 0;
|
||||||
|
} finally {
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
return seenOnKeyservers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public final byte[] loadPublicKeyRingData(long masterKeyId) throws NotFoundException {
|
public final byte[] loadPublicKeyRingData(long masterKeyId) throws NotFoundException {
|
||||||
byte[] data = (byte[]) getGenericDataOrNull(KeyRingData.buildPublicKeyRingUri(masterKeyId),
|
byte[] data = (byte[]) getGenericDataOrNull(KeyRingData.buildPublicKeyRingUri(masterKeyId),
|
||||||
KeyRingData.KEY_RING_DATA, FIELD_TYPE_BLOB);
|
KeyRingData.KEY_RING_DATA, FIELD_TYPE_BLOB);
|
||||||
|
|||||||
@@ -1349,11 +1349,13 @@ public class KeyWritableRepository extends KeyRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Uri renewKeyLastUpdatedTime(long masterKeyId, boolean seenOnKeyservers) {
|
public Uri renewKeyLastUpdatedTime(long masterKeyId, boolean seenOnKeyservers) {
|
||||||
|
boolean isFirstKeyserverStatusCheck = getSeenOnKeyservers(masterKeyId) == null;
|
||||||
|
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(UpdatedKeys.MASTER_KEY_ID, masterKeyId);
|
values.put(UpdatedKeys.MASTER_KEY_ID, masterKeyId);
|
||||||
values.put(UpdatedKeys.LAST_UPDATED, GregorianCalendar.getInstance().getTimeInMillis() / 1000);
|
values.put(UpdatedKeys.LAST_UPDATED, GregorianCalendar.getInstance().getTimeInMillis() / 1000);
|
||||||
if (seenOnKeyservers) {
|
if (seenOnKeyservers || isFirstKeyserverStatusCheck) {
|
||||||
values.put(UpdatedKeys.SEEN_ON_KEYSERVERS, true);
|
values.put(UpdatedKeys.SEEN_ON_KEYSERVERS, seenOnKeyservers);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this will actually update/replace, doing the right thing™ for seenOnKeyservers value
|
// this will actually update/replace, doing the right thing™ for seenOnKeyservers value
|
||||||
|
|||||||
Reference in New Issue
Block a user