Skip to content

Commit d472cd7

Browse files
author
Yevhen Podkovyrin
committed
Release 1.0.7
1 parent 2d095b6 commit d472cd7

20 files changed

Lines changed: 319 additions & 113 deletions

File tree

.run/core -_ spend.run.xml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="core -&gt; spend" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
3+
<module name="Flexa.example.main" />
4+
<option name="DEPLOY" value="true" />
5+
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
6+
<option name="DEPLOY_AS_INSTANT" value="false" />
7+
<option name="ARTIFACT_NAME" value="" />
8+
<option name="PM_INSTALL_OPTIONS" value="" />
9+
<option name="ALL_USERS" value="false" />
10+
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
11+
<option name="CLEAR_APP_STORAGE" value="false" />
12+
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
13+
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
14+
<option name="MODE" value="default_activity" />
15+
<option name="RESTORE_ENABLED" value="false" />
16+
<option name="RESTORE_FILE" value="" />
17+
<option name="CLEAR_LOGCAT" value="false" />
18+
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
19+
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
20+
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
21+
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
22+
<option name="DEBUGGER_TYPE" value="Auto" />
23+
<Auto>
24+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
25+
<option name="SHOW_STATIC_VARS" value="true" />
26+
<option name="WORKING_DIR" value="" />
27+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
28+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
29+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
30+
<option name="DEBUG_SANDBOX_SDK" value="false" />
31+
</Auto>
32+
<Hybrid>
33+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
34+
<option name="SHOW_STATIC_VARS" value="true" />
35+
<option name="WORKING_DIR" value="" />
36+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
37+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
38+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
39+
<option name="DEBUG_SANDBOX_SDK" value="false" />
40+
</Hybrid>
41+
<Java>
42+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
43+
<option name="DEBUG_SANDBOX_SDK" value="false" />
44+
</Java>
45+
<Native>
46+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
47+
<option name="SHOW_STATIC_VARS" value="true" />
48+
<option name="WORKING_DIR" value="" />
49+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
50+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
51+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
52+
<option name="DEBUG_SANDBOX_SDK" value="false" />
53+
</Native>
54+
<Profilers>
55+
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
56+
<option name="STARTUP_PROFILING_ENABLED" value="false" />
57+
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
58+
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
59+
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
60+
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
61+
</Profilers>
62+
<option name="DEEP_LINK" value="" />
63+
<option name="ACTIVITY_CLASS" value="" />
64+
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
65+
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
66+
<method v="2">
67+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="assembleDebug" externalProjectPath="$PROJECT_DIR$/core" vmOptions="" scriptParameters="" />
68+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="publishToMavenLocal" externalProjectPath="$PROJECT_DIR$/core" vmOptions="" scriptParameters="" />
69+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="assembleDebug" externalProjectPath="$PROJECT_DIR$/spend" vmOptions="" scriptParameters="" />
70+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="publishToMavenLocal" externalProjectPath="$PROJECT_DIR$/spend" vmOptions="" scriptParameters="" />
71+
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
72+
</method>
73+
</configuration>
74+
</component>

