package com.alorma.github.ui.activity;
import com.alorma.github.ui.utils.ContentEditorText;
import imgurapiexample.imgurmodel.ImageResponse;
import imgurapiexample.imgurmodel.Upload;
import imgurapiexample.services.ImgurUpload;
import java.io.File;
import rx.Scheduler;
public class ContentEditorPresenter {
private String clientId;
private Callback callback;
private ImgurUpload imgurUpload;
private rx.Scheduler observeOn;
private Scheduler scheduleOn;
public ContentEditorPresenter(String clientId, ImgurUpload imgurUpload, Scheduler observeOn, Scheduler scheduleOn) {
this.clientId = clientId;
this.imgurUpload = imgurUpload;
this.observeOn = observeOn;
this.scheduleOn = scheduleOn;
}
public void uploadImageWithImgurAPI(File file) {
if (file != null) {
Upload upload = new Upload();
upload.image = file;
imgurUpload.uploadImage(upload, clientId)
.subscribeOn(scheduleOn)
.observeOn(observeOn)
.doOnSubscribe(() -> callback.showImageLoading(upload.image.getName()))
.filter(ImageResponse::isSucces)
.subscribe(o -> {
String name = null;
name = file.getName();
setImageUrl(name, o.data.link);
callback.onImageUploaded(upload.image.getName(), o.data.link);
}, throwable -> {
callback.showImageUploadError(upload.image.getName());
});
} else {
callback.showImageUploadError(null);
}
}
public void setImageUrl(String name, String link) {
String textForImage = new ContentEditorText().getTextForImage(name, link);
callback.appendText("\n" + textForImage + "\n");
}
public void setCallback(Callback callback) {
if (callback == null) {
callback = new Callback.Null();
}
this.callback = callback;
}
public interface Callback {
void showImageLoading(String name);
void appendText(String text);
void showImageUploadError(String name);
void onImageUploaded(String name, String link);
class Null implements Callback {
@Override
public void showImageLoading(String name) {
}
@Override
public void appendText(String text) {
}
@Override
public void showImageUploadError(String name) {
}
@Override
public void onImageUploaded(String name, String link) {
}
}
}
}