correctly set keyserver status on first lookup
This commit is contained in:
@@ -280,6 +280,32 @@ public class KeyRepository {
|
||||
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 {
|
||||
byte[] data = (byte[]) getGenericDataOrNull(KeyRingData.buildPublicKeyRingUri(masterKeyId),
|
||||
KeyRingData.KEY_RING_DATA, FIELD_TYPE_BLOB);
|
||||
|
||||
@@ -1349,11 +1349,13 @@ public class KeyWritableRepository extends KeyRepository {
|
||||
}
|
||||
|
||||
public Uri renewKeyLastUpdatedTime(long masterKeyId, boolean seenOnKeyservers) {
|
||||
boolean isFirstKeyserverStatusCheck = getSeenOnKeyservers(masterKeyId) == null;
|
||||
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(UpdatedKeys.MASTER_KEY_ID, masterKeyId);
|
||||
values.put(UpdatedKeys.LAST_UPDATED, GregorianCalendar.getInstance().getTimeInMillis() / 1000);
|
||||
if (seenOnKeyservers) {
|
||||
values.put(UpdatedKeys.SEEN_ON_KEYSERVERS, true);
|
||||
if (seenOnKeyservers || isFirstKeyserverStatusCheck) {
|
||||
values.put(UpdatedKeys.SEEN_ON_KEYSERVERS, seenOnKeyservers);
|
||||
}
|
||||
|
||||
// this will actually update/replace, doing the right thing™ for seenOnKeyservers value
|
||||
|
||||
Reference in New Issue
Block a user