Skip to content

Commit 2da66a2

Browse files
PankraSergDeneathmarat-biriushevNaghme98ZFRFM
authored
ci fixes develop to staging (#1203) (#1215)
* test * fix * Update libs.versions.toml * Update libs.versions.toml * Update libs.versions.toml * test * test * Add remote assets sync service * Add new price service * MWR-951 Replaced StartActivityForResult to PickVisualMedia * Flw 5120 cleared 1 (#1212) * flw-5120 * soramitsu foundation as lib, flw-5120, --------- * fix/ui (#1213) * fix history UI * version up * fixes/release (#1214) * fix input background * version code up * nothing to claim warning * 207 * fixed MAX amount button in staking, improve debugging by breakpoints * strings update * stop chosen node from reset * 208 * toc-connect accept urls * build up 209 --------- --------- Signed-off-by: Deneath <[email protected]> Co-authored-by: Denis Lyazgin <[email protected]> Co-authored-by: Marat Biryushev <[email protected]> Co-authored-by: marat-biriushev <[email protected]> Co-authored-by: Naghme98 <[email protected]> Co-authored-by: NaghmeMohammadifar <[email protected]> Co-authored-by: Faimi the Legend Zufarov <[email protected]> Co-authored-by: Faimi Zufarov <[email protected]> Co-authored-by: arvifox <[email protected]>
1 parent b8ff31b commit 2da66a2

File tree

94 files changed

+1279
-1016
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+1279
-1016
lines changed

android-foundation

Submodule android-foundation deleted from c7065d1

app/build.gradle

+8-1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ android {
118118

119119
jvmTarget = '17'
120120
}
121+
kotlin {
122+
compilerOptions {
123+
if (System.getProperty("idea.active") == "true") {
124+
println("Enable coroutine debugging")
125+
freeCompilerArgs.add("-Xdebug")
126+
}
127+
}
128+
}
121129
composeOptions {
122130
kotlinCompilerExtensionVersion composeCompilerVersion
123131
}
@@ -139,7 +147,6 @@ play {
139147
}
140148

141149
dependencies {
142-
implementation project(':android-foundation')
143150
implementation fileTree(dir: 'libs', include: ['*.jar'])
144151
implementation project(':core-db')
145152
implementation project(':common')

app/proguard-rules.pro

+3
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@
173173
-dontwarn org.ietf.jgss.GSSName
174174
-dontwarn org.ietf.jgss.Oid
175175

176+
-dontwarn org.apiguardian.api.API$Status
177+
-dontwarn org.apiguardian.api.API
178+
176179
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
177180
# EnclosingMethod is required to use InnerClasses.
178181
-keepattributes Signature, InnerClasses, EnclosingMethod

app/src/main/AndroidManifest.xml

+12
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@
5353
<category android:name="android.intent.category.DEFAULT" />
5454
<category android:name="android.intent.category.BROWSABLE" />
5555
</intent-filter>
56+
57+
<intent-filter android:autoVerify="true">
58+
<category android:name="android.intent.category.VIEW" />
59+
<category android:name="android.intent.category.DEFAULT" />
60+
<category android:name="android.intent.category.BROWSABLE" />
61+
62+
<!-- Only accept URLs that look like https://fearlesswallet.io/ton-connect/* -->
63+
<data
64+
android:scheme="https"
65+
android:host="fearlesswallet.io"
66+
android:pathPrefix="/ton-connect/" />
67+
</intent-filter>
5668
</activity>
5769

5870
<activity

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ apply plugin: "org.sonarqube"
55
buildscript {
66
ext {
77
// App version
8-
versionName = '3.7.3'
9-
versionCode = 204
8+
versionName = '3.7.4'
9+
versionCode = 209
1010

1111
// SDK and tools
1212
compileSdkVersion = 34

common/build.gradle

+1-3
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,7 @@ dependencies {
144144
implementation libs.progressbutton
145145

146146
implementation libs.nv.websocket.client
147-
implementation libs.xnetworking.basic
148-
implementation libs.xnetworking.fearless, withoutBasic
149-
implementation libs.xnetworking.sorawallet, withoutBasic
147+
implementation libs.xnetworking.lib.android
150148

151149
implementation libs.middle.ellipsis.text
152150

common/src/main/java/jp/co/soramitsu/common/base/BaseComposeFragment.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ abstract class BaseComposeFragment<T : BaseViewModel> : Fragment() {
6363
val modalBottomSheetState: ModalBottomSheetState = rememberModalBottomSheetState(
6464
initialValue = ModalBottomSheetValue.Hidden,
6565
skipHalfExpanded = true,
66-
confirmStateChange = ::hideKeyboardAndConfirm
66+
confirmValueChange = ::hideKeyboardAndConfirm,
6767
)
6868

6969
Background()

common/src/main/java/jp/co/soramitsu/common/compose/component/TextInput.kt

+14-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package jp.co.soramitsu.common.compose.component
33
import androidx.annotation.DrawableRes
44
import androidx.compose.foundation.background
55
import androidx.compose.foundation.interaction.MutableInteractionSource
6+
import androidx.compose.foundation.layout.Arrangement
67
import androidx.compose.foundation.layout.Box
78
import androidx.compose.foundation.layout.Column
89
import androidx.compose.foundation.layout.PaddingValues
@@ -34,6 +35,7 @@ import androidx.compose.ui.tooling.preview.Preview
3435
import androidx.compose.ui.unit.dp
3536
import jp.co.soramitsu.common.R
3637
import jp.co.soramitsu.common.compose.theme.FearlessTheme
38+
import jp.co.soramitsu.common.compose.theme.black
3739
import jp.co.soramitsu.common.compose.theme.black05
3840
import jp.co.soramitsu.common.compose.theme.black2
3941
import jp.co.soramitsu.common.compose.theme.colorAccentDark
@@ -110,7 +112,7 @@ fun TextInput(
110112
singleLine = true,
111113
maxLines = 1,
112114
keyboardOptions = KeyboardOptions(
113-
autoCorrect = false,
115+
autoCorrectEnabled = false,
114116
keyboardType = when (state.mode) {
115117
TextInputViewState.Mode.Text -> KeyboardType.Text
116118
TextInputViewState.Mode.Password -> KeyboardType.Password
@@ -119,7 +121,6 @@ fun TextInput(
119121
),
120122
visualTransformation = visualTransformation,
121123
modifier = Modifier
122-
.background(color = transparent)
123124
.onFocusChanged(onFocusChanged)
124125
.fillMaxWidth(),
125126
cursorBrush = SolidColor(colorAccentDark),
@@ -136,6 +137,9 @@ fun TextInput(
136137
overflow = TextOverflow.Ellipsis
137138
)
138139
},
140+
colors = TextFieldDefaults.textFieldColors(
141+
backgroundColor = transparent
142+
),
139143
singleLine = false,
140144
enabled = true,
141145
contentPadding = PaddingValues(),
@@ -166,9 +170,13 @@ private fun TextInputPreview() {
166170
hint = "Pool name",
167171
endIcon = R.drawable.ic_close_16_circle
168172
)
169-
FearlessTheme {
170-
Column {
171-
TextInput(state, onInput = {})
172-
}
173+
Column(
174+
modifier = Modifier
175+
.background(black)
176+
.padding(6.dp),
177+
verticalArrangement = Arrangement.spacedBy(6.dp)
178+
) {
179+
TextInput(state, onInput = {})
180+
TextInput(state.copy(text = ""), onInput = {})
173181
}
174182
}

common/src/main/java/jp/co/soramitsu/common/data/network/OptionsProvider.kt

-7
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,4 @@ object OptionsProvider {
55
var CURRENT_VERSION_NAME: String = ""
66
var APPLICATION_ID: String = ""
77
var CURRENT_BUILD_TYPE: String = ""
8-
9-
val header: String by lazy {
10-
"$APPLICATION_ID/$CURRENT_VERSION_NAME/$CURRENT_VERSION_CODE/$CURRENT_BUILD_TYPE"
11-
}
12-
13-
const val soraConfigCommon = "https://config.polkaswap2.io/prod/common.json"
14-
const val soraConfigMobile = "https://config.polkaswap2.io/prod/mobile.json"
158
}

common/src/main/java/jp/co/soramitsu/common/data/network/subquery/SubsquidSoraStakingRewards.kt

-13
This file was deleted.

common/src/main/java/jp/co/soramitsu/common/di/modules/NetworkModule.kt

+81
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.neovisionaries.ws.client.WebSocketFactory
66
import dagger.Module
77
import dagger.Provides
88
import dagger.hilt.InstallIn
9+
import dagger.hilt.android.qualifiers.ApplicationContext
910
import dagger.hilt.components.SingletonComponent
1011
import java.io.File
1112
import java.util.concurrent.TimeUnit
@@ -15,6 +16,7 @@ import jp.co.soramitsu.common.data.network.AndroidLogger
1516
import jp.co.soramitsu.common.data.network.AppLinksProvider
1617
import jp.co.soramitsu.common.data.network.HttpExceptionHandler
1718
import jp.co.soramitsu.common.data.network.NetworkApiCreator
19+
import jp.co.soramitsu.common.data.network.OptionsProvider
1820
import jp.co.soramitsu.common.data.network.nomis.NomisApi
1921
import jp.co.soramitsu.common.data.network.rpc.SocketSingleRequestExecutor
2022
import jp.co.soramitsu.common.resources.ResourceManager
@@ -23,6 +25,21 @@ import jp.co.soramitsu.shared_utils.wsrpc.logging.Logger
2325
import jp.co.soramitsu.shared_utils.wsrpc.recovery.Reconnector
2426
import jp.co.soramitsu.shared_utils.wsrpc.request.CoroutinesRequestExecutor
2527
import jp.co.soramitsu.shared_utils.wsrpc.request.RequestExecutor
28+
import jp.co.soramitsu.xnetworking.lib.datasources.blockexplorer.api.BlockExplorerRepository
29+
import jp.co.soramitsu.xnetworking.lib.datasources.blockexplorer.impl.BlockExplorerRepositoryImpl
30+
import jp.co.soramitsu.xnetworking.lib.datasources.chainsconfig.api.ConfigDAO
31+
import jp.co.soramitsu.xnetworking.lib.datasources.chainsconfig.api.data.ConfigParser
32+
import jp.co.soramitsu.xnetworking.lib.datasources.chainsconfig.impl.SuperWalletConfigDAOImpl
33+
import jp.co.soramitsu.xnetworking.lib.datasources.chainsconfig.impl.data.RemoteConfigParserImpl
34+
import jp.co.soramitsu.xnetworking.lib.datasources.txhistory.api.HistoryItemsFilter
35+
import jp.co.soramitsu.xnetworking.lib.datasources.txhistory.api.TxHistoryRepository
36+
import jp.co.soramitsu.xnetworking.lib.datasources.txhistory.api.models.TxHistoryItem
37+
import jp.co.soramitsu.xnetworking.lib.datasources.txhistory.impl.TxHistoryRepositoryImpl
38+
import jp.co.soramitsu.xnetworking.lib.datasources.txhistory.impl.builder.ExpectActualDBDriverFactory
39+
import jp.co.soramitsu.xnetworking.lib.engines.rest.api.RestClient
40+
import jp.co.soramitsu.xnetworking.lib.engines.rest.api.models.AbstractRestClientConfig
41+
import jp.co.soramitsu.xnetworking.lib.engines.rest.impl.RestClientImpl
42+
import kotlinx.serialization.json.Json
2643
import okhttp3.Cache
2744
import okhttp3.CacheControl
2845
import okhttp3.OkHttpClient
@@ -40,6 +57,70 @@ private const val NOMIS_TIMEOUT_MINUTES = 2L
4057
@Module
4158
class NetworkModule {
4259

60+
@Singleton
61+
@Provides
62+
fun provideRestClient(
63+
json: Json,
64+
): RestClient = RestClientImpl(
65+
restClientConfig = object : AbstractRestClientConfig() {
66+
override fun getConnectTimeoutMillis(): Long = 30_000L
67+
override fun getOrCreateJsonConfig(): Json = json
68+
override fun getRequestTimeoutMillis(): Long = 30_000L
69+
override fun getSocketTimeoutMillis(): Long = 30_000L
70+
override fun isLoggingEnabled(): Boolean = BuildConfig.DEBUG
71+
}
72+
)
73+
74+
@Singleton
75+
@Provides
76+
fun provideConfigDAO(configParser: ConfigParser): ConfigDAO =
77+
SuperWalletConfigDAOImpl(configParser = configParser)
78+
79+
@Singleton
80+
@Provides
81+
fun provideTxHistoryRepository(
82+
@ApplicationContext cnt: Context,
83+
configDAO: ConfigDAO,
84+
restClient: RestClient,
85+
): TxHistoryRepository {
86+
return TxHistoryRepositoryImpl(
87+
historyItemsFilter = object : HistoryItemsFilter {
88+
override fun List<TxHistoryItem>.filterCachedHistoryItems(): List<TxHistoryItem> = this
89+
90+
override fun List<TxHistoryItem>.filterPagedHistoryItems(): List<TxHistoryItem> = this
91+
},
92+
restClient = restClient,
93+
configDAO = configDAO,
94+
databaseDriverFactory = ExpectActualDBDriverFactory(
95+
context = cnt,
96+
name = "fearlessxndb",
97+
)
98+
)
99+
}
100+
101+
@Singleton
102+
@Provides
103+
fun provideSoraWalletBlockExplorerInfo(
104+
configDAO: ConfigDAO,
105+
restClient: RestClient,
106+
repo: TxHistoryRepository,
107+
): BlockExplorerRepository {
108+
return BlockExplorerRepositoryImpl(
109+
configDAO = configDAO,
110+
restClient = restClient,
111+
txHistoryRepository = repo,
112+
)
113+
}
114+
115+
@Singleton
116+
@Provides
117+
fun provideConfigParser(
118+
restClient: RestClient
119+
): ConfigParser = RemoteConfigParserImpl(
120+
restClient = restClient,
121+
chainsRequestUrl = "https://raw.githubusercontent.com/soramitsu/shared-features-utils/MWR-819/chains/xn.json",
122+
)
123+
43124
@Provides
44125
@Singleton
45126
fun provideAppLinksProvider(): AppLinksProvider {

common/src/main/java/jp/co/soramitsu/common/presentation/PermissionExt.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package jp.co.soramitsu.common.presentation
22

33
import androidx.fragment.app.Fragment
4-
import jp.co.soramitsu.android_foundation.core.PermissionResult
5-
import jp.co.soramitsu.android_foundation.core.RuntimePermission
6-
import jp.co.soramitsu.android_foundation.kotlin.PermissionException
4+
import jp.co.soramitsu.runtime_permission.core.PermissionResult
5+
import jp.co.soramitsu.runtime_permission.core.RuntimePermission
6+
import jp.co.soramitsu.runtime_permission.kotlin.PermissionException
77

88
suspend fun Fragment.askPermissionsSafely(vararg permissions: String): Result<RuntimePermission> =
99
try {

common/src/main/java/jp/co/soramitsu/common/scan/ScannerActivity.kt

+14-17
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package jp.co.soramitsu.common.scan
22

3-
import android.app.Activity
43
import android.content.Intent
54
import android.graphics.Color
5+
import android.net.Uri
66
import android.os.Bundle
77
import android.view.KeyEvent
8-
import androidx.activity.result.ActivityResult
98
import androidx.activity.result.ActivityResultLauncher
9+
import androidx.activity.result.PickVisualMediaRequest
1010
import androidx.activity.result.contract.ActivityResultContracts
1111
import androidx.appcompat.app.AppCompatActivity
1212
import androidx.lifecycle.LiveData
@@ -24,21 +24,16 @@ import jp.co.soramitsu.common.utils.EventObserver
2424

2525
@AndroidEntryPoint
2626
class ScannerActivity : AppCompatActivity() {
27-
companion object {
28-
private const val QR_CODE_IMAGE_TYPE = "image/*"
29-
}
3027

3128
@Inject
3229
lateinit var viewModel: ScannerViewModel
3330

3431
private var capture: CaptureManager? = null
3532

36-
private val startForResultFromGallery: ActivityResultLauncher<Intent> =
37-
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
38-
if (result.resultCode == Activity.RESULT_OK) {
39-
result.data?.data?.let { selectedImageUri ->
40-
viewModel.qrFileChosen(selectedImageUri)
41-
}
33+
private val startForResultFromGallery: ActivityResultLauncher<PickVisualMediaRequest> =
34+
registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { resultUri: Uri? ->
35+
resultUri?.let { selectedImageUri ->
36+
viewModel.qrFileChosen(selectedImageUri)
4237
}
4338
}
4439

@@ -89,11 +84,9 @@ class ScannerActivity : AppCompatActivity() {
8984
}
9085

9186
private fun selectQrFromGallery() {
92-
val intent = Intent().apply {
93-
type = QR_CODE_IMAGE_TYPE
94-
action = Intent.ACTION_GET_CONTENT
95-
}
96-
startForResultFromGallery.launch(intent)
87+
val pickVisualMediaRequest =
88+
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
89+
startForResultFromGallery.launch(pickVisualMediaRequest)
9790
}
9891

9992
inline fun <V> LiveData<Event<V>>.observeEvent(crossinline observer: (V) -> Unit) {
@@ -120,7 +113,11 @@ class ScannerActivity : AppCompatActivity() {
120113
capture?.onSaveInstanceState(outState)
121114
}
122115

123-
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>, grantResults: IntArray) {
116+
override fun onRequestPermissionsResult(
117+
requestCode: Int,
118+
permissions: Array<out String>,
119+
grantResults: IntArray
120+
) {
124121
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
125122
capture?.onRequestPermissionsResult(requestCode, permissions, grantResults)
126123
}

0 commit comments

Comments
 (0)