mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-08 05:26:10 +00:00
improve yesterdailies behaviour
This commit is contained in:
parent
7f3df64217
commit
45ee45ff17
10 changed files with 26 additions and 24 deletions
|
|
@ -23,8 +23,8 @@ public interface TaskRepository extends BaseRepository {
|
|||
|
||||
Observable<TaskList> refreshTasks(TasksOrder tasksOrder);
|
||||
|
||||
Observable<TaskScoringResult> taskChecked(User user, Task task, boolean up);
|
||||
Observable<TaskScoringResult> taskChecked(User user, String taskId, boolean up);
|
||||
Observable<TaskScoringResult> taskChecked(User user, Task task, boolean up, boolean force);
|
||||
Observable<TaskScoringResult> taskChecked(User user, String taskId, boolean up, boolean force);
|
||||
Observable<Task> scoreChecklistItem(String taskId, String itemId);
|
||||
|
||||
Observable<Task> getTask(String taskId);
|
||||
|
|
|
|||
|
|
@ -53,9 +53,9 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskScoringResult> taskChecked(@Nullable User user, Task task, boolean up) {
|
||||
public Observable<TaskScoringResult> taskChecked(@Nullable User user, Task task, boolean up, boolean force) {
|
||||
long now = new Date().getTime();
|
||||
if (lastTaskAction > now-500) {
|
||||
if (lastTaskAction > now-500 || force) {
|
||||
return Observable.just(null);
|
||||
}
|
||||
lastTaskAction = now;
|
||||
|
|
@ -95,9 +95,9 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskScoringResult> taskChecked(User user, String taskId, boolean up) {
|
||||
public Observable<TaskScoringResult> taskChecked(User user, String taskId, boolean up, boolean force) {
|
||||
return localRepository.getTask(taskId)
|
||||
.flatMap(task -> taskChecked(user, task, up));
|
||||
.flatMap(task -> taskChecked(user, task, up, force));
|
||||
}
|
||||
|
||||
public Observable<Task> scoreChecklistItem(String taskId, String itemId){
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.habitrpg.android.habitica.models.TutorialStep;
|
|||
import com.habitrpg.android.habitica.models.inventory.Customization;
|
||||
import com.habitrpg.android.habitica.models.inventory.CustomizationSet;
|
||||
import com.habitrpg.android.habitica.models.responses.SkillResponse;
|
||||
import com.habitrpg.android.habitica.models.responses.TaskScoringResult;
|
||||
import com.habitrpg.android.habitica.models.responses.UnlockResponse;
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
|
|
@ -212,11 +213,17 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserLocalRepository>
|
|||
|
||||
@Override
|
||||
public void runCron(List<Task> tasks) {
|
||||
Observable.from(tasks)
|
||||
.flatMap(task -> taskRepository.taskChecked(null, task, true))
|
||||
.toList()
|
||||
.flatMap(taskScoringResults -> apiClient.runCron())
|
||||
.flatMap(aVoid -> this.retrieveUser(true));
|
||||
Observable<List<TaskScoringResult>> observable;
|
||||
if (tasks.size() > 0) {
|
||||
observable = Observable.from(tasks)
|
||||
.flatMap(task -> taskRepository.taskChecked(null, task, true, true))
|
||||
.toList();
|
||||
} else {
|
||||
observable = Observable.just(null);
|
||||
}
|
||||
observable.flatMap(taskScoringResults -> apiClient.runCron())
|
||||
.flatMap(aVoid -> this.retrieveUser(true))
|
||||
.subscribe(user -> {}, RxErrorHandler.handleEmptyError());
|
||||
}
|
||||
|
||||
private User mergeUser(User oldUser, User newUser) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class BuyRewardUseCase extends UseCase<BuyRewardUseCase.RequestValues, Ta
|
|||
@Override
|
||||
protected Observable<TaskScoringResult> buildUseCaseObservable(BuyRewardUseCase.RequestValues requestValues) {
|
||||
return taskRepository
|
||||
.taskChecked(requestValues.user, requestValues.task, false)
|
||||
.taskChecked(requestValues.user, requestValues.task, false, false)
|
||||
.doOnNext(res -> soundManager.loadAndPlayAudio(SoundManager.SoundReward));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,7 @@ public class DailyCheckUseCase extends UseCase<DailyCheckUseCase.RequestValues,
|
|||
|
||||
@Override
|
||||
protected Observable<TaskScoringResult> buildUseCaseObservable(RequestValues requestValues) {
|
||||
return taskRepository.taskChecked(requestValues.user, requestValues.task, requestValues.up).doOnNext(res -> {
|
||||
|
||||
soundManager.loadAndPlayAudio(SoundManager.SoundDaily);
|
||||
});
|
||||
return taskRepository.taskChecked(requestValues.user, requestValues.task, requestValues.up, false).doOnNext(res -> soundManager.loadAndPlayAudio(SoundManager.SoundDaily));
|
||||
}
|
||||
|
||||
public static final class RequestValues implements UseCase.RequestValues {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class HabitScoreUseCase extends UseCase<HabitScoreUseCase.RequestValues,
|
|||
@Override
|
||||
protected Observable<TaskScoringResult> buildUseCaseObservable(RequestValues requestValues) {
|
||||
return taskRepository
|
||||
.taskChecked(requestValues.user, requestValues.habit, requestValues.up)
|
||||
.taskChecked(requestValues.user, requestValues.habit, requestValues.up, false)
|
||||
.doOnNext(res -> soundManager.loadAndPlayAudio(requestValues.up ? SoundManager.SoundPlusHabit : SoundManager.SoundMinusHabit));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,7 @@ public class TodoCheckUseCase extends UseCase<TodoCheckUseCase.RequestValues, T
|
|||
|
||||
@Override
|
||||
protected Observable<TaskScoringResult> buildUseCaseObservable(TodoCheckUseCase.RequestValues requestValues) {
|
||||
return taskRepository.taskChecked(requestValues.user, requestValues.task, requestValues.up).doOnNext(res -> {
|
||||
|
||||
soundManager.loadAndPlayAudio(SoundManager.SoundTodo);
|
||||
});
|
||||
return taskRepository.taskChecked(requestValues.user, requestValues.task, requestValues.up, false).doOnNext(res -> soundManager.loadAndPlayAudio(SoundManager.SoundTodo));
|
||||
}
|
||||
|
||||
public static final class RequestValues implements UseCase.RequestValues {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class YesterdailyDialog extends AlertDialog {
|
|||
this.setView(view);
|
||||
this.setButton(AlertDialog.BUTTON_POSITIVE,
|
||||
context.getString(R.string.start_day),
|
||||
(dialog, which) -> this.runCron());
|
||||
(dialog, which) -> {});
|
||||
|
||||
this.setOnDismissListener(dialog -> runCron());
|
||||
|
||||
|
|
@ -65,6 +65,7 @@ public class YesterdailyDialog extends AlertDialog {
|
|||
}
|
||||
}
|
||||
userRepository.runCron(completedTasks);
|
||||
isDisplaying = false;
|
||||
}
|
||||
|
||||
private void createTaskViews(LayoutInflater inflater) {
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class HabitButtonWidgetProvider extends BaseWidgetProvider {
|
|||
int[] ids = {appWidgetId};
|
||||
|
||||
if (taskId != null) {
|
||||
userRepository.getUser(userId).flatMap(user -> taskRepository.taskChecked(user, taskId, TaskDirection.up.toString().equals(direction)))
|
||||
userRepository.getUser(userId).flatMap(user -> taskRepository.taskChecked(user, taskId, TaskDirection.up.toString().equals(direction), false))
|
||||
.subscribe(taskDirectionData -> {
|
||||
showToastForTaskDirection(context, taskDirectionData, userId);
|
||||
this.onUpdate(context, mgr, ids);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public abstract class TaskListWidgetProvider extends BaseWidgetProvider {
|
|||
String taskId = intent.getStringExtra(TASK_ID_ITEM);
|
||||
|
||||
if (taskId != null) {
|
||||
userRepository.getUser(userId).flatMap(user -> taskRepository.taskChecked(user, taskId, true))
|
||||
userRepository.getUser(userId).flatMap(user -> taskRepository.taskChecked(user, taskId, true, false))
|
||||
.subscribe(taskDirectionData -> {
|
||||
taskRepository.markTaskCompleted(taskId, true);
|
||||
showToastForTaskDirection(context, taskDirectionData, userId);
|
||||
|
|
|
|||
Loading…
Reference in a new issue