mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-19 20:29:02 +00:00
Improve cron. Fixes #1380
This commit is contained in:
parent
81a9065e00
commit
de34a41ef4
7 changed files with 49 additions and 1 deletions
|
|
@ -103,6 +103,8 @@ interface ApiService {
|
|||
|
||||
@POST("tasks/{id}/score/{direction}")
|
||||
fun postTaskDirection(@Path("id") id: String, @Path("direction") direction: String): Flowable<HabitResponse<TaskDirectionData>>
|
||||
@POST("tasks/bulk-score")
|
||||
fun bulkScoreTasks(@Body data: List<Map<String, String>>): Flowable<HabitResponse<BulkTaskScoringData>>
|
||||
|
||||
@POST("tasks/{id}/move/to/{position}")
|
||||
fun postTaskNewPosition(@Path("id") id: String, @Path("position") position: Int): Flowable<HabitResponse<List<String>>>
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ interface ApiClient {
|
|||
fun getTask(id: String): Flowable<Task>
|
||||
|
||||
fun postTaskDirection(id: String, direction: String): Flowable<TaskDirectionData>
|
||||
fun bulkScoreTasks(data: List<Map<String, String>>): Flowable<BulkTaskScoringData>
|
||||
|
||||
fun postTaskNewPosition(id: String, position: Int): Flowable<List<String>>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.habitrpg.android.habitica.data
|
||||
|
||||
import com.habitrpg.android.habitica.models.BaseObject
|
||||
import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData
|
||||
import com.habitrpg.android.habitica.models.responses.TaskScoringResult
|
||||
import com.habitrpg.android.habitica.models.tasks.RemindersItem
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
|
|
@ -62,4 +63,5 @@ interface TaskRepository : BaseRepository {
|
|||
fun syncErroredTasks(): Single<List<Task>>
|
||||
fun unlinkAllTasks(challengeID: String?, keepOption: String): Flowable<Void>
|
||||
fun getTasksForChallenge(challengeID: String?): Flowable<RealmResults<Task>>
|
||||
fun bulkScoreTasks(data: List<Map<String, String>>): Flowable<BulkTaskScoringData>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -421,6 +421,10 @@ class ApiClientImpl//private OnHabitsAPIResult mResultListener;
|
|||
return apiService.postTaskDirection(id, direction).compose(configureApiCallObserver())
|
||||
}
|
||||
|
||||
override fun bulkScoreTasks(data: List<Map<String, String>>): Flowable<BulkTaskScoringData> {
|
||||
return apiService.bulkScoreTasks(data).compose(configureApiCallObserver())
|
||||
}
|
||||
|
||||
override fun postTaskNewPosition(id: String, position: Int): Flowable<List<String>> {
|
||||
return apiService.postTaskNewPosition(id, position).compose(configureApiCallObserver())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.habitrpg.android.habitica.helpers.AppConfigManager
|
|||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.interactors.ScoreTaskLocallyInteractor
|
||||
import com.habitrpg.android.habitica.models.BaseObject
|
||||
import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData
|
||||
import com.habitrpg.android.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.android.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.android.habitica.models.responses.TaskScoringResult
|
||||
|
|
@ -118,6 +119,10 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli
|
|||
}
|
||||
}
|
||||
|
||||
override fun bulkScoreTasks(data: List<Map<String, String>>): Flowable<BulkTaskScoringData> {
|
||||
return apiClient.bulkScoreTasks(listOf())
|
||||
}
|
||||
|
||||
private fun handleTaskResponse(user: User, res: TaskDirectionData, task: Task, up: Boolean, localDelta: Float) {
|
||||
this.localRepository.executeTransaction {
|
||||
val bgTask = localRepository.getLiveObject(task) ?: return@executeTransaction
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.habitrpg.android.habitica.models.TeamPlan
|
|||
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.TaskDirection
|
||||
import com.habitrpg.android.habitica.models.responses.UnlockResponse
|
||||
import com.habitrpg.android.habitica.models.responses.VerifyUsernameResponse
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
|
|
@ -287,9 +288,14 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli
|
|||
user
|
||||
}
|
||||
if (tasks.isNotEmpty()) {
|
||||
val scoringList = mutableListOf<Map<String, String>>()
|
||||
for (task in tasks) {
|
||||
observable = observable.flatMap { taskRepository.taskChecked(null, task, true, true, null).firstElement() }
|
||||
val map = mutableMapOf<String, String>()
|
||||
map["id"] = task.id ?: ""
|
||||
map["direction"] = TaskDirection.UP.text
|
||||
scoringList.add(map)
|
||||
}
|
||||
observable = observable.flatMap { taskRepository.bulkScoreTasks(scoringList).firstElement() }
|
||||
}
|
||||
observable.flatMap { apiClient.runCron().firstElement() }
|
||||
.flatMap { this.retrieveUser(withTasks = true, forced = true).firstElement() }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
package com.habitrpg.android.habitica.models.responses
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.habitrpg.android.habitica.models.user.Buffs
|
||||
import com.habitrpg.android.habitica.models.user.Training
|
||||
|
||||
class BulkTaskScoringData {
|
||||
@SerializedName("con")
|
||||
var constitution: Int? = null
|
||||
@SerializedName("str")
|
||||
var strength: Int? = null
|
||||
@SerializedName("per")
|
||||
var per: Int? = null
|
||||
@SerializedName("int")
|
||||
var intelligence: Int? = null
|
||||
var training: Training? = null
|
||||
var buffs: Buffs? = null
|
||||
var points: Int? = null
|
||||
var lvl: Int? = null
|
||||
@SerializedName("class")
|
||||
var habitClass: String? = null
|
||||
var gp: Double? = null
|
||||
var exp: Double? = null
|
||||
var mp: Double? = null
|
||||
var hp: Double? = null
|
||||
|
||||
var tasks: List<TaskDirectionData> = listOf()
|
||||
}
|
||||
Loading…
Reference in a new issue