|
package ai.pai.lensman.session;
import android.content.Intent;
import com.android.common.utils.LogHelper;
import java.util.ArrayList;
import ai.pai.lensman.App;
import ai.pai.lensman.BuildConfig;
import ai.pai.lensman.bean.PhotoBean;
import ai.pai.lensman.bean.SessionBean;
import ai.pai.lensman.db.DBService;
import ai.pai.lensman.db.Preferences;
import ai.pai.lensman.main.QueryBoxStatusInteractor;
import ai.pai.lensman.service.UploadService;
public class SessionPresenter implements SessionContract.Presenter, SessionInteractor.SessionListener,
QueryBoxStatusInteractor.BoxStatusListener {
private SessionInteractor interactor;
private QueryBoxStatusInteractor boxStatusInteractor;
private ArrayList<PhotoBean> photoList;
private SessionContract.View sessionView;
private SessionBean sessionBean;
private boolean isWorking;
private static final String TAG = "SessionPresenter";
public SessionPresenter(SessionBean sessionBean, SessionContract.View view) {
this.sessionView = view;
this.sessionBean = sessionBean;
}
@Override
public void start() {
LogHelper.d(TAG,"SessionPresenter start "+sessionBean);
interactor = new SessionInteractor(sessionBean, this);
boxStatusInteractor = new QueryBoxStatusInteractor(this);
photoList = DBService.getInstance().getPhotoListBySessionId(sessionBean.sessionId);
if (photoList.size() == 0) {
LogHelper.d(TAG,"SessionPresenter start and found no old photos");
sessionView.showEmptyView();
} else {
LogHelper.d(TAG,"SessionPresenter start and found old photos, size = "+photoList.size());
sessionView.showPhotoRecyclerView();
for (PhotoBean photoBean : photoList) {
sessionView.addNewPhoto(photoBean);
}
}
interactor.startSession();
boxStatusInteractor.startJob();
Preferences.getInstance().setCurrentSession(sessionBean.sessionId);
}
@Override
public void stop() {
boxStatusInteractor.cancelJob();
interactor.endSession();
Preferences.getInstance().setCurrentSession("");
isWorking = false;
LogHelper.d(TAG,"stop");
}
@Override
public void onSessionStartSuccess(String session) {
isWorking = true;
sessionView.showToast("session启动成功");
LogHelper.d(TAG,"onSessionStartSuccess session启动成功"+session);
}
@Override
public void onSessionStartError(String session) {
if (!isWorking) {
return;
}
sessionView.showToast("session启动失败,自动重试中");
interactor.startSession();
LogHelper.d(TAG,"onSessionStartError session启动失败,自动重试中");
}
@Override
public void onSessionPhotoCaptured(final PhotoBean bean) {
if (!isWorking) {
return;
}
if(BuildConfig.isTestMode){
if(photoList!=null && photoList.size()>5){
return;
}
}
LogHelper.d(TAG,"onSessionPhotoCaptured "+bean);
DBService.getInstance().addPhotoBean(bean);
sessionView.showPhotoRecyclerView();
sessionView.addNewPhoto(bean);
photoList.add(0,bean);
App.getAppContext().startService(new Intent(App.getAppContext(), UploadService.class));
}
@Override
public void onSessionEnd(String session) {
LogHelper.d(TAG,"onSessionEnd "+session);
}
@Override
public void swipeToDeletePhoto(int index) {
if(index<0 || index>= photoList.size()){
return;
}
PhotoBean photoBean = photoList.get(index);
photoList.remove(photoBean);
DBService.getInstance().deletePhotoBean(photoBean);
interactor.deletePhoto(photoBean);
}
@Override
public void change2QRCodeSessionId(String sessionId) {
LogHelper.d(TAG,"change2QRCodeSessionId 使用新sessionId = "+sessionId);
this.sessionBean.sessionId = sessionId;
stop();
start();
}
@Override
public void onBoxStatusFetched(String boxNo, String boxStatus, String boxStatusCode) {
LogHelper.d(TAG,"onBoxStatusFetched 盒子当前状态 "+boxStatus+" code = "+boxStatusCode);
if("0".equals(boxStatusCode)){
sessionView.showBoxConnectedView();
}else{
sessionView.showBoxDisconnectedView();
}
}
}
|