package com.shayu.onetoone.upload; import android.content.Context; import com.shayu.onetoone.bean.AvatarBean; import com.shayu.onetoone.manager.OTONetManager; import com.yunbao.common.http.base.HttpCallback; import java.util.List; /** * 文件上传 */ public class UploadCustomImpl implements UploadStrategy { private static final String TAG = "UploadQnImpl"; private Context mContext; private List mList; private int mIndex; private boolean mNeedCompress; private UploadCallback mUploadCallback; public UploadCustomImpl(Context context) { mContext = context; } @Override public void upload(List list, boolean needCompress, UploadCallback callback) { if (callback == null) { return; } if (list == null || list.size() == 0) { callback.onFinish(list, false); return; } boolean hasFile = false; for (UploadBean bean : list) { if (bean.getOriginFile() != null) { hasFile = true; break; } } if (!hasFile) { callback.onFinish(list, true); return; } mList = list; mNeedCompress = needCompress; mUploadCallback = callback; mIndex = 0; uploadNext(); } @Override public void cancelUpload() { } private void uploadNext() { UploadBean bean = null; while (mIndex < mList.size() && (bean = mList.get(mIndex)).getOriginFile() == null) { mIndex++; } if (mIndex >= mList.size() || bean == null) { if (mUploadCallback != null) { mUploadCallback.onFinish(mList, true); } return; } upload(bean); } private void upload(UploadBean bean) { OTONetManager.getInstance(mContext).updateFile(bean.getOriginFile(), new HttpCallback() { @Override public void onSuccess(AvatarBean data) { if (data != null) { bean.setRemoteAccessUrl(data.getAvatar()); bean.setSuccess(true); uploadNext(); } } @Override public void onError(String error) { } }); } }