get notification URIs from DatabaseNotificationManager

This commit is contained in:
Vincent Breitmoser
2018-06-26 17:30:08 +02:00
parent 83d5aafadb
commit 4ac8c275f3
4 changed files with 16 additions and 10 deletions

View File

@@ -5,10 +5,13 @@ import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
public class DatabaseNotifyManager {
private static final Uri BASE_URI = Uri.parse("content://" + Constants.PROVIDER_AUTHORITY);
private ContentResolver contentResolver;
public static DatabaseNotifyManager create(Context context) {
@@ -21,22 +24,26 @@ public class DatabaseNotifyManager {
}
public void notifyKeyChange(long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId);
Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null);
}
public void notifyAutocryptDelete(String autocryptId, Long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId);
Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null);
}
public void notifyAutocryptUpdate(String autocryptId, long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId);
Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null);
}
public void notifyKeyMetadataChange(long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId);
Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null);
}
public static Uri getNotifyUriMasterKeyId(long masterKeyId) {
return BASE_URI.buildUpon().appendPath(Long.toString(masterKeyId)).build();
}
}

View File

@@ -125,10 +125,6 @@ public class KeychainContract {
public static Uri buildUnifiedKeyRingsUri() {
return CONTENT_URI.buildUpon().appendPath(PATH_UNIFIED).build();
}
public static Uri buildGenericKeyRingUri(long masterKeyId) {
return CONTENT_URI.buildUpon().appendPath(Long.toString(masterKeyId)).build();
}
}
public static class KeyRingData implements KeyRingsColumns, BaseColumns {

View File

@@ -413,7 +413,7 @@ public class KeychainProvider extends ContentProvider implements SimpleContentRe
}
if (keyId != null) {
uri = KeyRings.buildGenericKeyRingUri(keyId);
uri = DatabaseNotifyManager.getNotifyUriMasterKeyId(keyId);
rowUri = uri;
}

View File

@@ -4,9 +4,11 @@ package org.sufficientlysecure.keychain.ui.keyview;
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.ViewModel;
import android.content.Context;
import android.net.Uri;
import org.sufficientlysecure.keychain.livedata.GenericLiveData;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.provider.DatabaseNotifyManager;
import org.sufficientlysecure.keychain.provider.KeyRepository;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
@@ -32,7 +34,8 @@ public class UnifiedKeyInfoViewModel extends ViewModel {
}
if (unifiedKeyInfoLiveData == null) {
KeyRepository keyRepository = KeyRepository.create(context);
unifiedKeyInfoLiveData = new GenericLiveData<>(context, KeyRings.buildGenericKeyRingUri(masterKeyId),
Uri notifyUri = DatabaseNotifyManager.getNotifyUriMasterKeyId(masterKeyId);
unifiedKeyInfoLiveData = new GenericLiveData<>(context, notifyUri,
() -> keyRepository.getUnifiedKeyInfo(masterKeyId));
}
return unifiedKeyInfoLiveData;