mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-25 11:05:25 +00:00
2a644437fb
No sticker packs are available for use yet, but we now have the latent ability to send and receive.
67 lines
2.3 KiB
Java
67 lines
2.3 KiB
Java
package org.thoughtcrime.securesms.stickers;
|
|
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.support.annotation.NonNull;
|
|
|
|
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.model.StickerPackRecord;
|
|
import org.thoughtcrime.securesms.database.model.StickerRecord;
|
|
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
|
|
|
|
public final class StickerSearchRepository {
|
|
|
|
private final StickerDatabase stickerDatabase;
|
|
private final AttachmentDatabase attachmentDatabase;
|
|
|
|
public StickerSearchRepository(@NonNull Context context) {
|
|
this.stickerDatabase = DatabaseFactory.getStickerDatabase(context);
|
|
this.attachmentDatabase = DatabaseFactory.getAttachmentDatabase(context);
|
|
}
|
|
|
|
public void searchByEmoji(@NonNull String emoji, @NonNull Callback<CursorList<StickerRecord>> callback) {
|
|
SignalExecutors.BOUNDED.execute(() -> {
|
|
Cursor cursor = stickerDatabase.getStickersByEmoji(emoji);
|
|
|
|
if (cursor != null) {
|
|
callback.onResult(new CursorList<>(cursor, new StickerModelBuilder()));
|
|
} else {
|
|
callback.onResult(CursorList.emptyList());
|
|
}
|
|
});
|
|
}
|
|
|
|
public void getStickerFeatureAvailability(@NonNull Callback<Boolean> callback) {
|
|
SignalExecutors.BOUNDED.execute(() -> {
|
|
try (Cursor cursor = stickerDatabase.getAllStickerPacks("1")) {
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
callback.onResult(true);
|
|
} else {
|
|
callback.onResult(attachmentDatabase.hasStickerAttachments());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private static class StickerModelBuilder implements CursorList.ModelBuilder<StickerRecord> {
|
|
@Override
|
|
public StickerRecord build(@NonNull Cursor cursor) {
|
|
return new StickerDatabase.StickerRecordReader(cursor).getCurrent();
|
|
}
|
|
}
|
|
|
|
private static class StickerPackModelBuilder implements CursorList.ModelBuilder<StickerPackRecord> {
|
|
@Override
|
|
public StickerPackRecord build(@NonNull Cursor cursor) {
|
|
return new StickerDatabase.StickerPackRecordReader(cursor).getCurrent();
|
|
}
|
|
}
|
|
|
|
public interface Callback<T> {
|
|
void onResult(T result);
|
|
}
|
|
}
|