mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Login error message is displayed in native phone locale language and not in just English. Fixes #4290 (#4389)
* Login error message is displayed in native phone locale language. * Login error message is displayed in native phone locale language.
This commit is contained in:
parent
f35d6d605b
commit
cf7583abd4
3 changed files with 22 additions and 10 deletions
|
|
@ -229,14 +229,14 @@ public interface Service {
|
|||
@FormUrlEncoded
|
||||
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
||||
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
|
||||
@Field("logintoken") String token, @Field("loginreturnurl") String url);
|
||||
@Field("logintoken") String token, @Field("uselang") String userLanguage, @Field("loginreturnurl") String url);
|
||||
|
||||
@Headers("Cache-Control: no-cache")
|
||||
@FormUrlEncoded
|
||||
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
||||
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
|
||||
@Field("retype") String retypedPass, @Field("OATHToken") String twoFactorCode,
|
||||
@Field("logintoken") String token,
|
||||
@Field("logintoken") String token, @Field("uselang") String userLanguage,
|
||||
@Field("logincontinue") boolean loginContinue);
|
||||
|
||||
@Headers("Cache-Control: no-cache")
|
||||
|
|
|
|||
|
|
@ -33,7 +33,14 @@ import retrofit2.Response;
|
|||
public class LoginClient {
|
||||
@Nullable private Call<MwQueryResponse> tokenCall;
|
||||
@Nullable private Call<LoginResponse> loginCall;
|
||||
|
||||
/**
|
||||
* userLanguage
|
||||
* It holds the value of the user's device language code.
|
||||
* For example, if user's device language is English it will hold En
|
||||
* The value will be fetched when the user clicks Login Button in the LoginActivity
|
||||
*/
|
||||
@NonNull private String userLanguage;
|
||||
|
||||
public interface LoginCallback {
|
||||
void success(@NonNull LoginResult result);
|
||||
void twoFactorPrompt(@NonNull Throwable caught, @Nullable String token);
|
||||
|
|
@ -49,7 +56,8 @@ public class LoginClient {
|
|||
tokenCall.enqueue(new Callback<MwQueryResponse>() {
|
||||
@Override public void onResponse(@NonNull Call<MwQueryResponse> call,
|
||||
@NonNull Response<MwQueryResponse> response) {
|
||||
login(wiki, userName, password, null, null, response.body().query().loginToken(), cb);
|
||||
login(wiki, userName, password, null, null, response.body().query().loginToken(),
|
||||
userLanguage, cb);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -64,10 +72,12 @@ public class LoginClient {
|
|||
|
||||
public void login(@NonNull final WikiSite wiki, @NonNull final String userName, @NonNull final String password,
|
||||
@Nullable final String retypedPassword, @Nullable final String twoFactorCode,
|
||||
@Nullable final String loginToken, @NonNull final LoginCallback cb) {
|
||||
@Nullable final String loginToken, @NonNull final String userLanguage, @NonNull final LoginCallback cb) {
|
||||
this.userLanguage = userLanguage;
|
||||
loginCall = TextUtils.isEmpty(twoFactorCode) && TextUtils.isEmpty(retypedPassword)
|
||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
|
||||
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken, true);
|
||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
|
||||
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken,
|
||||
userLanguage, true);
|
||||
loginCall.enqueue(new Callback<LoginResponse>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<LoginResponse> call, @NonNull Response<LoginResponse> response) {
|
||||
|
|
@ -114,8 +124,9 @@ public class LoginClient {
|
|||
String loginToken = tokenResponse.body().query().loginToken();
|
||||
|
||||
Call<LoginResponse> tempLoginCall = StringUtils.defaultIfEmpty(twoFactorCode, "").isEmpty()
|
||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
|
||||
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken, true);
|
||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
|
||||
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken,
|
||||
userLanguage, true);
|
||||
Response<LoginResponse> response = tempLoginCall.execute();
|
||||
LoginResponse loginResponse = response.body();
|
||||
if (loginResponse == null) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue