package com.wangdaye.mysplash.collection.presenter.activity;
import android.net.Uri;
import com.wangdaye.mysplash.common.data.entity.unsplash.Collection;
import com.wangdaye.mysplash.common.data.service.CollectionService;
import com.wangdaye.mysplash.common.i.model.BrowsableModel;
import com.wangdaye.mysplash.common.i.presenter.BrowsablePresenter;
import com.wangdaye.mysplash.common.i.view.BrowsableView;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;
/**
* Browsable implementor.
* */
public class BrowsableImplementor
implements BrowsablePresenter,
CollectionService.OnRequestSingleCollectionListener {
private BrowsableModel model;
private BrowsableView view;
public BrowsableImplementor(BrowsableModel model, BrowsableView view) {
this.model = model;
this.view = view;
}
@Override
public Uri getIntentUri() {
return model.getIntentUri();
}
@Override
public boolean isBrowsable() {
return model.isBrowsable();
}
@Override
public void visitPreviousPage() {
view.visitPreviousPage();
}
@Override
public void requestBrowsableData() {
view.showRequestDialog();
requestCollection();
}
@Override
public void cancelRequest() {
((CollectionService) model.getService()).cancel();
}
private void requestCollection() {
List<String> keyList = model.getBrowsableDataKey();
if (keyList.get(1).equals("curated")) {
((CollectionService) model.getService()).requestACuratedCollections(keyList.get(2), this);
} else {
((CollectionService) model.getService()).requestACollections(keyList.get(1), this);
}
}
// interface.
// on request single collection listener.
@Override
public void onRequestSingleCollectionSuccess(Call<Collection> call, Response<Collection> response) {
if (response.isSuccessful() && response.body() != null) {
view.dismissRequestDialog();
view.drawBrowsableView(response.body());
} else {
requestCollection();
}
}
@Override
public void onRequestSingleCollectionFailed(Call<Collection> call, Throwable t) {
requestCollection();
}
}