暂无描述

SessionPresenter.java 4.4KB

    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(); } } }