mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-18 03:39:00 +00:00
Feature: Add logic to SetupActivity to set language at registration
This commit adds logic to the SetupActivity for a new user. The purpose of this logic is for the device language to be sent to the web app automatically during registration.
This commit is contained in:
parent
548fa9af6b
commit
22ccb1bcf7
7 changed files with 176 additions and 129 deletions
|
|
@ -63,13 +63,13 @@
|
|||
<item>es</item>
|
||||
<item>fr</item>
|
||||
<item>iw</item>
|
||||
<item>hr-rHR</item>
|
||||
<item>hr</item>
|
||||
<item>in</item>
|
||||
<item>it</item>
|
||||
<item>ja</item>
|
||||
<item>nl</item>
|
||||
<item>pl</item>
|
||||
<item>pt-rPT</item>
|
||||
<item>pt</item>
|
||||
<item>pt-rBR</item>
|
||||
<item>ru</item>
|
||||
<item>zh</item>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
import com.google.gson.FieldAttributes;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
|
|
@ -17,8 +19,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Purchases;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
|
|
@ -67,14 +67,9 @@ import com.raizlabs.android.dbflow.structure.ModelAdapter;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Type;
|
||||
import java.net.ConnectException;
|
||||
import java.net.SocketException;
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.net.UnknownHostException;
|
||||
|
|
@ -82,11 +77,9 @@ import java.util.ArrayList;
|
|||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.net.ssl.SSLException;
|
||||
import javax.net.ssl.SSLHandshakeException;
|
||||
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.MediaType;
|
||||
|
|
@ -95,8 +88,6 @@ import okhttp3.Request;
|
|||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
import okio.Buffer;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Converter;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava.HttpException;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,120 @@
|
|||
package com.habitrpg.android.habitica.helpers;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Created by DanielKaparunakis on 9/2/16.
|
||||
*/
|
||||
public class LanguageHelper {
|
||||
|
||||
private Locale locale = null;
|
||||
private String languageCode = null;
|
||||
private boolean languageAvailable = false;
|
||||
|
||||
public LanguageHelper (String languagePreference) {
|
||||
switch (languagePreference){
|
||||
case "en":
|
||||
locale = new Locale("en");
|
||||
languageCode = "en";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "bg":
|
||||
locale = new Locale("bg");
|
||||
languageCode = "bg";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "de":
|
||||
locale = new Locale("de");
|
||||
languageCode = "de";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "en-rGB":
|
||||
locale = new Locale("en", "GB");
|
||||
languageCode = "en_GB";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "es":
|
||||
locale = new Locale("es");
|
||||
languageCode = "es";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "fr":
|
||||
locale = new Locale("fr");
|
||||
languageCode = "fr";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "iw":
|
||||
locale = new Locale("iw");
|
||||
languageCode = "he";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "hr":
|
||||
locale = new Locale("hr", "HR");
|
||||
languageCode = "hu";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "in":
|
||||
locale = new Locale("in");
|
||||
languageCode = "id";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "it":
|
||||
locale = new Locale("it");
|
||||
languageCode = "it";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "ja":
|
||||
locale = new Locale("ja");
|
||||
languageCode = "ja";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "nl":
|
||||
locale = new Locale("nl");
|
||||
languageCode = "nl";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "pl":
|
||||
locale = new Locale("pl");
|
||||
languageCode = "pl";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "pt":
|
||||
locale = new Locale("pt","PT");
|
||||
languageCode = "pt";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "pt-rBR":
|
||||
locale = new Locale("pt","BR");
|
||||
languageCode = "pt_BR";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "ru":
|
||||
locale = new Locale("ru");
|
||||
languageCode = "ru";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "zh":
|
||||
locale = new Locale("zh");
|
||||
languageCode = "zh";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
case "zh-rTW":
|
||||
locale = new Locale("zh","TW");
|
||||
languageCode = "zh_TW";
|
||||
languageAvailable = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isLanguageAvailable() {
|
||||
return languageAvailable;
|
||||
}
|
||||
|
||||
public String getLanguageCode() {
|
||||
return languageCode;
|
||||
}
|
||||
|
||||
public Locale getLocale() {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.facebook.AccessToken;
|
||||
import com.facebook.CallbackManager;
|
||||
import com.facebook.FacebookCallback;
|
||||
import com.facebook.FacebookException;
|
||||
import com.facebook.login.LoginResult;
|
||||
import com.facebook.login.widget.LoginButton;
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator;
|
||||
import com.habitrpg.android.habitica.prefs.scanner.IntentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
|
|
@ -40,6 +20,26 @@ import android.widget.ProgressBar;
|
|||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.facebook.AccessToken;
|
||||
import com.facebook.CallbackManager;
|
||||
import com.facebook.FacebookCallback;
|
||||
import com.facebook.FacebookException;
|
||||
import com.facebook.login.LoginResult;
|
||||
import com.facebook.login.widget.LoginButton;
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator;
|
||||
import com.habitrpg.android.habitica.prefs.scanner.IntentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
|
|
@ -20,15 +28,8 @@ import org.greenrobot.eventbus.Subscribe;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
|
|
@ -149,6 +150,11 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
if (v == this.nextButton) {
|
||||
String currentDeviceLanguage = Locale.getDefault().getLanguage();
|
||||
apiHelper.apiService.registrationLanguage(currentDeviceLanguage)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {
|
||||
});
|
||||
if (this.pager.getCurrentItem() == 1) {
|
||||
List<Task> newTasks = this.taskSetupFragment.createSampleTasks();
|
||||
this.completedSetup = true;
|
||||
|
|
|
|||
|
|
@ -6,17 +6,18 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
import android.util.Log;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
|
||||
import com.habitrpg.android.habitica.helpers.LanguageHelper;
|
||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager;
|
||||
import com.habitrpg.android.habitica.prefs.TimePreference;
|
||||
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
|
||||
|
|
@ -204,98 +205,25 @@ public class PreferencesFragment extends BasePreferencesFragment implements
|
|||
pushNotificationManager.removePushDeviceUsingStoredToken();
|
||||
}
|
||||
} else if (key.equals("language")) {
|
||||
Locale locale = null;
|
||||
String languageCode = null;
|
||||
Log.v("test",sharedPreferences.getString(key,"0"));
|
||||
switch (sharedPreferences.getString(key,"en")){
|
||||
case "en":
|
||||
locale = new Locale("en");
|
||||
languageCode = "en";
|
||||
break;
|
||||
case "bg":
|
||||
locale = new Locale("bg");
|
||||
languageCode = "bg";
|
||||
break;
|
||||
case "de":
|
||||
locale = new Locale("de");
|
||||
languageCode = "de";
|
||||
break;
|
||||
case "en-rGB":
|
||||
locale = new Locale("en", "GB");
|
||||
languageCode = "en_GB";
|
||||
break;
|
||||
case "es":
|
||||
locale = new Locale("es");
|
||||
languageCode = "es";
|
||||
break;
|
||||
case "fr":
|
||||
locale = new Locale("fr");
|
||||
languageCode = "fr";
|
||||
break;
|
||||
case "iw":
|
||||
locale = new Locale("iw");
|
||||
languageCode = "he";
|
||||
break;
|
||||
case "hr-rHR":
|
||||
locale = new Locale("hr", "HR");
|
||||
languageCode = "hu";
|
||||
break;
|
||||
case "in":
|
||||
locale = new Locale("in");
|
||||
languageCode = "id";
|
||||
break;
|
||||
case "it":
|
||||
locale = new Locale("it");
|
||||
languageCode = "it";
|
||||
break;
|
||||
case "ja":
|
||||
locale = new Locale("ja");
|
||||
languageCode = "ja";
|
||||
break;
|
||||
case "nl":
|
||||
locale = new Locale("nl");
|
||||
languageCode = "nl";
|
||||
break;
|
||||
case "pl":
|
||||
locale = new Locale("pl");
|
||||
languageCode = "pl";
|
||||
break;
|
||||
case "pt-rPT":
|
||||
locale = new Locale("pt","PT");
|
||||
languageCode = "pt";
|
||||
break;
|
||||
case "pt-rBR":
|
||||
locale = new Locale("pt","BR");
|
||||
languageCode = "pt_BR";
|
||||
break;
|
||||
case "ru":
|
||||
locale = new Locale("ru");
|
||||
languageCode = "ru";
|
||||
break;
|
||||
case "zh":
|
||||
locale = new Locale("zh");
|
||||
languageCode = "zh";
|
||||
break;
|
||||
case "zh-rTW":
|
||||
locale = new Locale("zh","TW");
|
||||
languageCode = "zh_TW";
|
||||
break;
|
||||
LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString(key,"en"));
|
||||
Locale.setDefault(languageHelper.getLocale());
|
||||
Configuration configuration = new Configuration();
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN){
|
||||
configuration.locale = languageHelper.getLocale();
|
||||
} else {
|
||||
configuration.setLocale(languageHelper.getLocale());
|
||||
}
|
||||
|
||||
Locale.setDefault(locale);
|
||||
Configuration configuration = new Configuration();
|
||||
configuration.locale = locale;
|
||||
getActivity().getResources().updateConfiguration(configuration,
|
||||
getActivity().getResources().getDisplayMetrics());
|
||||
|
||||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put("preferences.language", languageCode);
|
||||
updateData.put("preferences.language", languageHelper.getLanguageCode());
|
||||
apiHelper.apiService.updateUser(updateData)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(activity, user), throwable -> {
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.DELETE;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Header;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.PUT;
|
||||
import retrofit2.http.Path;
|
||||
|
|
@ -57,6 +57,9 @@ public interface ApiService {
|
|||
@PUT("user/")
|
||||
Observable<HabitRPGUser> updateUser(@Body Map<String, Object> updateDictionary);
|
||||
|
||||
@PUT("user/")
|
||||
Observable<HabitRPGUser> registrationLanguage(@Header("Accept-Language") String registrationLanguage);
|
||||
|
||||
@GET("user/inventory/buy")
|
||||
Observable<List<ItemData>> getInventoryBuyableGear();
|
||||
|
||||
|
|
@ -128,7 +131,6 @@ public interface ApiService {
|
|||
@DELETE("tags/{id}")
|
||||
Observable<Void> deleteTag(@Path("id") String id);
|
||||
|
||||
|
||||
@POST("user/auth/local/register")
|
||||
Observable<UserAuthResponse> registerUser(@Body UserAuth auth);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue