1
package com.example.sid.utils
3
import androidx.core.content.ContextCompat
4
import com.example.sid.ui.app.App
5
import kotlinx.coroutines.CoroutineScope
6
import kotlinx.coroutines.Dispatchers
7
import kotlinx.coroutines.ExperimentalCoroutinesApi
8
import sid.sdk.global.models.SIDColor
9
import sid.sdk.global.models.SIDDimensions
10
import sid.sdk.global.models.SIDErrorTypes
11
import sid.sdk.global.models.SIDFonts
12
import sid.sdk.global.models.SIDNetwork
13
import sid.sdk.global.models.SIDPreferences
14
import sid.sdk.global.models.SIDTexts
15
import kotlin.properties.Delegates
18
//Все слушатели были сделаны исключительно в иллюстрационных целях.
19
private var isInitialized by Delegates.observable(false){ _,_,newValue ->
20
listenerList.forEach { listener ->
21
listener.invoke(newValue)
25
private val listenerList = mutableListOf<(Boolean) -> Unit>()
31
fun getInitialized() = isInitialized
33
fun getInitializeListener(listener: (Boolean) -> Unit) {
34
listenerList.add(listener)
35
listener.invoke(getInitialized())
38
fun removeInitializeListener(listener: (Boolean) -> Unit){
39
listenerList.remove(listener)
42
val main = CoroutineScope(Dispatchers.Main)
43
val ioScope = CoroutineScope(Dispatchers.IO)
44
val defaultScope = CoroutineScope(Dispatchers.Default)
46
//Только подобный подход (ограничение параллелизма)при асинхронном фасаде
47
//даст гарантию исполнения в том же порядке, в котором были вызваны функции.
48
@OptIn(ExperimentalCoroutinesApi::class)
49
val singleIoThread = CoroutineScope(Dispatchers.IO.limitedParallelism(1))
51
val defaultPreferences by lazy {
52
val context = App.context
55
titleError = context.getString(sid.sdk.auth.R.string.sid_elk_error_title),
56
descriptionError = context.getString(sid.sdk.auth.R.string.sid_elk_error_description),
57
buttonError = context.getString(sid.sdk.auth.R.string.sid_elk_error_button),
59
themeColor = SIDColor(
60
light = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_theme_default),
61
dark = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_theme_default),
63
primaryColor = SIDColor(
64
light = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_primary_light_default),
65
dark = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_primary_dark_default),
67
secondaryColor = SIDColor(
68
light = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_secondary_light_default),
69
dark = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_secondary_dark_default),
71
widgetBackgroundColor = SIDColor(
72
light = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_widget_background_light_default),
73
dark = ContextCompat.getColor(context, sid.sdk.auth.R.color.color_sid_widget_background_dark_default),
76
semiBoldResID = sid.sdk.auth.R.font.sbsans_text_semi_bold,
77
mediumResID = sid.sdk.auth.R.font.sbsans_text_medium
79
dimensions = SIDDimensions(
80
elkHorizontalPadding = 16,
81
elkSpaceUserInfoMini = 0
85
headersELK = emptyMap()
87
elkErrorType = SIDErrorTypes.NONE,