mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +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
|
|
@ -30,6 +30,7 @@ import androidx.core.content.ContextCompat;
|
||||||
import com.google.android.material.textfield.TextInputLayout;
|
import com.google.android.material.textfield.TextInputLayout;
|
||||||
|
|
||||||
import fr.free.nrw.commons.utils.ActivityUtils;
|
import fr.free.nrw.commons.utils.ActivityUtils;
|
||||||
|
import java.util.Locale;
|
||||||
import org.wikipedia.AppAdapter;
|
import org.wikipedia.AppAdapter;
|
||||||
import org.wikipedia.dataclient.ServiceFactory;
|
import org.wikipedia.dataclient.ServiceFactory;
|
||||||
import org.wikipedia.dataclient.WikiSite;
|
import org.wikipedia.dataclient.WikiSite;
|
||||||
|
|
@ -265,7 +266,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
||||||
public void onResponse(Call<MwQueryResponse> call,
|
public void onResponse(Call<MwQueryResponse> call,
|
||||||
Response<MwQueryResponse> response) {
|
Response<MwQueryResponse> response) {
|
||||||
loginClient.login(commonsWikiSite, username, password, null, twoFactorCode,
|
loginClient.login(commonsWikiSite, username, password, null, twoFactorCode,
|
||||||
response.body().query().loginToken(), new LoginCallback() {
|
response.body().query().loginToken(), Locale.getDefault().getLanguage(), new LoginCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void success(@NonNull LoginResult result) {
|
public void success(@NonNull LoginResult result) {
|
||||||
Timber.d("Login Success");
|
Timber.d("Login Success");
|
||||||
|
|
|
||||||
|
|
@ -229,14 +229,14 @@ public interface Service {
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
||||||
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
|
@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")
|
@Headers("Cache-Control: no-cache")
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
@POST(MW_API_PREFIX + "action=clientlogin&rememberMe=")
|
||||||
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
|
@NonNull Call<LoginClient.LoginResponse> postLogIn(@Field("username") String user, @Field("password") String pass,
|
||||||
@Field("retype") String retypedPass, @Field("OATHToken") String twoFactorCode,
|
@Field("retype") String retypedPass, @Field("OATHToken") String twoFactorCode,
|
||||||
@Field("logintoken") String token,
|
@Field("logintoken") String token, @Field("uselang") String userLanguage,
|
||||||
@Field("logincontinue") boolean loginContinue);
|
@Field("logincontinue") boolean loginContinue);
|
||||||
|
|
||||||
@Headers("Cache-Control: no-cache")
|
@Headers("Cache-Control: no-cache")
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,13 @@ import retrofit2.Response;
|
||||||
public class LoginClient {
|
public class LoginClient {
|
||||||
@Nullable private Call<MwQueryResponse> tokenCall;
|
@Nullable private Call<MwQueryResponse> tokenCall;
|
||||||
@Nullable private Call<LoginResponse> loginCall;
|
@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 {
|
public interface LoginCallback {
|
||||||
void success(@NonNull LoginResult result);
|
void success(@NonNull LoginResult result);
|
||||||
|
|
@ -49,7 +56,8 @@ public class LoginClient {
|
||||||
tokenCall.enqueue(new Callback<MwQueryResponse>() {
|
tokenCall.enqueue(new Callback<MwQueryResponse>() {
|
||||||
@Override public void onResponse(@NonNull Call<MwQueryResponse> call,
|
@Override public void onResponse(@NonNull Call<MwQueryResponse> call,
|
||||||
@NonNull Response<MwQueryResponse> response) {
|
@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
|
@Override
|
||||||
|
|
@ -64,10 +72,12 @@ public class LoginClient {
|
||||||
|
|
||||||
public void login(@NonNull final WikiSite wiki, @NonNull final String userName, @NonNull final String password,
|
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 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)
|
loginCall = TextUtils.isEmpty(twoFactorCode) && TextUtils.isEmpty(retypedPassword)
|
||||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
|
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
|
||||||
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken, true);
|
: ServiceFactory.get(wiki).postLogIn(userName, password, retypedPassword, twoFactorCode, loginToken,
|
||||||
|
userLanguage, true);
|
||||||
loginCall.enqueue(new Callback<LoginResponse>() {
|
loginCall.enqueue(new Callback<LoginResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<LoginResponse> call, @NonNull Response<LoginResponse> response) {
|
public void onResponse(@NonNull Call<LoginResponse> call, @NonNull Response<LoginResponse> response) {
|
||||||
|
|
@ -114,8 +124,9 @@ public class LoginClient {
|
||||||
String loginToken = tokenResponse.body().query().loginToken();
|
String loginToken = tokenResponse.body().query().loginToken();
|
||||||
|
|
||||||
Call<LoginResponse> tempLoginCall = StringUtils.defaultIfEmpty(twoFactorCode, "").isEmpty()
|
Call<LoginResponse> tempLoginCall = StringUtils.defaultIfEmpty(twoFactorCode, "").isEmpty()
|
||||||
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, Service.WIKIPEDIA_URL)
|
? ServiceFactory.get(wiki).postLogIn(userName, password, loginToken, userLanguage, Service.WIKIPEDIA_URL)
|
||||||
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken, true);
|
: ServiceFactory.get(wiki).postLogIn(userName, password, null, twoFactorCode, loginToken,
|
||||||
|
userLanguage, true);
|
||||||
Response<LoginResponse> response = tempLoginCall.execute();
|
Response<LoginResponse> response = tempLoginCall.execute();
|
||||||
LoginResponse loginResponse = response.body();
|
LoginResponse loginResponse = response.body();
|
||||||
if (loginResponse == null) {
|
if (loginResponse == null) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue