diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/DatabaseNotifyManager.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/DatabaseNotifyManager.java index 1bfb0fe65..8be6eb33a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/DatabaseNotifyManager.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/DatabaseNotifyManager.java @@ -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(); + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java index bba2fcd58..76ee5f6f8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java @@ -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 { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java index 89b0e5cbb..a3d63d849 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java @@ -413,7 +413,7 @@ public class KeychainProvider extends ContentProvider implements SimpleContentRe } if (keyId != null) { - uri = KeyRings.buildGenericKeyRingUri(keyId); + uri = DatabaseNotifyManager.getNotifyUriMasterKeyId(keyId); rowUri = uri; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/UnifiedKeyInfoViewModel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/UnifiedKeyInfoViewModel.java index de07b3832..abc6927fc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/UnifiedKeyInfoViewModel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/UnifiedKeyInfoViewModel.java @@ -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;