mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-21 21:01:43 +08:00
opt: error message of login and register
This commit is contained in:
parent
39932de8ce
commit
0d8a3e41fb
@ -1,14 +1,23 @@
|
||||
package com.stardust.scriptdroid.network;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
||||
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.network.api.ConfigApi;
|
||||
import com.stardust.scriptdroid.network.entity.config.Config;
|
||||
import com.stardust.scriptdroid.network.util.WebkitCookieManagerProxy;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Scheduler;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.ResponseBody;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
@ -20,6 +29,7 @@ public class NodeBB {
|
||||
|
||||
public static final String BASE_URL = "http://www.autojs.org/";
|
||||
private static final NodeBB sInstance = new NodeBB();
|
||||
private static final String LOG_TAG = "NodeBB";
|
||||
private Config mConfig;
|
||||
|
||||
|
||||
@ -56,7 +66,48 @@ public class NodeBB {
|
||||
|
||||
}
|
||||
|
||||
public static String getErrorMessage(Throwable e, Context context, String defaultMsg) {
|
||||
if (!(e instanceof HttpException)) {
|
||||
return defaultMsg;
|
||||
}
|
||||
HttpException httpException = (HttpException) e;
|
||||
ResponseBody body = httpException.response().errorBody();
|
||||
if (body == null)
|
||||
return defaultMsg;
|
||||
try {
|
||||
String errorMessage = getErrorMessage(context, e, body.string());
|
||||
return errorMessage == null ? defaultMsg : errorMessage;
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
return defaultMsg;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getErrorMessage(Context context, Throwable error, String errorBody) {
|
||||
if (errorBody == null)
|
||||
return null;
|
||||
if (errorBody.contains("invalid-login-credentials")) {
|
||||
return context.getString(R.string.nodebb_error_invalid_login_credentials);
|
||||
}
|
||||
if (errorBody.contains("change_password_error_match")) {
|
||||
return context.getString(R.string.nodebb_error_change_password_error_match);
|
||||
|
||||
}
|
||||
if (errorBody.contains("change_password_error_length")) {
|
||||
return context.getString(R.string.nodebb_error_change_password_error_length);
|
||||
}
|
||||
if (errorBody.contains("email-taken")) {
|
||||
return context.getString(R.string.nodebb_error_email_taken);
|
||||
}
|
||||
Log.d(LOG_TAG, "unknown error: " + errorBody, error);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String url(String relativePath) {
|
||||
return BASE_URL + relativePath;
|
||||
}
|
||||
|
||||
public static CharSequence getErrorMessage(Throwable error, Context context, int defaultMsg) {
|
||||
return getErrorMessage(error, context, context.getString(defaultMsg));
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,6 @@ public class UserService {
|
||||
return NodeBB.getInstance()
|
||||
.getConfig()
|
||||
.flatMap(config -> {
|
||||
Log.d("login", config.toString());
|
||||
return mRetrofit.create(UserApi.class)
|
||||
.login(Collections.singletonMap("x-csrf-token", config.getCsrfToken()),
|
||||
userName, password);
|
||||
@ -43,11 +42,8 @@ public class UserService {
|
||||
public Observable<ResponseBody> register(String email, String userName, String password) {
|
||||
return NodeBB.getInstance()
|
||||
.getConfig()
|
||||
.flatMap(config -> {
|
||||
Log.d("login", config.toString());
|
||||
return mRetrofit.create(UserApi.class)
|
||||
.register(Collections.singletonMap("x-csrf-token", config.getCsrfToken()),
|
||||
email, userName, password);
|
||||
});
|
||||
.flatMap(config -> mRetrofit.create(UserApi.class)
|
||||
.register(Collections.singletonMap("x-csrf-token", config.getCsrfToken()),
|
||||
email, userName, password, password));
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ public interface UserApi {
|
||||
@FormUrlEncoded
|
||||
@POST("/register")
|
||||
Observable<ResponseBody> register(@HeaderMap Map<String, String> csrfToken, @Field("email") String email,
|
||||
@Field("username") String userName, @Field("password") String password);
|
||||
@Field("username") String userName, @Field("password") String password, @Field("password-confirm") String repeatPassword);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@ import org.androidannotations.annotations.AfterViews;
|
||||
import org.androidannotations.annotations.Click;
|
||||
import org.androidannotations.annotations.EActivity;
|
||||
import org.androidannotations.annotations.ViewById;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
@ -65,8 +66,7 @@ public class LoginActivity extends BaseActivity {
|
||||
}
|
||||
, error -> {
|
||||
dialog.dismiss();
|
||||
mPassword.setError(getString(R.string.text_login_fail));
|
||||
error.printStackTrace();
|
||||
mPassword.setError(NodeBB.getErrorMessage(error, LoginActivity.this, R.string.text_login_fail));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.network.NodeBB;
|
||||
import com.stardust.scriptdroid.network.UserService;
|
||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
||||
import com.stardust.theme.ThemeColorManager;
|
||||
@ -67,8 +68,7 @@ public class RegisterActivity extends BaseActivity {
|
||||
}
|
||||
, error -> {
|
||||
dialog.dismiss();
|
||||
mPassword.setError(getString(R.string.text_register_fail));
|
||||
error.printStackTrace();
|
||||
mPassword.setError(NodeBB.getErrorMessage(error, RegisterActivity.this, R.string.text_register_fail));
|
||||
});
|
||||
|
||||
}
|
||||
@ -95,6 +95,10 @@ public class RegisterActivity extends BaseActivity {
|
||||
mUserName.setError(getString(R.string.text_password_cannot_be_empty));
|
||||
return false;
|
||||
}
|
||||
if (password.length() < 6) {
|
||||
mPassword.setError(getString(R.string.nodebb_error_change_password_error_length));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,10 +10,9 @@
|
||||
android:id="@+id/app_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
<com.stardust.theme.widget.ThemeColorToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
|
||||
@ -332,4 +332,8 @@
|
||||
<string name="text_community_recent">最新</string>
|
||||
<string name="text_community_popular">热门</string>
|
||||
<string name="text_community_tags">话题</string>
|
||||
<string name="nodebb_error_invalid_login_credentials">无效的登录凭证</string>
|
||||
<string name="nodebb_error_change_password_error_length">密码太短</string>
|
||||
<string name="nodebb_error_email_taken">邮箱已被占用</string>
|
||||
<string name="nodebb_error_change_password_error_match">两次输入的密码不一致</string>
|
||||
</resources>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user