fix content observer for keyserver status
This commit is contained in:
@@ -780,12 +780,12 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case UPDATED_KEYS: {
|
case UPDATED_KEYS: {
|
||||||
|
keyId = values.getAsLong(UpdatedKeys.MASTER_KEY_ID);
|
||||||
try {
|
try {
|
||||||
db.insertOrThrow(Tables.UPDATED_KEYS, null, values);
|
db.insertOrThrow(Tables.UPDATED_KEYS, null, values);
|
||||||
} catch (SQLiteConstraintException e) {
|
} catch (SQLiteConstraintException e) {
|
||||||
String masterKeyId = values.getAsString(UpdatedKeys.MASTER_KEY_ID);
|
|
||||||
db.update(Tables.UPDATED_KEYS, values,
|
db.update(Tables.UPDATED_KEYS, values,
|
||||||
UpdatedKeys.MASTER_KEY_ID + " = ?", new String[] { masterKeyId });
|
UpdatedKeys.MASTER_KEY_ID + " = ?", new String[] { Long.toString(keyId) });
|
||||||
}
|
}
|
||||||
rowUri = UpdatedKeys.CONTENT_URI;
|
rowUri = UpdatedKeys.CONTENT_URI;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import android.support.v4.content.AsyncTaskLoader;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
|
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.UpdatedKeys;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.UpdatedKeys;
|
||||||
import org.sufficientlysecure.keychain.ui.keyview.loader.KeyserverStatusLoader.KeyserverStatus;
|
import org.sufficientlysecure.keychain.ui.keyview.loader.KeyserverStatusLoader.KeyserverStatus;
|
||||||
|
|
||||||
@@ -45,12 +46,15 @@ public class KeyserverStatusLoader extends AsyncTaskLoader<KeyserverStatus> {
|
|||||||
|
|
||||||
private KeyserverStatus cachedResult;
|
private KeyserverStatus cachedResult;
|
||||||
|
|
||||||
|
private ForceLoadContentObserver keyserverStatusObserver;
|
||||||
|
|
||||||
public KeyserverStatusLoader(Context context, ContentResolver contentResolver, long masterKeyId) {
|
public KeyserverStatusLoader(Context context, ContentResolver contentResolver, long masterKeyId) {
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
this.contentResolver = contentResolver;
|
this.contentResolver = contentResolver;
|
||||||
this.masterKeyId = masterKeyId;
|
this.masterKeyId = masterKeyId;
|
||||||
|
|
||||||
|
this.keyserverStatusObserver = new ForceLoadContentObserver();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -95,6 +99,16 @@ public class KeyserverStatusLoader extends AsyncTaskLoader<KeyserverStatus> {
|
|||||||
if (takeContentChanged() || cachedResult == null) {
|
if (takeContentChanged() || cachedResult == null) {
|
||||||
forceLoad();
|
forceLoad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getContext().getContentResolver().registerContentObserver(
|
||||||
|
KeyRings.buildGenericKeyRingUri(masterKeyId), true, keyserverStatusObserver);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAbandon() {
|
||||||
|
super.onAbandon();
|
||||||
|
|
||||||
|
getContext().getContentResolver().unregisterContentObserver(keyserverStatusObserver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class KeyserverStatus {
|
public static class KeyserverStatus {
|
||||||
|
|||||||
Reference in New Issue
Block a user