From d2d8cb597fcee8e36ff7464352b5eff6c3a975bb Mon Sep 17 00:00:00 2001 From: Daniel Kaparunakis Date: Mon, 5 Sep 2016 23:24:06 -0500 Subject: [PATCH] Refactor: Modify LanguageHelper class to simplify switch block This commit simplifies the LanguageHelper class switch block. The original switch had 18 or so initial cases, most of which could be reduced to two general cases. The two general cases have been impletemented as the default. --- Habitica/res/values/values.xml | 6 +- .../habitica/helpers/LanguageHelper.java | 82 +++---------------- .../habitica/ui/activities/SetupActivity.java | 12 ++- .../preferences/PreferencesFragment.java | 10 +++ 4 files changed, 33 insertions(+), 77 deletions(-) diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index 031e924dd..d2354bad0 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -59,7 +59,7 @@ en bg de - en-rGB + en_GB es fr iw @@ -70,10 +70,10 @@ nl pl pt - pt-rBR + pt_BR ru zh - zh-rTW + zh_TW diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java index 890b75679..722e8733f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java @@ -11,38 +11,10 @@ public class LanguageHelper { 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; + + public LanguageHelper (String languageSharedPref) { + + switch (languageSharedPref){ case "iw": locale = new Locale("iw"); languageCode = "he"; @@ -58,49 +30,19 @@ public class LanguageHelper { 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"; + default: + if (languageSharedPref.contains("_")) { + String[] languageCodeParts = languageSharedPref.split("_"); + locale = new Locale(languageCodeParts[0],languageCodeParts[1]); + } else { + locale = new Locale(languageSharedPref); + } + languageCode = languageSharedPref; languageAvailable = true; break; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 649aacefd..2bee55590 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.callbacks.MergeUserCallback; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; +import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment; import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; @@ -151,10 +152,13 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, 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 -> { - }); + LanguageHelper languageHelper = new LanguageHelper(currentDeviceLanguage); + if (languageHelper.isLanguageAvailable()){ + apiHelper.apiService.registrationLanguage(currentDeviceLanguage) + .compose(apiHelper.configureApiCallObserver()) + .subscribe(new MergeUserCallback(this, user), throwable -> { + }); + } if (this.pager.getCurrentItem() == 1) { List newTasks = this.taskSetupFragment.createSampleTasks(); this.completedSetup = true; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java index e60ad8a10..21596e51f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java @@ -224,6 +224,16 @@ public class PreferencesFragment extends BasePreferencesFragment implements .compose(apiHelper.configureApiCallObserver()) .subscribe(new MergeUserCallback(activity, user), throwable -> { }); + + if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){ + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + } else { + Intent intent = new Intent(getActivity(), MainActivity.class); + this.startActivity(intent); + getActivity().finishAffinity(); + } } }