mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
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:
committed by
Cody Henthorne
parent
ab55fec6bd
commit
658de3b6e7
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user