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.content.Context;
import android.net.Uri; import android.net.Uri;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
public class DatabaseNotifyManager { public class DatabaseNotifyManager {
private static final Uri BASE_URI = Uri.parse("content://" + Constants.PROVIDER_AUTHORITY);
private ContentResolver contentResolver; private ContentResolver contentResolver;
public static DatabaseNotifyManager create(Context context) { public static DatabaseNotifyManager create(Context context) {
@@ -21,22 +24,26 @@ public class DatabaseNotifyManager {
} }
public void notifyKeyChange(long masterKeyId) { public void notifyKeyChange(long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId); Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null); contentResolver.notifyChange(uri, null);
} }
public void notifyAutocryptDelete(String autocryptId, Long masterKeyId) { public void notifyAutocryptDelete(String autocryptId, Long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId); Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null); contentResolver.notifyChange(uri, null);
} }
public void notifyAutocryptUpdate(String autocryptId, long masterKeyId) { public void notifyAutocryptUpdate(String autocryptId, long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId); Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null); contentResolver.notifyChange(uri, null);
} }
public void notifyKeyMetadataChange(long masterKeyId) { public void notifyKeyMetadataChange(long masterKeyId) {
Uri uri = KeyRings.buildGenericKeyRingUri(masterKeyId); Uri uri = getNotifyUriMasterKeyId(masterKeyId);
contentResolver.notifyChange(uri, null); 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() { public static Uri buildUnifiedKeyRingsUri() {
return CONTENT_URI.buildUpon().appendPath(PATH_UNIFIED).build(); 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 { public static class KeyRingData implements KeyRingsColumns, BaseColumns {

View File

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

View File

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