forked from github/wulkanowy-mirror

committed by
Mikołaj Pich

parent
533637d32a
commit
2f24b25399
@ -22,6 +22,9 @@ class PreferencesRepository @Inject constructor(
|
||||
val currentTheme: Int
|
||||
get() = sharedPref.getString(currentThemeKey, "1")?.toInt() ?: 1
|
||||
|
||||
val gradeModifier: Double
|
||||
get() = sharedPref.getString(context.getString(R.string.pref_key_grade_modifier), "0.0")?.toDouble() ?: 0.0
|
||||
|
||||
val serviceEnablesKey: String = context.getString(R.string.pref_key_services_enable)
|
||||
val serviceEnabled: Boolean
|
||||
get() = sharedPref.getBoolean(serviceEnablesKey, true)
|
||||
|
@ -4,10 +4,12 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||
import io.github.wulkanowy.data.ErrorHandler
|
||||
import io.github.wulkanowy.data.db.entities.Grade
|
||||
import io.github.wulkanowy.data.repositories.GradeRepository
|
||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||
import io.github.wulkanowy.data.repositories.SessionRepository
|
||||
import io.github.wulkanowy.ui.base.BasePresenter
|
||||
import io.github.wulkanowy.utils.SchedulersProvider
|
||||
import io.github.wulkanowy.utils.calcAverage
|
||||
import io.github.wulkanowy.utils.changeModifier
|
||||
import io.github.wulkanowy.utils.logEvent
|
||||
import io.github.wulkanowy.utils.valueColor
|
||||
import timber.log.Timber
|
||||
@ -17,7 +19,8 @@ class GradeDetailsPresenter @Inject constructor(
|
||||
private val errorHandler: ErrorHandler,
|
||||
private val schedulers: SchedulersProvider,
|
||||
private val gradeRepository: GradeRepository,
|
||||
private val sessionRepository: SessionRepository
|
||||
private val sessionRepository: SessionRepository,
|
||||
private val preferencesRepository: PreferencesRepository
|
||||
) : BasePresenter<GradeDetailsView>(errorHandler) {
|
||||
|
||||
override fun onAttachView(view: GradeDetailsView) {
|
||||
@ -28,6 +31,7 @@ class GradeDetailsPresenter @Inject constructor(
|
||||
fun onParentViewLoadData(semesterId: Int, forceRefresh: Boolean) {
|
||||
disposable.add(sessionRepository.getSemesters()
|
||||
.flatMap { gradeRepository.getGrades(it.first { item -> item.semesterId == semesterId }, forceRefresh) }
|
||||
.map { it.map { item -> item.changeModifier(preferencesRepository.gradeModifier) } }
|
||||
.map { createGradeItems(it.groupBy { grade -> grade.subject }.toSortedMap()) }
|
||||
.subscribeOn(schedulers.backgroundThread)
|
||||
.observeOn(schedulers.mainThread)
|
||||
|
@ -4,10 +4,12 @@ import io.github.wulkanowy.data.ErrorHandler
|
||||
import io.github.wulkanowy.data.db.entities.GradeSummary
|
||||
import io.github.wulkanowy.data.repositories.GradeRepository
|
||||
import io.github.wulkanowy.data.repositories.GradeSummaryRepository
|
||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||
import io.github.wulkanowy.data.repositories.SessionRepository
|
||||
import io.github.wulkanowy.ui.base.BasePresenter
|
||||
import io.github.wulkanowy.utils.SchedulersProvider
|
||||
import io.github.wulkanowy.utils.calcAverage
|
||||
import io.github.wulkanowy.utils.changeModifier
|
||||
import io.github.wulkanowy.utils.logEvent
|
||||
import java.lang.String.format
|
||||
import java.util.Locale.FRANCE
|
||||
@ -18,6 +20,7 @@ class GradeSummaryPresenter @Inject constructor(
|
||||
private val gradeSummaryRepository: GradeSummaryRepository,
|
||||
private val gradeRepository: GradeRepository,
|
||||
private val sessionRepository: SessionRepository,
|
||||
private val preferencesRepository: PreferencesRepository,
|
||||
private val schedulers: SchedulersProvider
|
||||
) : BasePresenter<GradeSummaryView>(errorHandler) {
|
||||
|
||||
@ -34,7 +37,8 @@ class GradeSummaryPresenter @Inject constructor(
|
||||
.flatMap { gradesSummary ->
|
||||
gradeRepository.getGrades(it, forceRefresh)
|
||||
.map { grades ->
|
||||
grades.groupBy { grade -> grade.subject }
|
||||
grades.map { item -> item.changeModifier(preferencesRepository.gradeModifier) }
|
||||
.groupBy { grade -> grade.subject }
|
||||
.mapValues { entry -> entry.value.calcAverage() }
|
||||
.filterValues { value -> value != 0.0 }
|
||||
.let { averages ->
|
||||
|
@ -33,7 +33,6 @@ inline val Grade.valueColor: Int
|
||||
1 -> R.color.grade_one
|
||||
else -> R.color.grade_default
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
inline val Grade.colorStringId: Int
|
||||
@ -46,4 +45,11 @@ inline val Grade.colorStringId: Int
|
||||
"B16CF1" -> R.string.all_purple
|
||||
else -> R.string.all_empty_color
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Grade.changeModifier(newModifier: Double): Grade {
|
||||
if (modifier != 0.0 && newModifier != 0.0) {
|
||||
modifier = if (modifier > 0) newModifier else -newModifier
|
||||
}
|
||||
return this
|
||||
}
|
Reference in New Issue
Block a user