session-android/src/org/thoughtcrime/securesms/stickers/StickerRemoteUriLoader.java
Greyson Parrelli 2a644437fb Add sticker support.
No sticker packs are available for use yet, but we now have the
latent ability to send and receive.
2019-05-30 01:08:01 -04:00

59 lines
1.8 KiB
Java

package org.thoughtcrime.securesms.stickers;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.ModelLoaderFactory;
import com.bumptech.glide.load.model.MultiModelLoaderFactory;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.dependencies.InjectableType;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
import java.io.InputStream;
import javax.inject.Inject;
/**
* Glide loader to fetch a sticker remotely.
*/
public final class StickerRemoteUriLoader implements ModelLoader<StickerRemoteUri, InputStream> {
private final SignalServiceMessageReceiver receiver;
public StickerRemoteUriLoader(@NonNull SignalServiceMessageReceiver receiver) {
this.receiver = receiver;
}
@Override
public @Nullable LoadData<InputStream> buildLoadData(@NonNull StickerRemoteUri sticker, int width, int height, @NonNull Options options) {
return new LoadData<>(sticker, new StickerRemoteUriFetcher(receiver, sticker));
}
@Override
public boolean handles(@NonNull StickerRemoteUri sticker) {
return true;
}
public static class Factory implements ModelLoaderFactory<StickerRemoteUri, InputStream>, InjectableType {
@Inject SignalServiceMessageReceiver receiver;
public Factory(@NonNull Context context) {
ApplicationContext.getInstance(context).injectDependencies(this);
}
@Override
public @NonNull ModelLoader<StickerRemoteUri, InputStream> build(@NonNull MultiModelLoaderFactory multiFactory) {
return new StickerRemoteUriLoader(receiver);
}
@Override
public void teardown() {
}
}
}