@Chesterfield25

Как сделать подключение к metamask?

Я только начал изучать котлин и Jetpack Compose поэтому не судите строго.
У меня есть код в котором я использую в ConstraintLayout всего две кнопки как в примере https://docs.metamask.io/wallet/concepts/sdk/
Подключение и очистка сессии.

package com.arturio.cryptobox

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
import com.arturio.cryptobox.ui.theme.CryptoBoxTheme
import io.metamask.androidsdk.Ethereum

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            CryptoBoxTheme {
                GreetingPreview()
            }
        }
    }
}

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
    ConstraintLayout(modifier = Modifier.fillMaxSize()) {
        val (connect, clear) = createRefs()
        
        Button(onClick = {},
            modifier = Modifier
                .padding(start = 16.dp, end = 16.dp)
                .fillMaxWidth()
                .constrainAs(connect) {
                    bottom.linkTo(parent.bottom, 164.dp)
                    start.linkTo(parent.start)
                    end.linkTo(parent.end)
                }
        ) {
            Text(text = "Connect")
        }

        Button(onClick = {},
            modifier = Modifier
                .padding(start = 16.dp, end = 16.dp)
                .fillMaxWidth()
                .constrainAs(clear) {
                    bottom.linkTo(connect.top)
                    start.linkTo(connect.start)
                    end.linkTo(connect.end)
                }
        ) {
            Text(text = "Clear")
        }
    }
}


В самой библиотеке на гите указано.

3.1. Используйте объект поставщика напрямую
SDK поддерживает как обратные вызовы, так и сопрограммы. При использовании обратных вызовов используйте Ethereumобъект, а при использовании сопрограмм используйте EthereumFlowобъект. Используйте объект Ethereumили EthereumFlow поставщика напрямую, чтобы подключить ваше децентрализованное приложение к MetaMask, добавив следующий код в файл проекта:

@AndroidEntryPoint
class SomeModel(context: Context) {
    
    val dappMetadata = DappMetadata("Droid Dapp", "https://droiddapp.com")
    val infuraAPIKey = "1234567890" // We use Infura API for read-only RPCs for a seamless user experience 
    
    // A) Using callbacks
    val ethereum = Ethereum(context, dappMetadata, SDKOptions(infuraAPIKey))
    
    // This is the same as calling eth_requestAccounts
    ethereum.connect() { result ->
        when (result) {
            is Result.Error -> {
                Logger.log("Ethereum connection error: ${result.error.message}")
            }
            is Result.Success.Item -> {
                Logger.log("Ethereum connection result: ${result.value}")
            }
        }
    }
    
    // B) Using coroutines
    
    val coroutineScope = rememberCoroutineScope()
    
    // This is the same as calling eth_requestAccounts
    coroutineScope.launch {
        when (val result = ethereum.connect()) {
            is Result.Error -> {
                Logger.log("Ethereum connection error: ${result.error.message}")
            }
            is Result.Success.Item -> {
                Logger.log("Ethereum connection result: ${result.value}")
            }
        }    
    }
}


Но я понятия не имею куда именно его добавлять.
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы