mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-19 04:09:03 +00:00
update dailies before showing yesterdaily dialog
This commit is contained in:
parent
7d1db6c8a3
commit
812874b342
11 changed files with 71 additions and 5 deletions
|
|
@ -2,7 +2,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.habitrpg.android.habitica"
|
||||
android:versionCode="1897"
|
||||
android:versionCode="1899"
|
||||
android:versionName="1.1"
|
||||
android:screenOrientation="portrait"
|
||||
android:installLocation="auto" >
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<string name="SP_APIToken" translatable="false">APIToken</string>
|
||||
<string name="SP_username" translatable="false">Username</string>
|
||||
<string name="SP_email" translatable="false">E-mail</string>
|
||||
<string name="base_url" translatable="false">https://habitica.com</string>
|
||||
<string name="base_url" translatable="false">https://habitrpg-beta.herokuapp.com</string>
|
||||
|
||||
<!-- Local notification actions -->
|
||||
<string name="accept_party_invite" translatable="false">ACCEPT_PARTY_INVITE</string>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import com.habitrpg.android.habitica.models.tasks.TaskList;
|
|||
import com.habitrpg.android.habitica.models.user.Items;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -98,6 +99,13 @@ public interface ApiService {
|
|||
@GET("tasks/user")
|
||||
Observable<HabitResponse<TaskList>> getTasks();
|
||||
|
||||
@GET("tasks/user")
|
||||
Observable<HabitResponse<TaskList>> getTasks(@Query("type") String type);
|
||||
|
||||
@GET("tasks/user")
|
||||
Observable<HabitResponse<TaskList>> getTasks(@Query("type") String type, @Query("dueDate") Date dueDate);
|
||||
|
||||
|
||||
@POST("user/unlock")
|
||||
Observable<HabitResponse<UnlockResponse>> unlockPath(@Query("path") String path);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.habitrpg.android.habitica.models.tasks.TaskList;
|
|||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.models.user.Items;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -76,6 +77,9 @@ public interface ApiClient {
|
|||
|
||||
|
||||
Observable<TaskList> getTasks();
|
||||
Observable<TaskList> getTasks(String type);
|
||||
Observable<TaskList> getTasks(String type, Date dueDate);
|
||||
|
||||
|
||||
Observable<UnlockResponse> unlockPath(String path);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.habitrpg.android.habitica.data;
|
||||
|
||||
import com.google.android.gms.tasks.Tasks;
|
||||
import com.habitrpg.android.habitica.models.responses.TaskDirectionData;
|
||||
import com.habitrpg.android.habitica.models.responses.TaskScoringResult;
|
||||
import com.habitrpg.android.habitica.models.tasks.ChecklistItem;
|
||||
|
|
@ -10,6 +11,7 @@ import com.habitrpg.android.habitica.models.tasks.TaskTag;
|
|||
import com.habitrpg.android.habitica.models.tasks.TasksOrder;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import io.realm.Realm;
|
||||
|
|
@ -21,7 +23,8 @@ public interface TaskRepository extends BaseRepository {
|
|||
Observable<RealmResults<Task>> getTasks(String userId);
|
||||
void saveTasks(String userId, TasksOrder order, TaskList tasks);
|
||||
|
||||
Observable<TaskList> refreshTasks(TasksOrder tasksOrder);
|
||||
Observable<TaskList> retrieveTasks(String userId, TasksOrder tasksOrder);
|
||||
Observable<TaskList> retrieveTasks(String userId, TasksOrder tasksOrder, Date dueDate);
|
||||
|
||||
Observable<TaskScoringResult> taskChecked(User user, Task task, boolean up, boolean force);
|
||||
Observable<TaskScoringResult> taskChecked(User user, String taskId, boolean up, boolean force);
|
||||
|
|
@ -55,4 +58,6 @@ public interface TaskRepository extends BaseRepository {
|
|||
Observable<List<Task>> getTaskCopies(String userId);
|
||||
|
||||
Observable<List<Task>> getTaskCopies(RealmResults<Task> tasks1);
|
||||
|
||||
Observable<TaskList> updateDailiesIsDue(Date date);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -501,6 +501,18 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
|
|||
return apiService.getTasks().compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskList> getTasks(String type) {
|
||||
return apiService.getTasks(type).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Observable<TaskList> getTasks(String type, Date dueDate) {
|
||||
return apiService.getTasks(type, dueDate).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Observable<UnlockResponse> unlockPath(String path) {
|
||||
return apiService.unlockPath(path).compose(configureApiCallObserver());
|
||||
|
|
|
|||
|
|
@ -47,9 +47,15 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskList> refreshTasks(TasksOrder tasksOrder) {
|
||||
public Observable<TaskList> retrieveTasks(String userId, TasksOrder tasksOrder) {
|
||||
return this.apiClient.getTasks()
|
||||
.doOnNext(res -> this.localRepository.saveTasks(null, tasksOrder, res));
|
||||
.doOnNext(res -> this.localRepository.saveTasks(userId, tasksOrder, res));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskList> retrieveTasks(String userId, TasksOrder tasksOrder, Date dueDate) {
|
||||
return this.apiClient.getTasks("dailys", dueDate)
|
||||
.doOnNext(res -> this.localRepository.saveTasks(userId, tasksOrder, res));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -217,4 +223,10 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
|
|||
public Observable<List<Task>> getTaskCopies(RealmResults<Task> tasks) {
|
||||
return Observable.just(localRepository.getUnmanagedCopy(tasks));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<TaskList> updateDailiesIsDue(Date date) {
|
||||
return apiClient.getTasks("dailys", date)
|
||||
.doOnNext(localRepository::updateIsdue);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,4 +33,6 @@ public interface TaskLocalRepository extends BaseLocalRepository {
|
|||
void swapTaskPosition(int firstPosition, int secondPosition);
|
||||
|
||||
Observable<Task> getTaskAtPosition(int currentPosition);
|
||||
|
||||
void updateIsdue(TaskList daily);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -187,4 +187,16 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement
|
|||
.filter(realmObject -> realmObject.isLoaded())
|
||||
.cast(Task.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateIsdue(TaskList dailies) {
|
||||
RealmResults<Task> tasks = realm.where(Task.class).equalTo("type", "daily").findAll();
|
||||
realm.executeTransaction(realm1 -> {
|
||||
for (Task task : tasks) {
|
||||
if (dailies.tasks.containsKey(task.getId())) {
|
||||
task.isDue = dailies.tasks.get(task.getId()).isDue;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -459,6 +459,9 @@ public class User extends RealmObject {
|
|||
}
|
||||
|
||||
public Boolean getNeedsCron() {
|
||||
if (needsCron == null) {
|
||||
return false;
|
||||
}
|
||||
return needsCron;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
|||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindColor;
|
||||
|
|
@ -101,6 +103,12 @@ public class YesterdailyDialog extends AlertDialog {
|
|||
if (userRepository != null && userId != null) {
|
||||
userRepository.getUser(userId).first()
|
||||
.filter(user -> user != null && user.getNeedsCron() != null && user.getNeedsCron())
|
||||
.filter(user -> user != null)
|
||||
.flatMap(user -> {
|
||||
final Calendar cal = Calendar.getInstance();
|
||||
cal.add(Calendar.DATE, -1);
|
||||
return taskRepository.updateDailiesIsDue(cal.getTime());
|
||||
})
|
||||
.flatMap(user -> taskRepository.getTasks(Task.TYPE_DAILY, userId).first())
|
||||
.map(tasks -> tasks.where().equalTo("isDue", true).equalTo("completed", false).equalTo("yesterDaily", true).findAll())
|
||||
.flatMap(taskRepository::getTaskCopies)
|
||||
|
|
|
|||
Loading…
Reference in a new issue