.run/core.run.xml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="core" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
3+
<module name="Flexa.example.main" />
4+
<option name="DEPLOY" value="true" />
5+
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
6+
<option name="DEPLOY_AS_INSTANT" value="false" />
7+
<option name="ARTIFACT_NAME" value="" />
8+
<option name="PM_INSTALL_OPTIONS" value="" />
9+
<option name="ALL_USERS" value="false" />
10+
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
11+
<option name="CLEAR_APP_STORAGE" value="false" />
12+
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
13+
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
14+
<option name="MODE" value="default_activity" />
15+
<option name="RESTORE_ENABLED" value="false" />
16+
<option name="RESTORE_FILE" value="" />
17+
<option name="CLEAR_LOGCAT" value="false" />
18+
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
19+
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
20+
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
21+
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
22+
<option name="DEBUGGER_TYPE" value="Auto" />
23+
<Auto>
24+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
25+
<option name="SHOW_STATIC_VARS" value="true" />
26+
<option name="WORKING_DIR" value="" />
27+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
28+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
29+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
30+
<option name="DEBUG_SANDBOX_SDK" value="false" />
31+
</Auto>
32+
<Hybrid>
33+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
34+
<option name="SHOW_STATIC_VARS" value="true" />
35+
<option name="WORKING_DIR" value="" />
36+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
37+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
38+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
39+
<option name="DEBUG_SANDBOX_SDK" value="false" />
40+
</Hybrid>
41+
<Java>
42+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
43+
<option name="DEBUG_SANDBOX_SDK" value="false" />
44+
</Java>
45+
<Native>
46+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
47+
<option name="SHOW_STATIC_VARS" value="true" />
48+
<option name="WORKING_DIR" value="" />
49+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
50+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
51+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
52+
<option name="DEBUG_SANDBOX_SDK" value="false" />
53+
</Native>
54+
<Profilers>
55+
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
56+
<option name="STARTUP_PROFILING_ENABLED" value="false" />
57+
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
58+
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
59+
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
60+
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
61+
</Profilers>
62+
<option name="DEEP_LINK" value="" />
63+
<option name="ACTIVITY_CLASS" value="" />
64+
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
65+
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
66+
<method v="2">
67+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="assembleDebug" externalProjectPath="$PROJECT_DIR$/core" vmOptions="" scriptParameters="" />
68+
<option name="Gradle.BeforeRunTask" enabled="false" tasks="publishToMavenLocal" externalProjectPath="$PROJECT_DIR$/core" vmOptions="" scriptParameters="" />
69+
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
70+
</method>
71+
</configuration>
72+
</component>

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,19 @@ dependencyResolutionManagement {
5353
**Identity** module:
5454

5555
```groovy
56-
implementation "com.flexa:core:1.0.6"
56+
implementation "com.flexa:core:1.0.7"
5757
```
5858

5959
**Scan** module:
6060

6161
```groovy
62-
implementation "com.flexa:scan:1.0.6"
62+
implementation "com.flexa:scan:1.0.7"
6363
```
6464

6565
**Spend** module:
6666

6767
```groovy
68-
implementation "com.flexa:spend:1.0.6"
68+
implementation "com.flexa:spend:1.0.7"
6969
```
7070

7171
### Remote repository
@@ -107,19 +107,19 @@ implementation "com.flexa:spend:1.0.6"
107107
**Identity** module:
108108

109109
```groovy
110-
implementation "com.flexa:core:1.0.6"
110+
implementation "com.flexa:core:1.0.7"
111111
```
112112

113113
**Scan** module:
114114

115115
```groovy
116-
implementation "com.flexa:scan:1.0.6"
116+
implementation "com.flexa:scan:1.0.7"
117117
```
118118

119119
**Spend** module:
120120

121121
```groovy
122-
implementation "com.flexa:spend:1.0.6"
122+
implementation "com.flexa:spend:1.0.7"
123123
```
124124

125125

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ buildscript {
22
ext {
33
kotlinVersion = '1.9.21'
44

5-
sdk_version = '1.0.6'
5+
sdk_version = '1.0.7'
66
groupId = 'com.flexa'
77
core_version = sdk_version
88
scan_version = sdk_version

core/src/main/java/com/flexa/identity/IdentityNavGraph.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ fun NavGraphBuilder.identityNavGraph(
122122
viewModel = viewModel(),
123123
userVM = viewModel(context.getActivity() ?: entry),
124124
toBack = { navController.navigateUp() },
125+
toPrivacy = { navController.navigate(Route.WebView.createRoute("https://flexa.co/legal/privacy")) },
125126
toCoppa = { navController.navigate(Route.Coppa.name) },
126127
toTermsOfUse = { navController.navigate(Route.TermsOfUse.name) },
127128
toContinue = { navController.navigate(Route.VerifyEmail.name) },

core/src/main/java/com/flexa/identity/create_id/CreateIdScreen.kt

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.flexa.identity.create_id
22

33
import android.content.res.Configuration
44
import androidx.compose.animation.AnimatedContent
5-
import androidx.compose.animation.ExperimentalAnimationApi
65
import androidx.compose.animation.SizeTransform
76
import androidx.compose.animation.expandVertically
87
import androidx.compose.animation.fadeIn
@@ -12,7 +11,7 @@ import androidx.compose.animation.slideInHorizontally
1211
import androidx.compose.animation.slideInVertically
1312
import androidx.compose.animation.slideOutHorizontally
1413
import androidx.compose.animation.slideOutVertically
15-
import androidx.compose.animation.with
14+
import androidx.compose.animation.togetherWith
1615
import androidx.compose.foundation.background
1716
import androidx.compose.foundation.clickable
1817
import androidx.compose.foundation.focusable
@@ -109,7 +108,7 @@ import java.util.Date
109108

110109

111110
@OptIn(
112-
ExperimentalComposeUiApi::class, ExperimentalAnimationApi::class,
111+
ExperimentalComposeUiApi::class,
113112
ExperimentalMaterial3Api::class
114113
)
115114
@Composable
@@ -118,6 +117,7 @@ internal fun CreateId(
118117
viewModel: CreateIdViewModel,
119118
userVM: UserViewModel,
120119
toBack: () -> Unit = {},
120+
toPrivacy: () -> Unit = {},
121121
toTermsOfUse: () -> Unit = {},
122122
toCoppa: () -> Unit = {},
123123
toContinue: () -> Unit = {},
@@ -159,6 +159,7 @@ internal fun CreateId(
159159
toContinue()
160160
viewModel.state.value = CreateIdViewModel.State.General
161161
}
162+
162163
else -> {}
163164
}
164165
}
@@ -201,7 +202,8 @@ internal fun CreateId(
201202
) {
202203
TextButton(
203204
modifier = Modifier.padding(start = 0.dp),
204-
onClick = { viewModel.state.value = CreateIdViewModel.State.FlexaPrivacy }) {
205+
onClick = toPrivacy
206+
) {
205207
Text(text = stringResource(id = R.string.about_flexa_and_privacy))
206208
}
207209
val progress by viewModel.progress.collectAsStateWithLifecycle()
@@ -231,11 +233,11 @@ internal fun CreateId(
231233
transitionSpec = {
232234
if (targetState) {
233235
slideInHorizontally { width -> width } +
234-
fadeIn() with slideOutHorizontally()
236+
fadeIn() togetherWith slideOutHorizontally()
235237
{ width -> -width } + fadeOut()
236238
} else {
237239
slideInHorizontally { width -> -width } +
238-
fadeIn() with slideOutHorizontally()
240+
fadeIn() togetherWith slideOutHorizontally()
239241
{ width -> width } + fadeOut()
240242
}.using(SizeTransform(clip = false))
241243
}, label = stringResource(R.string.get_started)
@@ -280,7 +282,14 @@ internal fun CreateId(
280282
}
281283
val keyboardController = LocalSoftwareKeyboardController.current
282284
KeyboardHandler()
283-
val firstNameTextValue = remember { mutableStateOf(TextFieldValue(firstName)) }
285+
val firstNameTextValue = remember {
286+
mutableStateOf(
287+
TextFieldValue(
288+
text = firstName,
289+
selection = TextRange(firstName.length)
290+
)
291+
)
292+
}
284293
TextField(
285294
modifier = Modifier
286295
.fillMaxWidth()
@@ -314,18 +323,15 @@ internal fun CreateId(
314323
transitionSpec = {
315324
if (targetState.length > initialState.length) {
316325
slideInVertically { width -> width } +
317-
fadeIn() with slideOutVertically()
326+
fadeIn() togetherWith slideOutVertically()
318327
{ width -> -width } + fadeOut()
319328
} else {
320329
slideInVertically { width -> -width } +
321-
fadeIn() with slideOutVertically()
330+
fadeIn() togetherWith slideOutVertically()
322331
{ width -> width } + fadeOut()
323332
}.using(SizeTransform(clip = false))
324333
}, label = "Text"
325-
) { state ->
326-
state
327-
Text(text = text)
328-
}
334+
) { state -> Text(text = state) }
329335
},
330336
value = if (nameExpanded) firstNameTextValue.value
331337
else {
@@ -337,12 +343,20 @@ internal fun CreateId(
337343
)
338344
},
339345
onValueChange = {
340-
if (firstNameBlocked) {
341-
firstNameBlocked = false
342-
} else {
343-
firstNameTextValue.value = it
344-
firstNameError = it.text.isEmpty()
345-
userVM.userData.value = userVM.userData.value.copy(firstName = it.text)
346+
when {
347+
firstNameTextValue.value.text.isEmpty() -> {
348+
firstNameBlocked = false
349+
firstNameTextValue.value = it
350+
firstNameError = it.text.isEmpty()
351+
userVM.userData.value = userVM.userData.value.copy(firstName = it.text)
352+
}
353+
354+
firstNameBlocked -> firstNameBlocked = false
355+
else -> {
356+
firstNameTextValue.value = it
357+
firstNameError = it.text.isEmpty()
358+
userVM.userData.value = userVM.userData.value.copy(firstName = it.text)
359+
}
346360
}
347361
},
348362
leadingIcon = {
@@ -366,7 +380,14 @@ internal fun CreateId(
366380
enter = expandVertically(),
367381
exit = shrinkVertically()
368382
) {
369-
val lastNameTextValue = remember { mutableStateOf(TextFieldValue(lastName)) }
383+
val lastNameTextValue = remember {
384+
mutableStateOf(
385+
TextFieldValue(
386+
text = lastName,
387+
selection = TextRange(lastName.length)
388+
)
389+
)
390+
}
370391
TextField(
371392
modifier = Modifier
372393
.focusRequester(lastNameFocus)
@@ -390,10 +411,7 @@ internal fun CreateId(
390411
style = TextStyle(color = MaterialTheme.colorScheme.error)
391412
)
392413
},
393-
value = TextFieldValue(
394-
text = lastName,
395-
selection = TextRange(lastName.length)
396-
),
414+
value = lastNameTextValue.value,
397415
maxLines = 1,
398416
label = { Text(text = stringResource(id = R.string.last_name)) },
399417
onValueChange = {

core/src/main/java/com/flexa/identity/create_id/CreateIdViewModel.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ internal class CreateIdViewModel(
3333

3434
val country = getCountryByTelephonyManager(context) ?: getCountryByLocale(context)
3535

36-
val dateFormat = SimpleDateFormat("yyyy-MM-dd")
36+
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US)
3737
val birthday = dateFormat.format(userData.birthday ?: Date())
3838

3939
val res = interactor.accounts(
@@ -102,7 +102,6 @@ internal class CreateIdViewModel(
102102
}
103103

104104
sealed class State {
105-
data object FlexaPrivacy : State()
106105
data object General : State()
107106
class Success(val data: TokensResponse.Success) : State()
108107
}

0 commit comments

Comments
 (0)