diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 65fdae797..0ae55b9db 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -622,4 +622,6 @@ Invitations Started by %s Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner. + Loading... + Reloading Content diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.java index 5e29290db..6fac8e894 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.java @@ -54,4 +54,7 @@ public interface UserRepository extends BaseRepository { Observable readNotification(String id); + Observable changeCustomDayStart(int dayStartTime); + + Observable updateLanguage(User user, String languageCode); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java index b969c68cd..25bab05ad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java @@ -220,6 +220,19 @@ public class UserRepositoryImpl extends BaseRepositoryImpl return apiClient.readNotification(id); } + @Override + public Observable changeCustomDayStart(int dayStartTime) { + Map updateObject = new HashMap<>(); + updateObject.put("dayStart", dayStartTime); + return apiClient.changeCustomDayStart(updateObject); + } + + @Override + public Observable updateLanguage(User user, String languageCode) { + return updateUser(user, "preferences.language", languageCode) + .doOnNext(user1 -> apiClient.setLanguageCode(languageCode)); + } + @Override public void runCron(List tasks) { Observable> observable; 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 dea716737..6eb524e3b 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 @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.preferences; +import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -13,7 +14,7 @@ import android.support.v7.preference.PreferenceScreen; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.data.ApiClient; +import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.helpers.RxErrorHandler; @@ -21,7 +22,6 @@ import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; import com.habitrpg.android.habitica.models.user.User; -import com.habitrpg.android.habitica.models.user.Preferences; import com.habitrpg.android.habitica.prefs.TimePreference; import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity; import com.habitrpg.android.habitica.ui.activities.MainActivity; @@ -38,7 +38,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @Inject - public ApiClient apiClient; + public InventoryRepository inventoryRepository; @Inject public SoundManager soundManager; @Inject @@ -137,7 +137,11 @@ public class PreferencesFragment extends BasePreferencesFragment implements } return true; } else if (preference.getKey().equals("reload_content")) { - apiClient.getContent().subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); + ProgressDialog dialog = ProgressDialog.show(context, context.getString(R.string.reloading_content), null, true); + inventoryRepository.retrieveContent(true).subscribe(contentResult -> dialog.dismiss(), throwable -> { + dialog.dismiss(); + RxErrorHandler.reportError(throwable); + }); } return super.onPreferenceTreeClick(preference); } @@ -172,12 +176,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements String timeval = sharedPreferences.getString("cds_time", "00:00"); String[] pieces = timeval.split(":"); int hour = Integer.parseInt(pieces[0]); - Map updateObject = new HashMap<>(); - updateObject.put("dayStart", hour); - apiClient.changeCustomDayStart(updateObject) - .subscribe(user -> { - }, throwable -> { - }); + userRepository.changeCustomDayStart(hour).subscribe(user -> {}, throwable -> {}); break; case "language": { LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString(key, "en")); @@ -189,14 +188,10 @@ public class PreferencesFragment extends BasePreferencesFragment implements } else { configuration.setLocale(languageHelper.getLocale()); } - getActivity().getResources().updateConfiguration(configuration, - getActivity().getResources().getDisplayMetrics()); - userRepository.updateUser(user, "preferences.language", languageHelper.getLanguageCode()) - .subscribe(habitRPGUser -> { - }, throwable -> { - }); - apiClient.setLanguageCode(languageHelper.getLanguageCode()); - apiClient.getContent().subscribe(contentResult -> {}, throwable -> {}); + getActivity().getResources().updateConfiguration(configuration, getActivity().getResources().getDisplayMetrics()); + userRepository.updateLanguage(user, languageHelper.getLanguageCode()) + .flatMap(user1 -> inventoryRepository.retrieveContent(true)) + .subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { Intent intent = new Intent(getActivity(), MainActivity.class); @@ -207,22 +202,19 @@ public class PreferencesFragment extends BasePreferencesFragment implements this.startActivity(intent); getActivity().finishAffinity(); } - break; } case "audioTheme": { String newAudioTheme = sharedPreferences.getString(key, "off"); userRepository.updateUser(user, "preferences.sound", newAudioTheme) - .subscribe(habitRPGUser -> {}, throwable -> {}); - + .subscribe(habitRPGUser -> {}, RxErrorHandler.handleEmptyError()); soundManager.setSoundTheme(newAudioTheme); - soundManager.preloadAllFiles(); break; } case "dailyDueDefaultView": userRepository.updateUser(user, "preferences.dailyDueDefaultView", sharedPreferences.getBoolean(key, false)) - .subscribe(habitRPGUser -> {}, throwable -> {}); + .subscribe(habitRPGUser -> {}, RxErrorHandler.handleEmptyError()); break; } }