better handling for dailyDueDefaultView setting

This commit is contained in:
Phillip Thelen 2017-04-15 18:05:50 +02:00
parent 90900858b3
commit 11c3f2ba2e
8 changed files with 38 additions and 36 deletions

View file

@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:background="@color/brand">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
@ -45,6 +47,8 @@
android:layout_marginBottom="6dp"
android:background="@color/transparent"
android:textColor="@android:color/white"
android:visibility="gone" />
android:textSize="16sp"
android:visibility="gone"
tools:visibility="visible"/>
</RelativeLayout>
</FrameLayout>

View file

@ -210,8 +210,8 @@
<string name="intro_2_subtitle">Progress in the game</string>
<string name="intro_2_title">Progress in life</string>
<string name="intro_2_description">Unlock features in the game by checking off your real life tasks. Earn armor, pets, and more as rewards for meeting your goals.</string>
<string name="intro_3_subtitle">Get social</string>
<string name="intro_3_title">Fight monsters</string>
<string name="intro_3_subtitle">Fight monsters</string>
<string name="intro_3_title">Get social</string>
<string name="intro_3_description">Keep your goals on track with help from your friends. Support each other in life and in battle as you improve together!</string>
<string name="intro_finish_button">Let\'s start!</string>
<string name="previous_button">Previous</string>
@ -551,7 +551,7 @@
<string name="avatar_wheelchair">Wheelchair</string>
<string name="weak">Weak</string>
<string name="strong">Strong</string>
<string name="gray">Gray</string>
<string name="gray">Grey</string>
<string name="dated">Dated</string>
<string name="completed">Completed</string>
<string name="setuP_group_other">Other</string>
@ -567,4 +567,6 @@
<string name="read_community_guidelines">Please read our Community Guidelines before posting</string>
<string name="maintenance">Maintenance</string>
<string name="reload_content">Reload Content</string>
<string name="dailyDueDefaultView">Set Dailies default to due tab</string>
<string name="dailyDueDefaultViewDescription">With this option set, the Dailies tasks will default to due instead of all</string>
</resources>

View file

@ -85,6 +85,11 @@
android:entryValues="@array/AudioValues"
android:summary="@string/AudioTheme_summary"
android:order="3"/>
<CheckBoxPreference android:title="@string/dailyDueDefaultView"
android:key="dailyDueDefaultView"
android:order="6"
android:summary="@string/dailyDueDefaultViewDescription"
/>
<Preference android:title="@string/logout"
android:key="logout"
android:summary="@string/logout_description"

View file

