Convert all database notifiers to use DatabaseObserver.

Lots of red in this diff to celebrate the release of Red (Taylor's Version).
This commit is contained in:
Greyson Parrelli
2021-11-12 12:14:59 -05:00
committed by Cody Henthorne
parent ab55fec6bd
commit 658de3b6e7
30 changed files with 179 additions and 729 deletions

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.stickers;
import android.app.Application;
import android.database.ContentObserver;
import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
@@ -9,8 +8,9 @@ import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
import org.thoughtcrime.securesms.database.DatabaseObserver;
import org.thoughtcrime.securesms.database.model.StickerPackRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.stickers.StickerManagementRepository.PackResult;
import java.util.List;
@@ -20,21 +20,18 @@ final class StickerManagementViewModel extends ViewModel {
private final Application application;
private final StickerManagementRepository repository;
private final MutableLiveData<PackResult> packs;
private final ContentObserver observer;
private final DatabaseObserver.Observer observer;
private StickerManagementViewModel(@NonNull Application application, @NonNull StickerManagementRepository repository) {
this.application = application;
this.repository = repository;
this.packs = new MutableLiveData<>();
this.observer = new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
repository.deleteOrphanedStickerPacks();
repository.getStickerPacks(packs::postValue);
}
this.observer = () -> {
repository.deleteOrphanedStickerPacks();
repository.getStickerPacks(packs::postValue);
};
application.getContentResolver().registerContentObserver(DatabaseContentProviders.StickerPack.CONTENT_URI, true, observer);
ApplicationDependencies.getDatabaseObserver().registerStickerPackObserver(observer);
}
void init() {
@@ -65,7 +62,7 @@ final class StickerManagementViewModel extends ViewModel {
@Override
protected void onCleared() {
application.getContentResolver().unregisterContentObserver(observer);
ApplicationDependencies.getDatabaseObserver().unregisterObserver(observer);
}
static class Factory extends ViewModelProvider.NewInstanceFactory {

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.stickers;
import android.app.Application;
import android.database.ContentObserver;
import android.text.TextUtils;
import androidx.annotation.NonNull;
@@ -10,7 +9,8 @@ import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
import org.thoughtcrime.securesms.database.DatabaseObserver;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.stickers.StickerPackPreviewRepository.StickerManifestResult;
import org.whispersystems.libsignal.util.guava.Optional;
@@ -20,7 +20,7 @@ final class StickerPackPreviewViewModel extends ViewModel {
private final StickerPackPreviewRepository previewRepository;
private final StickerManagementRepository managementRepository;
private final MutableLiveData<Optional<StickerManifestResult>> stickerManifest;
private final ContentObserver packObserver;
private final DatabaseObserver.Observer packObserver;
private String packId;
private String packKey;
@@ -33,16 +33,13 @@ final class StickerPackPreviewViewModel extends ViewModel {
this.previewRepository = previewRepository;
this.managementRepository = managementRepository;
this.stickerManifest = new MutableLiveData<>();
this.packObserver = new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
if (!TextUtils.isEmpty(packId) && !TextUtils.isEmpty(packKey)) {
previewRepository.getStickerManifest(packId, packKey, stickerManifest::postValue);
}
this.packObserver = () -> {
if (!TextUtils.isEmpty(packId) && !TextUtils.isEmpty(packKey)) {
previewRepository.getStickerManifest(packId, packKey, stickerManifest::postValue);
}
};
application.getContentResolver().registerContentObserver(DatabaseContentProviders.StickerPack.CONTENT_URI, true, packObserver);
ApplicationDependencies.getDatabaseObserver().registerStickerPackObserver(packObserver);
}
LiveData<Optional<StickerManifestResult>> getStickerManifest(@NonNull String packId, @NonNull String packKey) {
@@ -64,7 +61,7 @@ final class StickerPackPreviewViewModel extends ViewModel {
@Override
protected void onCleared() {
application.getContentResolver().unregisterContentObserver(packObserver);
ApplicationDependencies.getDatabaseObserver().unregisterObserver(packObserver);
}
static class Factory extends ViewModelProvider.NewInstanceFactory {

View File

@@ -8,7 +8,6 @@ import androidx.annotation.NonNull;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.components.emoji.EmojiUtil;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.database.CursorList;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.StickerDatabase;
import org.thoughtcrime.securesms.database.StickerDatabase.StickerRecordReader;
@@ -59,13 +58,6 @@ public final class StickerSearchRepository {
});
}
private static class StickerModelBuilder implements CursorList.ModelBuilder<StickerRecord> {
@Override
public StickerRecord build(@NonNull Cursor cursor) {
return new StickerRecordReader(cursor).getCurrent();
}
}
public interface Callback<T> {
void onResult(T result);
}