Skip to content

Commit cf7583a

Browse files
authored
Login error message is displayed in native phone locale language and not in just English. Fixes commons-app#4290 (commons-app#4389)
* Login error message is displayed in native phone locale language. * Login error message is displayed in native phone locale language.
1 parent f35d6d6 commit cf7583a

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.android.material.textfield.TextInputLayout;
3131

3232
import fr.free.nrw.commons.utils.ActivityUtils;
33+
import java.util.Locale;
3334
import org.wikipedia.AppAdapter;
3435
import org.wikipedia.dataclient.ServiceFactory;
3536
import org.wikipedia.dataclient.WikiSite;
@@ -265,7 +266,7 @@ private void doLogin(String username, String password, String twoFactorCode) {
265266
public void onResponse(Call<MwQueryResponse> call,
266267
Response<MwQueryResponse> response) {
267268
loginClient.login(commonsWikiSite, username, password, null, twoFactorCode,
268-
response.body().query().loginToken(), new LoginCallback() {
269+
response.body().query().loginToken(), Locale.getDefault().getLanguage(), new LoginCallback() {
269270
@Override
270271
public void success(@NonNull LoginResult result) {
271272
Timber.d("Login Success");

data-client/src/main/java/org/wikipedia/dataclient/Service.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -229,14 +229,14 @@ public interface Service {
229229
@FormUrlEncoded
230230
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
231231
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
232-
@Field("logintoken") String token, @Field("loginreturnurl") String url);
232+
@Field("logintoken") String token, @Field("uselang") String userLanguage, @Field("loginreturnurl") String url);
233233

234234
@Headers("Cache-Control: no-cache")
235235
@FormUrlEncoded
236236
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
237237
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
238238
@Field("retype") String retypedPass, @Field("OATHToken") String twoFactorCode,
239-
@Field("logintoken") String token,
239+
@Field("logintoken") String token, @Field("uselang") String userLanguage,
240240
@Field("logincontinue") boolean loginContinue);
241241

242242
@Headers("Cache-Control: no-cache")

data-client/src/main/java/org/wikipedia/login/LoginClient.java

+18-7
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,14 @@
3333
public class LoginClient {
3434
@Nullable private Call<MwQueryResponse> tokenCall;
3535
@Nullable private Call<LoginResponse> loginCall;
36-
36+
/**
37+
* userLanguage
38+
* It holds the value of the user's device language code.
39+
* For example, if user's device language is English it will hold En
40+
* The value will be fetched when the user clicks Login Button in the LoginActivity
41+
*/
42+
@NonNull private String userLanguage;
43+
3744
public interface LoginCallback {
3845
void success(@NonNull LoginResult result);
3946
void twoFactorPrompt(@NonNull Throwable caught, @Nullable String token);
@@ -49,7 +56,8 @@ public void request(@NonNull final WikiSite wiki, @NonNull final String userName
4956
tokenCall.enqueue(new Callback<MwQueryResponse>() {
5057
@Override public void onResponse(@NonNull Call<MwQueryResponse> call,
5158
@NonNull Response<MwQueryResponse> response) {
52-
login(wiki, userName, password, null, null, response.body().query().loginToken(), cb);
59+
login(wiki, userName, password, null, null, response.body().query().loginToken(),
60+
userLanguage, cb);
5361
}
5462

5563
@Override
@@ -64,10 +72,12 @@ public void onFailure(@NonNull Call<MwQueryResponse> call, @NonNull Throwable ca
6472

6573
public void login(@NonNull final WikiSite wiki, @NonNull final String userName, @NonNull final String password,
6674
@Nullable final String retypedPassword, @Nullable final String twoFactorCode,
67-
@Nullable final String loginToken, @NonNull final LoginCallback cb) {
75+
@Nullable final String loginToken, @NonNull final String userLanguage, @NonNull final LoginCallback cb) {
76+
this.userLanguage = userLanguage;
6877
loginCall = TextUtils.isEmpty(twoFactorCode) && TextUtils.isEmpty(retypedPassword)
69-
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
70-
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken, true);
78+
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
79+
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken,
80+
userLanguage, true);
7181
loginCall.enqueue(new Callback<LoginResponse>() {
7282
@Override
7383
public void onResponse(@NonNull Call<LoginResponse> call, @NonNull Response<LoginResponse> response) {
@@ -114,8 +124,9 @@ public void loginBlocking(@NonNull final WikiSite wiki, @NonNull final String us
114124
String loginToken = tokenResponse.body().query().loginToken();
115125

116126
Call<LoginResponse> tempLoginCall = StringUtils.defaultIfEmpty(twoFactorCode, "").isEmpty()
117-
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
118-
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken, true);
127+
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
128+
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken,
129+
userLanguage, true);
119130
Response<LoginResponse> response = tempLoginCall.execute();
120131
LoginResponse loginResponse = response.body();
121132
if (loginResponse == null) {

0 commit comments

Comments
 (0)