fix widget issues

This commit is contained in:
Phillip Thelen 2017-06-07 09:31:36 -07:00
parent ed5a5a42c2
commit c2269f0da0
5 changed files with 29 additions and 8 deletions

View file

@ -47,4 +47,8 @@ public interface TaskRepository extends BaseRepository {
Observable<List<String>> updateTaskPosition(int currentPosition);
Observable<Task> getUnmanagedTask(String taskid);
void updateTaskInBackground(Task task);
void createTaskInBackground(Task task);
}

View file

@ -5,6 +5,7 @@ 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;
@ -196,4 +197,14 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl<TaskLocalRepository>
return getTask(taskid)
.map(localRepository::getUnmanagedCopy);
}
@Override
public void updateTaskInBackground(Task task) {
updateTask(task).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError());
}
@Override
public void createTaskInBackground(Task task) {
createTask(task).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError());
}
}

View file

@ -197,7 +197,12 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserLocalRepository>
if (!oldUser.isValid()) {
return oldUser;
}
User copiedUser = localRepository.getUnmanagedCopy(oldUser);
User copiedUser;
if (oldUser.isManaged()) {
copiedUser = localRepository.getUnmanagedCopy(oldUser);
} else {
copiedUser = oldUser;
}
if (newUser.getItems() != null) {
copiedUser.setItems(newUser.getItems());
}

View file

@ -1247,14 +1247,12 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
if (this.saveTask(this.task)) {
//send back to other elements.
Observable<Task> observable;
if (TaskFormActivity.this.task.getId() == null) {
observable = taskRepository.createTask(task);
taskRepository.createTaskInBackground(task);
} else {
observable = taskRepository.updateTask(task);
taskRepository.updateTaskInBackground(task);
}
observable.subscribe(task1 -> {}, RxErrorHandler.handleEmptyError());
}
}

View file

@ -13,6 +13,7 @@ import net.pherth.android.emoji_library.EmojiHandler;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.text.SpannableStringBuilder;
import android.text.style.DynamicDrawableSpan;
import android.widget.RemoteViews;
@ -70,7 +71,8 @@ public abstract class TaskListFactory implements RemoteViewsService.RemoteViewsF
}
private void loadData() {
taskRepository.getTasks(taskType, userID)
Handler mainHandler = new Handler(context.getMainLooper());
mainHandler.post(() -> taskRepository.getTasks(taskType, userID)
.flatMap(Observable::from)
.filter(task -> task.type.equals(Task.TYPE_TODO) || task.isDisplayedActive(customDayStart))
.toList()
@ -79,10 +81,11 @@ public abstract class TaskListFactory implements RemoteViewsService.RemoteViewsF
.first()
.subscribe(tasks -> {
taskList = tasks;
this.reloadData = false;
reloadData = false;
AppWidgetManager.getInstance(context).notifyAppWidgetViewDataChanged(widgetId, R.id.list_view);
taskRepository.close();
}, throwable -> this.reloadData = false);
}, throwable -> reloadData = false));
}