package com.xiaomi.xms.sales.util;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.loader.RequestLoader;
import com.xiaomi.xms.sales.loader.RequestLoader.Result;
import com.xiaomi.xms.sales.model.Tags;
import com.xiaomi.xms.sales.request.HostManager;
import com.xiaomi.xms.sales.request.Request;
import org.json.JSONObject;
public class VcodeUtil {
// LoaderManager用来区别不同的Loader
private static final int REQUEST_LOADER = 0;
private static final int REQUEST_LOADER_VERIFYVCODE = 1;
// RequestLoader用来区别不同的Request
private static final int REQUEST_CODE_LOAD_IMAGE = 0;
private static final int REQUEST_CODE_LOAD_IMAGE_VERIFYVCODE = 1;
private RequestLoader mFetchVcodeLoader;
private RequestLoader mVerifyVcodeLoader;
private Context mContext;
private Fragment mFragment;
public VcodeUtil(Fragment mFragment) {
super();
this.mContext = mFragment.getActivity();
this.mFragment = mFragment;
}
public interface FetchVcodeCallbackInterface {
void vCodeUrl(String urlPath);
}
public void fetchVerifyCode(final FetchVcodeCallbackInterface fetchVcodeCallback) {
mFragment.getLoaderManager().initLoader(REQUEST_LOADER, null, new LoaderCallbacks<RequestLoader.Result>() {
@Override
public Loader<Result> onCreateLoader(int id, Bundle bundle) {
mFetchVcodeLoader = new RequestLoader(mContext);
return mFetchVcodeLoader;
}
@Override
public void onLoadFinished(Loader<Result> loader, Result data) {
if (data != null) {
if (REQUEST_CODE_LOAD_IMAGE == data.mRequestCode) {
// 每一次调用结束,必须destroyLoader
mFragment.getLoaderManager().destroyLoader(REQUEST_LOADER);
String url = "";
if (data.mStatus == Request.STATUS_OK) {
JSONObject json = data.mData;
if (json != null) {
if (Tags.isJSONResultOK(json)) {
JSONObject dataJson = json.optJSONObject(Tags.DATA);
if (dataJson != null) {
url = dataJson.optString(Tags.CheckCode.URL);
} else {
ToastUtil.show(mContext, R.string.data_error);
}
} else {
ToastUtil.show(mContext, json.optJSONObject(Tags.DATA).optString(Tags.DESCRIPTION));
}
}
}
fetchVcodeCallback.vCodeUrl(url);
}
}
}
@Override
public void onLoaderReset(Loader<Result> loader) {
}
});
if (mFetchVcodeLoader != null) {
Request request = new Request(HostManager.getCheckVCode());
request.addParam(HostManager.Parameters.Keys.CHECKCODE_TYPE,
HostManager.Parameters.Values.CHECKCODE_TYPE_GET);
mFetchVcodeLoader.load(REQUEST_CODE_LOAD_IMAGE, request);
}
}
public interface VerifyVcodeCallbackInterface {
void verifyResult(boolean verifyResult);
}
public void verifyVCode(String vCode, final VerifyVcodeCallbackInterface verifyVcodeCallback) {
mFragment.getLoaderManager().initLoader(REQUEST_LOADER_VERIFYVCODE, null,
new LoaderCallbacks<RequestLoader.Result>() {
@Override
public Loader<Result> onCreateLoader(int id, Bundle bundle) {
mVerifyVcodeLoader = new RequestLoader(mContext);
return mVerifyVcodeLoader;
}
@Override
public void onLoadFinished(Loader<Result> loader, Result data) {
if (data != null) {
if (REQUEST_CODE_LOAD_IMAGE_VERIFYVCODE == data.mRequestCode) {
boolean verifyResult = false;
// 每一次调用结束,必须destroyLoader
mFragment.getLoaderManager().destroyLoader(REQUEST_LOADER_VERIFYVCODE);
if (data.mStatus == Request.STATUS_OK) {
JSONObject json = data.mData;
if (json != null) {
if (Tags.isJSONResultOK(json)) {
verifyResult = true;
}
}
}
verifyVcodeCallback.verifyResult(verifyResult);
}
}
}
@Override
public void onLoaderReset(Loader<Result> loader) {
}
});
if (mVerifyVcodeLoader != null) {
Request request = new Request(HostManager.getCheckVCode());
request.addParam(HostManager.Parameters.Keys.CHECKCODE_TYPE,
HostManager.Parameters.Values.CHECKCODE_TYPE_CHECK);
request.addParam(HostManager.Parameters.Keys.CHECKCODE_CODE, vCode);
mVerifyVcodeLoader.load(REQUEST_CODE_LOAD_IMAGE_VERIFYVCODE, request);
}
}
}