Skip to content

Commit 4a408d4

Browse files
authored
Merge pull request #44 from reown-com/develop
BOM_1.1.2
2 parents 16afc9c + 6bdd041 commit 4a408d4

File tree

14 files changed

+87
-85
lines changed

14 files changed

+87
-85
lines changed

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import org.apache.http.entity.StringEntity
55
import org.apache.http.impl.client.HttpClients
66
import org.apache.http.util.EntityUtils
77
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
8-
import org.sonarqube.gradle.SonarExtension
9-
import java.net.URL
108
import java.util.Base64
119
import javax.xml.parsers.DocumentBuilderFactory
1210

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ const val KEY_PUBLISH_ARTIFACT_ID = "PUBLISH_ARTIFACT_ID"
55
const val KEY_SDK_NAME = "SDK_NAME"
66

77
//Latest versions
8-
const val BOM_VERSION = "1.1.1"
9-
const val FOUNDATION_VERSION = "1.1.1"
10-
const val CORE_VERSION = "1.1.1"
11-
const val SIGN_VERSION = "1.1.1"
12-
const val NOTIFY_VERSION = "1.1.1"
13-
const val WALLETKIT_VERSION = "1.1.1"
14-
const val APPKIT_VERSION = "1.1.1"
15-
const val MODAL_CORE_VERSION = "1.1.1"
8+
const val BOM_VERSION = "1.1.2"
9+
const val FOUNDATION_VERSION = "1.1.2"
10+
const val CORE_VERSION = "1.1.2"
11+
const val SIGN_VERSION = "1.1.2"
12+
const val NOTIFY_VERSION = "1.1.2"
13+
const val WALLETKIT_VERSION = "1.1.2"
14+
const val APPKIT_VERSION = "1.1.2"
15+
const val MODAL_CORE_VERSION = "1.1.2"
1616

1717
//Artifact ids
1818
const val ANDROID_BOM = "android-bom"