@ -12,6 +12,7 @@ public interface UserRepository extends BaseRepository {
Observable<HabitRPGUser> getUser(String userID);
Observable<HabitRPGUser> updateUser(HabitRPGUser user, Map<String, Object> updateData);
Observable<HabitRPGUser> updateUser(HabitRPGUser user, String key, Object value);
Observable<HabitRPGUser> retrieveUser(Boolean withTasks);

View file

@ -31,6 +31,13 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserLocalRepository>
.map(newUser -> mergeUser(user, newUser));
}
@Override
public Observable<HabitRPGUser> updateUser(HabitRPGUser user, String key, Object value) {
Map<String, Object> updateData = new HashMap<>();
updateData.put(key, value);
return updateUser(user, updateData);
}
@Override
public Observable<HabitRPGUser> retrieveUser(Boolean withTasks) {
return apiClient.retrieveUser(withTasks)

View file

@ -30,6 +30,9 @@ public class TaskFilterHelper {
}
private boolean isTaskFilterActive(String type) {
if (activeFilters.get(type) == null) {
return false;
}
if (Task.TYPE_TODO.equals(type)) {
return !Task.FILTER_ACTIVE.equals(activeFilters.get(type));
} else {

View file

@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.HabiticaApplication;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
import com.habitrpg.android.habitica.data.UserRepository;
import com.habitrpg.android.habitica.events.commands.RefreshUserCommand;
import com.habitrpg.android.habitica.helpers.LanguageHelper;
import com.habitrpg.android.habitica.helpers.SoundManager;
@ -45,7 +46,8 @@ public class PreferencesFragment extends BasePreferencesFragment implements
public ApiClient apiClient;
@Inject
public SoundManager soundManager;
public MainActivity activity;
@Inject
UserRepository userRepository;
private Context context;
private TimePreference timePreference;
private PreferenceScreen pushNotificationsPreference;
@ -202,13 +204,8 @@ public class PreferencesFragment extends BasePreferencesFragment implements
}
getActivity().getResources().updateConfiguration(configuration,
getActivity().getResources().getDisplayMetrics());
Map<String, Object> updateData = new HashMap<>();
updateData.put("preferences.language", languageHelper.getLanguageCode());
apiClient.updateUser(updateData)
.subscribe(new MergeUserCallback(activity, user), throwable -> {
});
userRepository.updateUser(user, "preferences.language", languageHelper.getLanguageCode())
.subscribe(habitRPGUser -> {}, throwable -> {});
Preferences preferences = user.getPreferences();
preferences.setLanguage(languageHelper.getLanguageCode());
@ -231,12 +228,8 @@ public class PreferencesFragment extends BasePreferencesFragment implements
} else if (key.equals("audioTheme")) {
String newAudioTheme = sharedPreferences.getString(key, "off");
Map<String, Object> updateData = new HashMap<>();
updateData.put("preferences.sound", newAudioTheme);
MergeUserCallback mergeUserCallback = new MergeUserCallback(activity, user);
apiClient.updateUser(updateData)
.subscribe(mergeUserCallback, throwable -> {
userRepository.updateUser(user, "preferences.sound", newAudioTheme)
.subscribe(habitRPGUser -> {}, throwable -> {
});
Preferences preferences = user.getPreferences();
@ -245,6 +238,9 @@ public class PreferencesFragment extends BasePreferencesFragment implements
soundManager.setSoundTheme(newAudioTheme);
soundManager.preloadAllFiles();
} else if (key.equals("dailyDueDefaultView")) {
userRepository.updateUser(user, "preferences.dailyDueDefaultView", sharedPreferences.getBoolean(key, false))
.subscribe(habitRPGUser -> {}, throwable -> {});
}
}
@ -288,6 +284,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements
if (user != null && user.getPreferences() != null) {
TimePreference cdsTimePreference = (TimePreference) findPreference("cds_time");
cdsTimePreference.setText(user.getPreferences().getDayStart() + ":00");
findPreference("dailyDueDefaultView").setDefaultValue(user.getPreferences().getDailyDueDefaultView());
}
}
}

View file

@ -186,10 +186,6 @@ public class TasksFragment extends BaseMainFragment {
}
if (getActiveFragment() != null) {
getActiveFragment().setActiveFilter(activeTaskFilter);
if (Task.TYPE_DAILY.equals(getActiveFragment().classType)) {
updateDailyDueDefaultSetting(activeTaskFilter);
}
}
taskFilterHelper.setTags(activeTags);
updateFilterIcon();
@ -198,19 +194,6 @@ public class TasksFragment extends BaseMainFragment {
dialog.show();
}
private void updateDailyDueDefaultSetting(String activeTaskFilter) {
Boolean showDueDefault = Task.FILTER_ACTIVE.equals(activeTaskFilter);
if (user != null) {
if (user.getPreferences().getDailyDueDefaultView() != showDueDefault) {
UpdateUserCommand command = new UpdateUserCommand();
Map<String, Object> data = new HashMap<>();
data.put("preferences.dailyDueDefaultView", showDueDefault);
command.updateData = data;
EventBus.getDefault().post(command);
}
}
}
public void refresh() {
if (getActiveFragment() != null) {
getActiveFragment().onRefresh();