From 013be22cb3db45a80ddf5131f06ddd0d2362a8a5 Mon Sep 17 00:00:00 2001 From: Negue Date: Sun, 13 Dec 2015 01:15:05 +0100 Subject: [PATCH] fix #196 & asyncify TaskScoringCallback --- .../callbacks/TaskScoringCallback.java | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/Habitica/src/com/habitrpg/android/habitica/callbacks/TaskScoringCallback.java b/Habitica/src/com/habitrpg/android/habitica/callbacks/TaskScoringCallback.java index 41a7f6281..178adab18 100644 --- a/Habitica/src/com/habitrpg/android/habitica/callbacks/TaskScoringCallback.java +++ b/Habitica/src/com/habitrpg/android/habitica/callbacks/TaskScoringCallback.java @@ -5,6 +5,8 @@ import android.util.Log; import com.crashlytics.android.Crashlytics; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction; +import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener; import com.raizlabs.android.dbflow.sql.builder.Condition; import com.raizlabs.android.dbflow.sql.language.Select; @@ -25,14 +27,31 @@ public class TaskScoringCallback implements Callback { } @Override - public void success(TaskDirectionData taskDirectionData, Response response) { - Task task = new Select().from(Task.class).where(Condition.column("id").eq(taskId)).querySingle(); - if (!task.type.equals("reward")) { - task.value = task.value + taskDirectionData.getDelta(); + public void success(final TaskDirectionData taskDirectionData, Response response) { + new Select().from(Task.class).where(Condition.column("id").eq(taskId)) + .async() + .querySingle(new TransactionListener() { + @Override + public void onResultReceived(Task task) { + if(task != null && task.type != null && !task.type.equals("reward")) { + task.value = task.value + taskDirectionData.getDelta(); - task.save(); - } - this.mCallback.onTaskDataReceived(taskDirectionData, task); + task.save(); + } + + mCallback.onTaskDataReceived(taskDirectionData, task); + } + + @Override + public boolean onReady(BaseTransaction baseTransaction) { + return true; + } + + @Override + public boolean hasResult(BaseTransaction baseTransaction, Task task) { + return task != null; + } + }); } @Override