product/walletkit/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ android {
6565

6666
dependencies {
6767
implementation("net.java.dev.jna:jna:5.15.0@aar")
68-
implementation("com.github.reown-com:yttrium:0.4.11")
68+
implementation("com.github.reown-com:yttrium:0.5.2")
6969

7070
implementation(platform(libs.firebase.bom))
7171
implementation(libs.firebase.messaging)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import kotlin.coroutines.resume
2121
import kotlin.coroutines.suspendCoroutine
2222

2323
@ExperimentalCoroutinesApi
24-
class GetTransactionDetailsUseCaseTest {
24+
class GetCallDetailsUseCaseTest {
2525
private val chainAbstractionClient: ChainAbstractionClient = mockk()
2626
private val getTransactionDetailsUseCase = GetTransactionDetailsUseCase(chainAbstractionClient)
2727

product/walletkit/src/androidTest/kotlin/com/reown/walletkit/PrepareFulfilmentUseCaseTests.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ import uniffi.yttrium.FundingMetadata
1414
import uniffi.yttrium.InitialTransactionMetadata
1515
import uniffi.yttrium.Metadata
1616
import uniffi.yttrium.PrepareResponse
17-
import uniffi.yttrium.RouteResponseAvailable
18-
import uniffi.yttrium.RouteResponseError
19-
import uniffi.yttrium.RouteResponseNotRequired
20-
import uniffi.yttrium.RouteResponseSuccess
17+
import uniffi.yttrium.PrepareResponseAvailable
18+
import uniffi.yttrium.PrepareResponseError
19+
import uniffi.yttrium.PrepareResponseNotRequired
20+
import uniffi.yttrium.PrepareResponseSuccess
2121
import uniffi.yttrium.Transaction
2222
import kotlin.coroutines.resume
2323
import kotlin.coroutines.suspendCoroutine
@@ -29,8 +29,8 @@ class PrepareChainAbstractionUseCaseTest {
2929
@Test
3030
fun shouldCallOnSuccessWithAvailableResult() = runTest {
3131
val successResult = PrepareResponse.Success(
32-
RouteResponseSuccess.Available(
33-
RouteResponseAvailable(
32+
PrepareResponseSuccess.Available(
33+
PrepareResponseAvailable(
3434
orchestrationId = "123",
3535
initialTransaction = transaction,
3636
metadata = Metadata(
@@ -42,7 +42,7 @@ class PrepareChainAbstractionUseCaseTest {
4242
)
4343
)
4444
)
45-
coEvery { chainAbstractionClient.prepare(any()) } returns successResult
45+
coEvery { chainAbstractionClient.prepare(any(), any(), any()) } returns successResult
4646

4747
val result = async {
4848
suspendCoroutine { continuation ->
@@ -63,8 +63,8 @@ class PrepareChainAbstractionUseCaseTest {
6363

6464
@Test
6565
fun shouldCallOnSuccessWithNotRequiredResult() = runTest {
66-
val successResult = PrepareResponse.Success(RouteResponseSuccess.NotRequired(RouteResponseNotRequired(initialTransaction = transaction, transactions = emptyList<Transaction>())))
67-
coEvery { chainAbstractionClient.prepare(any()) } returns successResult
66+
val successResult = PrepareResponse.Success(PrepareResponseSuccess.NotRequired(PrepareResponseNotRequired(initialTransaction = transaction, transactions = emptyList())))
67+
coEvery { chainAbstractionClient.prepare(any(), any(), any()) } returns successResult
6868

6969
val result = async {
7070
suspendCoroutine { continuation ->
@@ -85,9 +85,9 @@ class PrepareChainAbstractionUseCaseTest {
8585

8686
@Test
8787
fun shouldCallOnErrorWithNoRoutesAvailableError() = runTest {
88-
val errorResult = PrepareResponse.Error(RouteResponseError(BridgingError.NO_ROUTES_AVAILABLE))
88+
val errorResult = PrepareResponse.Error(PrepareResponseError(BridgingError.NO_ROUTES_AVAILABLE))
8989

90-
coEvery { chainAbstractionClient.prepare(any()) } returns errorResult
90+
coEvery { chainAbstractionClient.prepare(any(), any(), any()) } returns errorResult
9191

9292
val result = async {
9393
suspendCoroutine { continuation ->
@@ -108,9 +108,9 @@ class PrepareChainAbstractionUseCaseTest {
108108

109109
@Test
110110
fun shouldCallOnErrorWithInsufficientFundsError() = runTest {
111-
val errorResult = PrepareResponse.Error(RouteResponseError(BridgingError.INSUFFICIENT_FUNDS))
111+
val errorResult = PrepareResponse.Error(PrepareResponseError(BridgingError.INSUFFICIENT_FUNDS))
112112

113-
coEvery { chainAbstractionClient.prepare(any()) } returns errorResult
113+
coEvery { chainAbstractionClient.prepare(any(), any(), any()) } returns errorResult
114114

115115
val result = async {
116116
suspendCoroutine { continuation ->
@@ -131,7 +131,7 @@ class PrepareChainAbstractionUseCaseTest {
131131

132132
@Test
133133
fun shouldCallOnErrorWithUnknownErrorOnException() = runTest {
134-
coEvery { chainAbstractionClient.prepare(any()) } throws RuntimeException("Some unexpected error")
134+
coEvery { chainAbstractionClient.prepare(any(), any(), any()) } throws RuntimeException("Some unexpected error")
135135

136136
val result = async {
137137
suspendCoroutine { continuation ->

product/walletkit/src/main/kotlin/com/reown/walletkit/client/Annotations.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.reown.walletkit.client
22

33
@RequiresOptIn(
4-
message = "This API is experimental and may change in a future release.",
4+
message = "This API is experimental and may change in a future release, use carefully.",
55
level = RequiresOptIn.Level.WARNING
66
)
77
@Retention(AnnotationRetention.BINARY)
88
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
99
annotation class ChainAbstractionExperimentalApi
1010

1111
@RequiresOptIn(
12-
message = "This API is experimental and may change in a future release.",
12+
message = "This API is experimental and may change in a future release, use carefully.",
1313
level = RequiresOptIn.Level.WARNING
1414
)
1515
@Retention(AnnotationRetention.BINARY)

product/walletkit/src/main/kotlin/com/reown/walletkit/client/ClientMapper.kt

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ package com.reown.walletkit.client
22

33
import com.reown.android.internal.common.signing.cacao.CacaoType
44
import com.reown.sign.client.Sign
5+
import com.squareup.moshi.Moshi
56
import uniffi.uniffi_yttrium.Eip1559Estimation
6-
import uniffi.uniffi_yttrium.OwnerSignature
7-
import uniffi.uniffi_yttrium.PreparedSendTransaction
8-
import uniffi.uniffi_yttrium.FfiTransaction
97
import uniffi.yttrium.Amount
8+
import uniffi.yttrium.Call
9+
import uniffi.yttrium.DoSendTransactionParams
1010
import uniffi.yttrium.FeeEstimatedTransaction
1111
import uniffi.yttrium.FundingMetadata
12-
import uniffi.yttrium.InitialTransaction
1312
import uniffi.yttrium.InitialTransactionMetadata
13+
import uniffi.yttrium.OwnerSignature
14+
import uniffi.yttrium.PrepareResponseAvailable
15+
import uniffi.yttrium.PreparedSendTransaction
1416
import uniffi.yttrium.Metadata as YMetadata
1517
import uniffi.yttrium.Transaction
16-
import uniffi.yttrium.RouteResponseAvailable
1718
import uniffi.yttrium.TransactionFee
1819
import uniffi.yttrium.TxnDetails
1920
import uniffi.yttrium.UiFields
@@ -297,16 +298,20 @@ internal fun Sign.Model.ConnectionState.Reason.toWallet(): Wallet.Model.Connecti
297298
}
298299

299300
@JvmSynthetic
300-
internal fun PreparedSendTransaction.toWallet(): Wallet.Params.PrepareSendTransactionsResult = Wallet.Params.PrepareSendTransactionsResult(hash, doSendTransactionParams)
301+
internal fun PreparedSendTransaction.toWallet(moshi: Moshi): Wallet.Params.PrepareSendTransactionsResult {
302+
val jsonParams = moshi.adapter(DoSendTransactionParams::class.java).toJson(doSendTransactionParams)
303+
return Wallet.Params.PrepareSendTransactionsResult(hash = hash, doSendTransactionParams = jsonParams, eip712Domain = domain)
304+
}
305+
301306

302307
@JvmSynthetic
303-
internal fun Wallet.Params.Transaction.toYttrium(): FfiTransaction = FfiTransaction(to = to, value = value, data = data)
308+
internal fun Wallet.Params.Call.toYttrium(): Call = Call(to = to, value = value, input = data)
304309

305310
@JvmSynthetic
306311
internal fun Wallet.Params.OwnerSignature.toYttrium(): OwnerSignature = OwnerSignature(owner = address, signature = signature)
307312

308313
@JvmSynthetic
309-
internal fun RouteResponseAvailable.toWallet(): Wallet.Model.PrepareSuccess.Available =
314+
internal fun PrepareResponseAvailable.toWallet(): Wallet.Model.PrepareSuccess.Available =
310315
Wallet.Model.PrepareSuccess.Available(
311316
fulfilmentId = orchestrationId,
312317
checkIn = metadata.checkIn.toLong(),
@@ -317,8 +322,8 @@ internal fun RouteResponseAvailable.toWallet(): Wallet.Model.PrepareSuccess.Avai
317322
)
318323

319324
@JvmSynthetic
320-
internal fun Wallet.Model.PrepareSuccess.Available.toYttrium(): RouteResponseAvailable =
321-
RouteResponseAvailable(
325+
internal fun Wallet.Model.PrepareSuccess.Available.toYttrium(): PrepareResponseAvailable =
326+
PrepareResponseAvailable(
322327
fulfilmentId,
323328
metadata = YMetadata(
324329
checkIn = checkIn.toULong(),
@@ -348,15 +353,6 @@ private fun InitialTransactionMetadata.toWallet(): Wallet.Model.InitialTransacti
348353
decimals = decimals.toInt()
349354
)
350355

351-
@JvmSynthetic
352-
fun Wallet.Model.InitialTransaction.toInitialYttrium(): InitialTransaction = InitialTransaction(
353-
from = from,
354-
to = to,
355-
value = value,
356-
chainId = chainId,
357-
input = input,
358-
)
359-
360356
@JvmSynthetic
361357
fun Transaction.toWallet(): Wallet.Model.Transaction = Wallet.Model.Transaction(
362358
from = from,

product/walletkit/src/main/kotlin/com/reown/walletkit/client/Wallet.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ object Wallet {
6464

6565
data class DecryptMessage(val topic: String, val encryptedMessage: String) : Params()
6666
data class GetSmartAccountAddress(val owner: Account) : Params()
67-
data class PrepareSendTransactions(val transactions: List<Transaction>, val owner: Account) : Params()
67+
data class PrepareSendTransactions(val calls: List<Call>, val owner: Account) : Params()
6868
data class DoSendTransactions(val owner: Account, val signatures: List<OwnerSignature>, val doSendTransactionParams: String) : Params()
69-
data class PrepareSendTransactionsResult(var hash: String, var doSendTransactionParams: String) : Params()
69+
data class PrepareSendTransactionsResult(var hash: String, var doSendTransactionParams: String, val eip712Domain: String, ) : Params()
7070
data class DoSendTransactionsResult(var userOperationHash: String) : Params()
7171
data class WaitForUserOperationReceipt(var owner: Account, var userOperationHash: String) : Params()
7272
data class OwnerSignature(val address: String, val signature: String) : Params()
7373
data class Account(val address: String) : Params()
74-
data class Transaction(val to: String, val value: String, val data: String) : Params()
74+
data class Call(val to: String, val value: String, val data: String) : Params()
7575
}
7676

7777
sealed class Model {

product/walletkit/src/main/kotlin/com/reown/walletkit/client/WalletKit.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.reown.walletkit.client
22

33
import com.reown.android.Core
44
import com.reown.android.CoreInterface
5+
import com.reown.android.internal.common.di.AndroidCommonDITags
56
import com.reown.android.internal.common.scope
67
import com.reown.android.internal.common.wcKoinApp
78
import com.reown.sign.client.Sign
@@ -15,7 +16,10 @@ import com.reown.walletkit.use_cases.EstimateGasUseCase
1516
import com.reown.walletkit.use_cases.ChainAbstractionStatusUseCase
1617
import com.reown.walletkit.use_cases.GetERC20TokenBalanceUseCase
1718
import com.reown.walletkit.use_cases.GetTransactionDetailsUseCase
19+
import com.squareup.moshi.Moshi
1820
import kotlinx.coroutines.*
21+
import org.koin.core.qualifier.named
22+
import uniffi.yttrium.DoSendTransactionParams
1923
import java.util.*
2024

2125
object WalletKit {
@@ -26,6 +30,7 @@ object WalletKit {
2630
private val estimateGasUseCase: EstimateGasUseCase by wcKoinApp.koin.inject()
2731
private val getTransactionDetailsUseCase: GetTransactionDetailsUseCase by wcKoinApp.koin.inject()
2832
private val getERC20TokenBalanceUseCase: GetERC20TokenBalanceUseCase by wcKoinApp.koin.inject()
33+
private val moshi: Moshi = wcKoinApp.koin.get<Moshi.Builder>(named(AndroidCommonDITags.MOSHI)).build()
2934

3035
interface WalletDelegate {
3136
fun onSessionProposal(sessionProposal: Wallet.Model.SessionProposal, verifyContext: Wallet.Model.VerifyContext)
@@ -307,8 +312,9 @@ object WalletKit {
307312

308313
val client = safeInteractor.getOrCreate(Account(params.owner.address))
309314
scope.launch {
310-
async { client.prepareSendTransactions(params.transactions.map { it.toYttrium() }).toWallet() }
315+
async { client.prepareSendTransactions(params.calls.map { it.toYttrium() }) }
311316
.await()
317+
.toWallet(moshi)
312318
.let(onSuccess)
313319
}
314320
}
@@ -319,8 +325,9 @@ object WalletKit {
319325
check(::safeInteractor.isInitialized) { "Smart Accounts are not enabled" }
320326

321327
val client = safeInteractor.getOrCreate(Account(params.owner.address))
328+
val doSendParams = moshi.adapter(DoSendTransactionParams::class.java).fromJson(params.doSendTransactionParams) ?: throw IllegalStateException("Failed to parse DoSendTransactionParams")
322329
scope.launch {
323-
async { client.doSendTransactions(params.signatures.map { it.toYttrium() }, params.doSendTransactionParams) }
330+
async { client.doSendTransactions(params.signatures.map { it.toYttrium() }, doSendParams) }
324331
.await()
325332
.let { userOpHash -> onSuccess(Wallet.Params.DoSendTransactionsResult(userOpHash)) }
326333
}

product/walletkit/src/main/kotlin/com/reown/walletkit/smart_account/SafeInteractor.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package com.reown.walletkit.smart_account
33
import com.reown.android.internal.common.model.ProjectId
44
import com.reown.android.internal.common.wcKoinApp
55
import uniffi.uniffi_yttrium.FfiAccountClient
6-
import uniffi.uniffi_yttrium.FfiAccountClientConfig
7-
86
import uniffi.yttrium.Config
97
import uniffi.yttrium.Endpoint
108
import uniffi.yttrium.Endpoints
@@ -31,14 +29,6 @@ class SafeInteractor(private val pimlicoApiKey: String) {
3129
paymaster = Endpoint(baseUrl = pimlicoUrl, apiKey = ""),
3230
)
3331
val config = Config(endpoints)
34-
val accountConfig = FfiAccountClientConfig(
35-
ownerAddress = account.address,
36-
chainId = account.reference.toULong(),
37-
config = config,
38-
privateKey = "ff89825a799afce0d5deaa079cdde227072ec3f62973951683ac8cc033000000", //todo: remove sign service, just placeholder
39-
safe = true,
40-
signerType = "PrivateKey" //todo: remove sign service
41-
)
42-
return FfiAccountClient(accountConfig)
32+
return FfiAccountClient(owner = account.address, chainId = account.reference.toULong(), config = config)
4333
}
4434
}

0 commit comments

Comments
 (0)