@@ -0,0 +1,16 @@ |
||
1 |
+package ai.pai.lensman.base; |
|
2 |
+ |
|
3 |
+/** |
|
4 |
+ * Created by chengzhenyu on 2016/8/12. |
|
5 |
+ */ |
|
6 |
+public interface BaseInteractor { |
|
7 |
+ |
|
8 |
+ void startJob(); |
|
9 |
+ void cancelJob(); |
|
10 |
+ |
|
11 |
+ interface InteractorListener<T>{ |
|
12 |
+ void onInteractSuccess(T result); |
|
13 |
+ void onInteractFail(String errorMsg); |
|
14 |
+ } |
|
15 |
+ |
|
16 |
+} |
@@ -2,8 +2,10 @@ package ai.pai.lensman.login; |
||
2 | 2 |
|
3 | 3 |
import android.content.Intent; |
4 | 4 |
import android.os.Bundle; |
5 |
+import android.text.TextUtils; |
|
5 | 6 |
import android.view.View; |
6 | 7 |
import android.widget.EditText; |
8 |
+import android.widget.Toast; |
|
7 | 9 |
|
8 | 10 |
import com.android.views.progressbar.ProgressWheel; |
9 | 11 |
|
@@ -38,7 +40,10 @@ public class LoginActivity extends BaseActivity implements LoginContract.View{ |
||
38 | 40 |
|
39 | 41 |
@Override |
40 | 42 |
public void showLoginHint(String hint) { |
41 |
- |
|
43 |
+ if(TextUtils.isEmpty(hint)){ |
|
44 |
+ return; |
|
45 |
+ } |
|
46 |
+ Toast.makeText(this,hint,Toast.LENGTH_SHORT).show(); |
|
42 | 47 |
} |
43 | 48 |
|
44 | 49 |
@Override |
@@ -0,0 +1,69 @@ |
||
1 |
+package ai.pai.lensman.login; |
|
2 |
+ |
|
3 |
+import android.os.AsyncTask; |
|
4 |
+ |
|
5 |
+import com.android.common.executors.ThreadExecutor; |
|
6 |
+ |
|
7 |
+import java.util.HashMap; |
|
8 |
+ |
|
9 |
+import ai.pai.lensman.base.BaseInteractor; |
|
10 |
+import ai.pai.lensman.utils.HttpPostTask; |
|
11 |
+import ai.pai.lensman.utils.UrlContainer; |
|
12 |
+ |
|
13 |
+/** |
|
14 |
+ * Created by chengzhenyu on 2016/8/12. |
|
15 |
+ */ |
|
16 |
+public class LoginInteractor implements BaseInteractor{ |
|
17 |
+ |
|
18 |
+ private HttpPostTask loginTask; |
|
19 |
+ private String userName; |
|
20 |
+ private String password; |
|
21 |
+ private InteractorListener<String> listener; |
|
22 |
+ |
|
23 |
+ public LoginInteractor(String userName,String password,InteractorListener<String> listener){ |
|
24 |
+ this.userName = userName; |
|
25 |
+ this.password = password; |
|
26 |
+ this.listener = listener; |
|
27 |
+ } |
|
28 |
+ |
|
29 |
+ @Override |
|
30 |
+ public void startJob() { |
|
31 |
+ cancelJob(); |
|
32 |
+ HashMap<String,String> params = new HashMap<>(); |
|
33 |
+ params.put("account",userName); |
|
34 |
+ params.put("password",password); |
|
35 |
+ |
|
36 |
+ loginTask = new HttpPostTask(params){ |
|
37 |
+ |
|
38 |
+ @Override |
|
39 |
+ protected boolean parseResponse(String response) { |
|
40 |
+ return super.parseResponse(response); |
|
41 |
+ } |
|
42 |
+ |
|
43 |
+ @Override |
|
44 |
+ protected void onPostFail() { |
|
45 |
+ super.onPostFail(); |
|
46 |
+ listener.onInteractFail(""); |
|
47 |
+ } |
|
48 |
+ |
|
49 |
+ @Override |
|
50 |
+ protected void onPostSuccess() { |
|
51 |
+ super.onPostSuccess(); |
|
52 |
+ listener.onInteractSuccess(""); |
|
53 |
+ } |
|
54 |
+ }; |
|
55 |
+ loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.LOGIN_URL); |
|
56 |
+ } |
|
57 |
+ |
|
58 |
+ @Override |
|
59 |
+ public void cancelJob() { |
|
60 |
+ if(loginTask == null){ |
|
61 |
+ return; |
|
62 |
+ } |
|
63 |
+ if(loginTask.getStatus()== AsyncTask.Status.RUNNING){ |
|
64 |
+ loginTask.cancel(true); |
|
65 |
+ } |
|
66 |
+ loginTask = null; |
|
67 |
+ } |
|
68 |
+ |
|
69 |
+} |
@@ -1,11 +1,14 @@ |
||
1 | 1 |
package ai.pai.lensman.login; |
2 | 2 |
|
3 |
+import ai.pai.lensman.base.BaseInteractor; |
|
4 |
+ |
|
3 | 5 |
/** |
4 | 6 |
* Created by chengzhenyu on 2016/8/11. |
5 | 7 |
*/ |
6 |
-public class LoginPresenter implements LoginContract.Presenter { |
|
8 |
+public class LoginPresenter implements LoginContract.Presenter,BaseInteractor.InteractorListener<String> { |
|
7 | 9 |
|
8 | 10 |
private LoginContract.View view; |
11 |
+ private LoginInteractor interactor; |
|
9 | 12 |
|
10 | 13 |
public LoginPresenter(LoginContract.View view){ |
11 | 14 |
this.view = view; |
@@ -14,7 +17,8 @@ public class LoginPresenter implements LoginContract.Presenter { |
||
14 | 17 |
@Override |
15 | 18 |
public void login(String userName, String pwd) { |
16 | 19 |
view.showProgressView(); |
17 |
- |
|
20 |
+ interactor = new LoginInteractor(userName,pwd,this); |
|
21 |
+ interactor.startJob(); |
|
18 | 22 |
} |
19 | 23 |
|
20 | 24 |
@Override |
@@ -24,7 +28,20 @@ public class LoginPresenter implements LoginContract.Presenter { |
||
24 | 28 |
|
25 | 29 |
@Override |
26 | 30 |
public void stop() { |
31 |
+ if(interactor!=null){ |
|
32 |
+ interactor.cancelJob(); |
|
33 |
+ } |
|
34 |
+ } |
|
35 |
+ |
|
27 | 36 |
|
37 |
+ @Override |
|
38 |
+ public void onInteractSuccess(String result) { |
|
39 |
+ view.hideProgressView(); |
|
28 | 40 |
} |
29 | 41 |
|
42 |
+ @Override |
|
43 |
+ public void onInteractFail(String errorMsg) { |
|
44 |
+ view.hideProgressView(); |
|
45 |
+ view.showLoginHint(errorMsg); |
|
46 |
+ } |
|
30 | 47 |
} |
@@ -0,0 +1,53 @@ |
||
1 |
+package ai.pai.lensman.utils; |
|
2 |
+ |
|
3 |
+import android.os.AsyncTask; |
|
4 |
+ |
|
5 |
+import com.android.common.http.HttpUtils; |
|
6 |
+ |
|
7 |
+import java.util.HashMap; |
|
8 |
+ |
|
9 |
+import ai.pai.lensman.BuildConfig; |
|
10 |
+ |
|
11 |
+ |
|
12 |
+public class HttpPostTask extends AsyncTask<String,Integer,Boolean> { |
|
13 |
+ |
|
14 |
+ |
|
15 |
+ private HashMap<String,String> httpParams; |
|
16 |
+ |
|
17 |
+ public HttpPostTask(HashMap<String,String> httpParams){ |
|
18 |
+ this.httpParams = httpParams; |
|
19 |
+ } |
|
20 |
+ |
|
21 |
+ @Override |
|
22 |
+ protected Boolean doInBackground(String... params) { |
|
23 |
+ String rootUrl = params[0]; |
|
24 |
+ if(rootUrl.contains("?")){ |
|
25 |
+ rootUrl+="&platform=android"; |
|
26 |
+ }else{ |
|
27 |
+ rootUrl+="?platform=android"; |
|
28 |
+ } |
|
29 |
+ rootUrl+="&version="+ BuildConfig.VERSION_NAME; |
|
30 |
+ rootUrl+="&channel="+"guanwang"; |
|
31 |
+ String response= HttpUtils.doHttpPost(rootUrl,httpParams); |
|
32 |
+ return parseResponse(response); |
|
33 |
+ } |
|
34 |
+ |
|
35 |
+ @Override |
|
36 |
+ protected void onPostExecute(Boolean result) { |
|
37 |
+ super.onPostExecute(result); |
|
38 |
+ if(result){ |
|
39 |
+ onPostSuccess(); |
|
40 |
+ }else{ |
|
41 |
+ onPostFail(); |
|
42 |
+ } |
|
43 |
+ } |
|
44 |
+ |
|
45 |
+ protected boolean parseResponse(String response){return true;} |
|
46 |
+ |
|
47 |
+ protected void onPostFail(){ } |
|
48 |
+ |
|
49 |
+ protected void onPostSuccess(){ } |
|
50 |
+ |
|
51 |
+ |
|
52 |
+ |
|
53 |
+} |