fix task creation

This commit is contained in:
Phillip Thelen 2017-06-20 12:51:41 +02:00
parent 22e564d477
commit 0dc55af208
5 changed files with 16 additions and 16 deletions

View file

@ -114,7 +114,7 @@ public interface ApiService {
Observable<HabitResponse<Task>> scoreChecklistItem(@Path("taskId") String taskId, @Path("itemId") String itemId);
@POST("tasks/user")
Observable<HabitResponse<Task>> createItem(@Body Task item);
Observable<HabitResponse<Task>> createTask(@Body Task item);
@POST("tasks/user")
Observable<HabitResponse<List<Task>>> createTasks(@Body List<Task> tasks);

View file

@ -87,7 +87,7 @@ public interface ApiClient {
Observable<Task> scoreChecklistItem(String taskId, String itemId);
Observable<Task> createItem(Task item);
Observable<Task> createTask(Task item);
Observable<List<Task>> createTasks(List<Task> tasks);

View file

@ -527,8 +527,8 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
}
@Override
public Observable<Task> createItem(Task item) {
return apiService.createItem(item).compose(configureApiCallObserver());
public Observable<Task> createTask(Task item) {
return apiService.createTask(item).compose(configureApiCallObserver());
}
@Override

View file

@ -3,30 +3,22 @@ package com.habitrpg.android.habitica.data.implementation;
import com.habitrpg.android.habitica.data.ApiClient;
import com.habitrpg.android.habitica.data.TaskRepository;
import com.habitrpg.android.habitica.data.local.TaskLocalRepository;
import com.habitrpg.android.habitica.events.TaskCreatedEvent;
import com.habitrpg.android.habitica.events.TaskUpdatedEvent;
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
import com.habitrpg.android.habitica.models.responses.TaskDirection;
import com.habitrpg.android.habitica.models.responses.TaskDirectionData;
import com.habitrpg.android.habitica.models.responses.TaskScoringResult;
import com.habitrpg.android.habitica.models.tasks.ChecklistItem;
import com.habitrpg.android.habitica.models.tasks.RemindersItem;
import com.habitrpg.android.habitica.models.tasks.Task;
import com.habitrpg.android.habitica.models.tasks.TaskList;
import com.habitrpg.android.habitica.models.tasks.TaskTag;
import com.habitrpg.android.habitica.models.tasks.TasksOrder;
import com.habitrpg.android.habitica.models.user.Stats;
import com.habitrpg.android.habitica.models.user.User;
import org.greenrobot.eventbus.EventBus;
import java.util.Date;
import java.util.List;
import io.realm.Realm;
import io.realm.RealmResults;
import rx.Observable;
import rx.functions.Func2;
public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository> implements TaskRepository {
@ -130,8 +122,11 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
return Observable.just(task);
}
lastTaskAction = now;
return localRepository.getTaskCopy(task.getId()).first()
.flatMap(apiClient::createItem)
return apiClient.createTask(task)
.map(task1 -> {
task1.dateCreated = new Date();
return task1;
})
.doOnNext(localRepository::saveTask);
}

View file

@ -149,8 +149,13 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement
@Override
public Observable<Task> getTaskCopy(String taskId) {
return getTask(taskId)
.filter(task -> task.isManaged() && task.isValid())
.map(realm::copyFromRealm);
.map(task -> {
if (task.isManaged() && task.isValid()) {
return realm.copyFromRealm(task);
} else {
return task;
}
});
}
@Override