@momo-kits/native-kits 0.154.1-beta.7 → 0.154.1-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +2 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -106
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +1 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +1 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +3 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
package vn.momo.kits.application
|
|
2
|
+
|
|
3
|
+
import androidx.compose.runtime.Immutable
|
|
4
|
+
import androidx.compose.runtime.staticCompositionLocalOf
|
|
5
|
+
import vn.momo.kits.components.TrustBannerData
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
private fun Map<String, Any?>?.string(key: String): String? =
|
|
9
|
+
(this?.get(key) as? String)
|
|
10
|
+
|
|
11
|
+
@Suppress("UNCHECKED_CAST")
|
|
12
|
+
private fun Map<String, Any?>?.mapStringAny(key: String): Map<String, Any?> =
|
|
13
|
+
(this?.get(key) as? Map<String, Any?>) ?: emptyMap()
|
|
14
|
+
|
|
15
|
+
@Suppress("UNCHECKED_CAST")
|
|
16
|
+
private fun Map<String, Any?>?.listOfMapStringAny(key: String): List<Map<String, Any>> =
|
|
17
|
+
(this?.get(key) as? List<Map<String, Any>>) ?: emptyList()
|
|
18
|
+
|
|
19
|
+
@Immutable
|
|
20
|
+
data class FeatureFlags(
|
|
21
|
+
val showBaseLineDebug: Boolean? = false,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
@Immutable
|
|
25
|
+
data class KitConfig(
|
|
26
|
+
val trustBanner: TrustBannerData? = null,
|
|
27
|
+
val headerBar: String? = null,
|
|
28
|
+
val headerGradient: String? = null,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@Immutable
|
|
32
|
+
data class MiniAppContext(
|
|
33
|
+
val appIcon: String = "",
|
|
34
|
+
val appName: Any? = null,
|
|
35
|
+
val appId: String = "",
|
|
36
|
+
val appCode: String = "",
|
|
37
|
+
val description: Any? = null,
|
|
38
|
+
val support: Map<String, Any?> = emptyMap(),
|
|
39
|
+
val toolkitConfig: Map<String, Any?> = emptyMap(),
|
|
40
|
+
val providerId: String = "",
|
|
41
|
+
val permissions: List<Map<String, Any>>? = emptyList(),
|
|
42
|
+
val features: FeatureFlags? = null,
|
|
43
|
+
) {
|
|
44
|
+
companion object {
|
|
45
|
+
private const val KEY_ICON = "icon"
|
|
46
|
+
private const val KEY_NAME = "name"
|
|
47
|
+
private const val KEY_APP_ID = "appId"
|
|
48
|
+
private const val KEY_CODE = "code"
|
|
49
|
+
private const val KEY_DESCRIPTION = "description"
|
|
50
|
+
private const val KEY_SUPPORT = "support"
|
|
51
|
+
private const val KEY_TOOLKIT_CFG = "toolkitConfig"
|
|
52
|
+
private const val KEY_PERMISSIONS = "permissions"
|
|
53
|
+
private const val KEY_ORIGIN_APP = "originAppId"
|
|
54
|
+
|
|
55
|
+
fun toMap(context: MiniAppContext?): Map<String, Any?> = mapOf(
|
|
56
|
+
"icon" to (context?.appIcon ?: ""),
|
|
57
|
+
"name" to context?.appName,
|
|
58
|
+
"appId" to (context?.appId ?: ""),
|
|
59
|
+
"code" to (context?.appCode ?: ""),
|
|
60
|
+
"description" to (context?.description ?: ""),
|
|
61
|
+
"support" to (context?.support ?: emptyMap()),
|
|
62
|
+
"toolkitConfig" to (context?.toolkitConfig ?: emptyMap()),
|
|
63
|
+
"providerId" to (context?.providerId ?: ""),
|
|
64
|
+
"permissions" to (context?.permissions ?: emptyList()),
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
fun fromMap(data: Map<String, Any?>?): MiniAppContext = MiniAppContext(
|
|
68
|
+
appIcon = data.string(KEY_ICON) ?: "",
|
|
69
|
+
appName = data?.get(KEY_NAME),
|
|
70
|
+
appId = data.string(KEY_APP_ID) ?: "",
|
|
71
|
+
appCode = data.string(KEY_CODE) ?: "",
|
|
72
|
+
description = data?.get(KEY_DESCRIPTION),
|
|
73
|
+
support = data.mapStringAny(KEY_SUPPORT),
|
|
74
|
+
toolkitConfig = data.mapStringAny(KEY_TOOLKIT_CFG),
|
|
75
|
+
providerId = computeProviderId(
|
|
76
|
+
originAppId = data.string(KEY_ORIGIN_APP),
|
|
77
|
+
appId = data.string(KEY_APP_ID)
|
|
78
|
+
),
|
|
79
|
+
permissions = data.listOfMapStringAny(KEY_PERMISSIONS),
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
private fun computeProviderId(originAppId: String?, appId: String?): String {
|
|
83
|
+
val id = when {
|
|
84
|
+
!originAppId.isNullOrBlank() -> originAppId
|
|
85
|
+
!appId.isNullOrBlank() -> appId
|
|
86
|
+
else -> null
|
|
87
|
+
} ?: return "unknown"
|
|
88
|
+
|
|
89
|
+
val parts = id.split('.')
|
|
90
|
+
return parts.getOrNull(1) ?: "unknown"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
val ApplicationContext = staticCompositionLocalOf<MiniAppContext?> {
|
|
96
|
+
null
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
val AppConfig = staticCompositionLocalOf<KitConfig?> {
|
|
100
|
+
null
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
val AppLanguage = staticCompositionLocalOf<String?> {
|
|
104
|
+
null
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
internal val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
|
|
@@ -32,6 +32,7 @@ import vn.momo.kits.components.DotSize
|
|
|
32
32
|
import vn.momo.kits.components.Icon
|
|
33
33
|
import vn.momo.kits.const.AppTheme
|
|
34
34
|
import vn.momo.kits.const.Colors
|
|
35
|
+
import vn.momo.kits.const.Spacing
|
|
35
36
|
|
|
36
37
|
@Stable
|
|
37
38
|
data class HeaderRightData(
|
|
@@ -77,11 +78,7 @@ data class NavigationButtonConfig(
|
|
|
77
78
|
val onPress: () -> Unit
|
|
78
79
|
)
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
val M = 16.dp
|
|
82
|
-
val S = 8.dp
|
|
83
|
-
val XXS = 2.dp
|
|
84
|
-
}
|
|
81
|
+
|
|
85
82
|
|
|
86
83
|
@Deprecated("Use vn.momo.kits.navigation.component.HeaderRight instead", ReplaceWith("vn.momo.kits.navigation.component.HeaderRight"))
|
|
87
84
|
@Composable
|
|
@@ -2,7 +2,6 @@ package vn.momo.kits.application
|
|
|
2
2
|
|
|
3
3
|
import androidx.compose.runtime.Composable
|
|
4
4
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
5
|
-
import androidx.compose.runtime.Immutable
|
|
6
5
|
import androidx.compose.runtime.LaunchedEffect
|
|
7
6
|
import androidx.compose.runtime.getValue
|
|
8
7
|
import androidx.compose.runtime.mutableStateOf
|
|
@@ -10,7 +9,6 @@ import androidx.compose.runtime.remember
|
|
|
10
9
|
import androidx.compose.runtime.setValue
|
|
11
10
|
import androidx.compose.runtime.staticCompositionLocalOf
|
|
12
11
|
import androidx.compose.ui.unit.Dp
|
|
13
|
-
import vn.momo.kits.components.TrustBannerData
|
|
14
12
|
import vn.momo.kits.const.AppStatusBar
|
|
15
13
|
import vn.momo.kits.const.AppTheme
|
|
16
14
|
import vn.momo.kits.const.Theme
|
|
@@ -64,114 +62,12 @@ class Navigator {
|
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
|
|
67
|
-
@Immutable
|
|
68
|
-
data class MiniAppContext(
|
|
69
|
-
val appIcon: String = "",
|
|
70
|
-
val appName: Any? = null,
|
|
71
|
-
val appId: String = "",
|
|
72
|
-
val appCode: String = "",
|
|
73
|
-
val description: Any? = null,
|
|
74
|
-
val support: Map<String, Any?> = emptyMap(),
|
|
75
|
-
val toolkitConfig: Map<String, Any?> = emptyMap(),
|
|
76
|
-
val providerId: String = "",
|
|
77
|
-
val permissions: List<Map<String, Any>>? = emptyList(),
|
|
78
|
-
val features: FeatureFlags? = null,
|
|
79
|
-
) {
|
|
80
|
-
companion object {
|
|
81
|
-
private const val KEY_ICON = "icon"
|
|
82
|
-
private const val KEY_NAME = "name"
|
|
83
|
-
private const val KEY_APP_ID = "appId"
|
|
84
|
-
private const val KEY_CODE = "code"
|
|
85
|
-
private const val KEY_DESCRIPTION = "description"
|
|
86
|
-
private const val KEY_SUPPORT = "support"
|
|
87
|
-
private const val KEY_TOOLKIT_CFG = "toolkitConfig"
|
|
88
|
-
private const val KEY_PERMISSIONS = "permissions"
|
|
89
|
-
private const val KEY_ORIGIN_APP = "originAppId"
|
|
90
|
-
|
|
91
|
-
fun toMap(context: MiniAppContext?): Map<String, Any?> = mapOf(
|
|
92
|
-
"icon" to (context?.appIcon ?: ""),
|
|
93
|
-
"name" to context?.appName,
|
|
94
|
-
"appId" to (context?.appId ?: ""),
|
|
95
|
-
"code" to (context?.appCode ?: ""),
|
|
96
|
-
"description" to (context?.description ?: ""),
|
|
97
|
-
"support" to (context?.support ?: emptyMap()),
|
|
98
|
-
"toolkitConfig" to (context?.toolkitConfig ?: emptyMap()),
|
|
99
|
-
"providerId" to (context?.providerId ?: ""),
|
|
100
|
-
"permissions" to (context?.permissions ?: emptyList()),
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
fun fromMap(data: Map<String, Any?>?): MiniAppContext = MiniAppContext(
|
|
104
|
-
appIcon = data.string(KEY_ICON) ?: "",
|
|
105
|
-
appName = data?.get(KEY_NAME),
|
|
106
|
-
appId = data.string(KEY_APP_ID) ?: "",
|
|
107
|
-
appCode = data.string(KEY_CODE) ?: "",
|
|
108
|
-
description = data?.get(KEY_DESCRIPTION),
|
|
109
|
-
support = data.mapStringAny(KEY_SUPPORT),
|
|
110
|
-
toolkitConfig = data.mapStringAny(KEY_TOOLKIT_CFG),
|
|
111
|
-
providerId = computeProviderId(
|
|
112
|
-
originAppId = data.string(KEY_ORIGIN_APP),
|
|
113
|
-
appId = data.string(KEY_APP_ID)
|
|
114
|
-
),
|
|
115
|
-
permissions = data.listOfMapStringAny(KEY_PERMISSIONS),
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
private fun computeProviderId(originAppId: String?, appId: String?): String {
|
|
119
|
-
val id = when {
|
|
120
|
-
!originAppId.isNullOrBlank() -> originAppId
|
|
121
|
-
!appId.isNullOrBlank() -> appId
|
|
122
|
-
else -> null
|
|
123
|
-
} ?: return "unknown"
|
|
124
|
-
|
|
125
|
-
val parts = id.split('.')
|
|
126
|
-
return parts.getOrNull(1) ?: "unknown"
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
65
|
|
|
131
|
-
private fun Map<String, Any?>?.string(key: String): String? =
|
|
132
|
-
(this?.get(key) as? String)
|
|
133
66
|
|
|
134
|
-
@Suppress("UNCHECKED_CAST")
|
|
135
|
-
private fun Map<String, Any?>?.mapStringAny(key: String): Map<String, Any?> =
|
|
136
|
-
(this?.get(key) as? Map<String, Any?>) ?: emptyMap()
|
|
137
|
-
|
|
138
|
-
@Suppress("UNCHECKED_CAST")
|
|
139
|
-
private fun Map<String, Any?>?.listOfMapStringAny(key: String): List<Map<String, Any>> =
|
|
140
|
-
(this?.get(key) as? List<Map<String, Any>>) ?: emptyList()
|
|
141
67
|
|
|
142
68
|
@Deprecated("Use LocalApi instead", ReplaceWith("LocalApi"))
|
|
143
69
|
val PlatformApi = staticCompositionLocalOf<Any?> { null }
|
|
144
70
|
|
|
145
|
-
@Deprecated("Use LocalNavigator instead", ReplaceWith("LocalNavigator"))
|
|
146
|
-
val AppNavigator = staticCompositionLocalOf<Navigator?> {
|
|
147
|
-
null
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
val ApplicationContext = staticCompositionLocalOf<MiniAppContext?> {
|
|
151
|
-
null
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
val AppConfig = staticCompositionLocalOf<KitConfig?> {
|
|
155
|
-
null
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
val AppLanguage = staticCompositionLocalOf<String?> {
|
|
159
|
-
null
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
@Immutable
|
|
163
|
-
data class FeatureFlags(
|
|
164
|
-
val showBaseLineDebug: Boolean? = false,
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
@Immutable
|
|
168
|
-
data class KitConfig(
|
|
169
|
-
val trustBanner: TrustBannerData? = null,
|
|
170
|
-
val headerBar: String? = null,
|
|
171
|
-
val headerGradient: String? = null,
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
internal var DesignSystemWhiteList: Boolean? = null
|
|
175
71
|
|
|
176
72
|
@Deprecated("Use NavigationContainer instead", ReplaceWith("NavigationContainer"))
|
|
177
73
|
@Composable
|
|
@@ -188,7 +84,6 @@ fun ApplicationContainer(
|
|
|
188
84
|
var appTheme by remember { mutableStateOf(theme) }
|
|
189
85
|
|
|
190
86
|
LaunchedEffect(Unit) {
|
|
191
|
-
DesignSystemWhiteList = isWhiteList
|
|
192
87
|
try {
|
|
193
88
|
val headerBar = config?.headerBar
|
|
194
89
|
if (headerBar != null && appTheme.assets.headerBackground == null) {
|
|
@@ -208,7 +103,6 @@ fun ApplicationContainer(
|
|
|
208
103
|
CompositionLocalProvider(
|
|
209
104
|
AppTheme provides appTheme,
|
|
210
105
|
PlatformApi provides composeApi,
|
|
211
|
-
AppNavigator provides Navigator(),
|
|
212
106
|
AppStatusBar provides appStatusBarHeight,
|
|
213
107
|
ApplicationContext provides applicationContext,
|
|
214
108
|
AppConfig provides config,
|
|
@@ -2,9 +2,7 @@ package vn.momo.kits.components
|
|
|
2
2
|
|
|
3
3
|
import androidx.compose.runtime.Composable
|
|
4
4
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
internal val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
|
|
5
|
+
import vn.momo.kits.application.ScaleSizeMaxRate
|
|
8
6
|
|
|
9
7
|
@Composable
|
|
10
8
|
fun ScaleSizeScope(
|
|
@@ -17,12 +17,10 @@ import androidx.compose.ui.draw.clip
|
|
|
17
17
|
import androidx.compose.ui.graphics.Color
|
|
18
18
|
import androidx.compose.ui.layout.ContentScale
|
|
19
19
|
import androidx.compose.ui.unit.dp
|
|
20
|
-
import androidx.compose.ui.unit.sp
|
|
21
20
|
import vn.momo.kits.application.AppConfig
|
|
22
21
|
import vn.momo.kits.application.AppLanguage
|
|
23
|
-
import vn.momo.kits.modifier.noFeedbackClickable
|
|
24
|
-
import vn.momo.kits.components.Text
|
|
25
22
|
import vn.momo.kits.const.Typography
|
|
23
|
+
import vn.momo.kits.modifier.noFeedbackClickable
|
|
26
24
|
|
|
27
25
|
val defaultBanner = TrustBannerData(
|
|
28
26
|
content = mapOf(
|
|
@@ -15,10 +15,8 @@ import androidx.compose.ui.unit.sp
|
|
|
15
15
|
import org.jetbrains.compose.resources.Font
|
|
16
16
|
import org.jetbrains.compose.resources.FontResource
|
|
17
17
|
import org.jetbrains.compose.resources.InternalResourceApi
|
|
18
|
-
import vn.momo.kits.
|
|
18
|
+
import vn.momo.kits.application.ScaleSizeMaxRate
|
|
19
19
|
import vn.momo.kits.platform.getScreenDimensions
|
|
20
|
-
import kotlin.math.max
|
|
21
|
-
import kotlin.math.min
|
|
22
20
|
import vn.momo.uikits.resources.Res
|
|
23
21
|
import vn.momo.uikits.resources.momosignature
|
|
24
22
|
import vn.momo.uikits.resources.momotrustdisplay
|
|
@@ -31,6 +29,8 @@ import vn.momo.uikits.resources.sfprotext_regular
|
|
|
31
29
|
import vn.momo.uikits.resources.sfprotext_semibold
|
|
32
30
|
import vn.momo.uikits.resources.sfprotext_thin
|
|
33
31
|
import vn.momo.uikits.resources.sfprotext_ultralight
|
|
32
|
+
import kotlin.math.max
|
|
33
|
+
import kotlin.math.min
|
|
34
34
|
|
|
35
35
|
const val DEFAULT_SCREEN_SIZE = 375f
|
|
36
36
|
const val MAX_FONT_SCALE = 1.5f
|
|
@@ -26,11 +26,11 @@ import androidx.compose.ui.graphics.Color
|
|
|
26
26
|
import androidx.compose.ui.unit.dp
|
|
27
27
|
import vn.momo.kits.application.ApplicationContext
|
|
28
28
|
import vn.momo.kits.application.MiniAppContext
|
|
29
|
-
import vn.momo.kits.application.Spacing
|
|
30
29
|
import vn.momo.kits.components.BadgeDot
|
|
31
30
|
import vn.momo.kits.components.DotSize
|
|
32
31
|
import vn.momo.kits.components.Icon
|
|
33
32
|
import vn.momo.kits.const.Colors
|
|
33
|
+
import vn.momo.kits.const.Spacing
|
|
34
34
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
35
35
|
import vn.momo.kits.navigation.LocalMaxApi
|
|
36
36
|
|