SID-SDK-Android-Example

Форк
0
90 строк · 3.4 Кб
1
package com.example.sid.utils
2

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
16

17
object Utils {
18
	//Все слушатели были сделаны исключительно в иллюстрационных целях.
19
	private var isInitialized by Delegates.observable(false){ _,_,newValue ->
20
		listenerList.forEach { listener ->
21
			listener.invoke(newValue)
22
		}
23
	}
24

25
	private val listenerList = mutableListOf<(Boolean) -> Unit>()
26

27
	fun setInitialized(){
28
		isInitialized = true
29
	}
30

31
	fun getInitialized() = isInitialized
32

33
	fun getInitializeListener(listener: (Boolean) -> Unit) {
34
		listenerList.add(listener)
35
		listener.invoke(getInitialized())
36
	}
37

38
	fun removeInitializeListener(listener: (Boolean) -> Unit){
39
		listenerList.remove(listener)
40
	}
41

42
	val main = CoroutineScope(Dispatchers.Main)
43
	val ioScope = CoroutineScope(Dispatchers.IO)
44
	val defaultScope = CoroutineScope(Dispatchers.Default)
45

46
	//Только подобный подход (ограничение параллелизма)при асинхронном фасаде
47
	//даст гарантию исполнения в том же порядке, в котором были вызваны функции.
48
	@OptIn(ExperimentalCoroutinesApi::class)
49
	val singleIoThread = CoroutineScope(Dispatchers.IO.limitedParallelism(1))
50

51
	val defaultPreferences by lazy {
52
		val context = App.context
53
		SIDPreferences(
54
			texts = SIDTexts(
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),
58
			),
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),
62
			),
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),
66
			),
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),
70
			),
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),
74
			),
75
			fonts = SIDFonts(
76
				semiBoldResID = sid.sdk.auth.R.font.sbsans_text_semi_bold,
77
				mediumResID = sid.sdk.auth.R.font.sbsans_text_medium
78
			),
79
			dimensions = SIDDimensions(
80
				elkHorizontalPadding = 16,
81
				elkSpaceUserInfoMini = 0
82
			),
83
			network = SIDNetwork(
84
				versionELK = "",
85
				headersELK = emptyMap()
86
			),
87
			elkErrorType = SIDErrorTypes.NONE,
88
		)
89
	}
90
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.