clean up settings and some other things

This commit is contained in:
2024-07-16 02:12:19 +03:00
parent 46d3fe63fa
commit b252c03be7
60 changed files with 698 additions and 613 deletions
@@ -0,0 +1,27 @@
package com.meloda.app.fast.common
import com.meloda.app.fast.common.model.LongPollState
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
interface LongPollController {
val currentState: StateFlow<LongPollState>
val stateToApply: StateFlow<LongPollState>
fun updateCurrentState(newState: LongPollState)
fun setStateToApply(newState: LongPollState)
}
class LongPollControllerImpl : LongPollController {
override val currentState = MutableStateFlow<LongPollState>(LongPollState.Stopped)
override val stateToApply = MutableStateFlow<LongPollState>(LongPollState.Stopped)
override fun updateCurrentState(newState: LongPollState) {
currentState.value = newState
}
override fun setStateToApply(newState: LongPollState) {
currentState.value = newState
}
}
@@ -1,6 +1,12 @@
package com.meloda.app.fast.common.di
import coil.ImageLoader
import com.meloda.app.fast.common.LongPollController
import com.meloda.app.fast.common.LongPollControllerImpl
import com.meloda.app.fast.common.provider.ResourceProvider
import com.meloda.app.fast.common.provider.ResourceProviderImpl
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
val commonModule = module {
@@ -9,4 +15,7 @@ val commonModule = module {
.crossfade(true)
.build()
}
singleOf(::LongPollControllerImpl) bind LongPollController::class
singleOf(::ResourceProviderImpl) bind ResourceProvider::class
}
@@ -1,4 +1,4 @@
package com.meloda.app.fast.common
package com.meloda.app.fast.common.extensions
import android.os.Bundle
import android.os.Parcelable
@@ -1,3 +1,3 @@
package com.meloda.app.fast.common
package com.meloda.app.fast.common.model
data class ApiLanguage(val value: String)
@@ -0,0 +1,19 @@
package com.meloda.app.fast.common.model
private const val MODE_NIGHT_NO = 1
private const val MODE_NIGHT_YES = 2
private const val MODE_NIGHT_FOLLOW_SYSTEM = -1
private const val MODE_NIGHT_AUTO_BATTERY = 3
enum class DarkMode(val value: Int) {
DISABLED(MODE_NIGHT_NO),
FOLLOW_SYSTEM(MODE_NIGHT_FOLLOW_SYSTEM),
AUTO_BATTERY(MODE_NIGHT_AUTO_BATTERY),
ENABLED(MODE_NIGHT_YES);
companion object {
fun parse(value: Int): DarkMode = entries.firstOrNull { it.value == value }
?: throw IllegalArgumentException("Unknown dark mode with value: $value")
}
}
@@ -0,0 +1,13 @@
package com.meloda.app.fast.common.model
sealed class LongPollState {
data object Stopped : LongPollState()
// TODO: 15/07/2024, Danil Nikolaev: support for android 15
// data object Terminated : LongPollState()
data object InApp : LongPollState()
data object Background : LongPollState()
data object Exception : LongPollState()
fun isLaunched(): Boolean = this in listOf(InApp, Background)
}
@@ -1,4 +1,4 @@
package com.meloda.app.fast.common
package com.meloda.app.fast.common.model
import android.graphics.drawable.Drawable
import androidx.annotation.ColorInt
@@ -1,4 +1,4 @@
package com.meloda.app.fast.common
package com.meloda.app.fast.common.model
import android.content.res.Resources
import androidx.annotation.PluralsRes
@@ -18,6 +18,8 @@ sealed class UiText {
data class Simple(val text: String) : UiText()
data class QuantityResource(@PluralsRes val resId: Int, val quantity: Int) : UiText()
}
fun UiText?.parseString(resources: Resources): String? {
@@ -0,0 +1,15 @@
package com.meloda.app.fast.common.provider
import android.content.res.Resources
interface ResourceProvider {
fun getString(resId: Int): String
}
class ResourceProviderImpl(private val resources: Resources) : ResourceProvider {
override fun getString(resId: Int): String {
return resources.getString(resId)
}
}