Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class SomeModel(context: Context) {
is Result.Error -> {
Logger.log("Ethereum connection error: ${result.error.message}")
}
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum connection result: ${result.value}")
}
}
Expand All @@ -98,7 +98,7 @@ class SomeModel(context: Context) {
is Result.Error -> {
Logger.log("Ethereum connection error: ${result.error.message}")
}
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum connection result: ${result.value}")
}
}
Expand Down Expand Up @@ -187,7 +187,7 @@ val balance = ethereum.getEthBalance(ethereum.selectedAddress, "latest")

// Make request
when (balance) {
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum account balance: ${result.value}")
balance = result.value
}
Expand All @@ -210,7 +210,7 @@ when (val result = ethereum.ethSignTypedDataV4(message, address)) {
is Result.Error -> {
Logger.log("Ethereum sign error: ${result.error.message}")
}
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum sign result: ${result.value}")
}
}
Expand All @@ -236,7 +236,7 @@ when (val result = ethereum.sendRequestBatch(listOf(ethereumRequest1, ethereumRe
is Result.Error -> {
Logger.log("Ethereum batch sign error: ${result.error.message}")
}
is Result.Success.Items -> {
is Result.Success -> {
Logger.log("Ethereum batch sign result: ${result.value}")
}
}
Expand All @@ -254,7 +254,7 @@ val to = "0x0000000000000000000000000000000000000000"
val value = "0x8ac7230489e80000"

when (val result = ethereum.sendTransaction(from, to, value)) {
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum transaction result: ${result.value}")
balance = result.value
}
Expand Down Expand Up @@ -301,7 +301,7 @@ when (val result = ethereum.connectWith(sendTransactionRequest)) {
is Result.Error -> {
// handle error
}
is Result.Success.Item -> {
is Result.Success -> {
// transaction hash ${result.value}
}
}
Expand All @@ -319,7 +319,7 @@ when (val result = ethereum.connectSign(message)) {
is Result.Error -> {
Logger.log("Ethereum connectSign error: ${result.error.message}")
}
is Result.Success.Item -> {
is Result.Success -> {
Logger.log("Ethereum connectSign result: ${result.value}")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import kotlinx.coroutines.launch
fun BatchSignMessageScreen(
navController: NavController,
ethereumState: EthereumState,
batchSign: suspend (messages: List<String>, address: String) -> Result
batchSign: suspend (messages: List<String>, address: String) -> Result<List<String>>
) {
var signResult by remember { mutableStateOf("") }
var errorMessage by remember { mutableStateOf<String?>(null) }
Expand Down Expand Up @@ -57,7 +57,7 @@ fun BatchSignMessageScreen(
DappButton(buttonText = stringResource(R.string.batch_sign)) {
coroutineScope.launch {
when (val result = batchSign(batchSignMessages, ethereumState.selectedAddress)) {
is Result.Success.Items -> {
is Result.Success -> {
errorMessage = null
signResult = result.value.joinToString("\n=================================\n")
}
Expand Down Expand Up @@ -88,6 +88,6 @@ fun PreviewBatchSignMessage() {
BatchSignMessageScreen(
rememberNavController(),
ethereumState = EthereumState("", "", ""),
batchSign = { _, _ -> Result.Success.Items(listOf()) }
batchSign = { _, _ -> Result.Success(listOf()) }
)
}
4 changes: 2 additions & 2 deletions app/src/main/java/com/metamask/dapp/ConnectScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import kotlinx.coroutines.launch
@Composable
fun ConnectScreen(
ethereumState: EthereumState,
connect: suspend () -> Result,
connect: suspend () -> Result<String>,
connectSign: () -> Unit,
connectWith: () -> Unit,
disconnect: () -> Unit,
Expand Down Expand Up @@ -101,7 +101,7 @@ fun ConnectScreen(
fun PreviewConnectClearButtons() {
ConnectScreen(
ethereumState = EthereumState("", "", ""),
connect = { -> Result.Success.Item("")},
connect = { -> Result.Success("")},
connectSign = { },
connectWith = { },
disconnect = { },
Expand Down
32 changes: 16 additions & 16 deletions app/src/main/java/com/metamask/dapp/EthereumFlowViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,25 @@ class EthereumFlowViewModel @Inject constructor(
): ViewModel() {
val ethereumFlow: Flow<EthereumState> get() = ethereum.ethereumState

suspend fun connect() : Result {
suspend fun connect() : Result<String> {
return ethereum.connect()
}

suspend fun connectWith(request: EthereumRequest) : Result {
suspend fun connectWith(request: EthereumRequest) : Result<String> {
return ethereum.connectWith(request)
}

suspend fun connectSign(message: String) : Result {
suspend fun connectSign(message: String) : Result<String> {
return ethereum.connectSign(message)
}

suspend fun connectWithSendTransaction(amount: String,
suspend fun connectWithSendTransaction(value: String,
from: String,
to: String) : Result {
to: String) : Result<String> {
val params: MutableMap<String, Any> = mutableMapOf(
"from" to from,
"to" to to,
"amount" to amount
"value" to value
)

val transactionRequest = EthereumRequest(
Expand All @@ -41,17 +41,17 @@ class EthereumFlowViewModel @Inject constructor(
return connectWith(transactionRequest)
}

suspend fun sendRequestBatch(requests: List<EthereumRequest>) : Result {
suspend fun sendRequestBatch(requests: List<EthereumRequest>) : Result<List<String>> {
return ethereum.sendRequestBatch(requests)
}

suspend fun sendRequest(request: EthereumRequest) : Result {
suspend fun sendRequest(request: EthereumRequest) : Result<Any?> {
return ethereum.sendRequest(request)
}

suspend fun sendBatchSigningRequest(
messages: List<String>,
address: String) : Result {
address: String) : Result<List<String>> {
val requestBatch: MutableList<EthereumRequest> = mutableListOf()

for (message in messages) {
Expand All @@ -69,28 +69,28 @@ class EthereumFlowViewModel @Inject constructor(
suspend fun signMessage(
message: String,
address: String,
) : Result {
) : Result<String> {
return ethereum.ethSignTypedDataV4(typedData = message, address)
}

suspend fun getBalance(address: String, block: String = "latest") : Result {
suspend fun getBalance(address: String, block: String = "latest") : Result<String> {
return ethereum.getEthBalance(address, block)
}

suspend fun gasPrice() : Result {
suspend fun gasPrice() : Result<String> {
return ethereum.getEthGasPrice()
}

suspend fun web3ClientVersion() : Result {
suspend fun web3ClientVersion() : Result<String> {
return ethereum.getWeb3ClientVersion()
}

suspend fun sendTransaction(
amount: String,
value: String,
from: String,
to: String,
) : Result {
return ethereum.sendTransaction(from = from, to = to, value = amount)
) : Result<String> {
return ethereum.sendTransaction(from = from, to = to, value = value)
}

suspend fun switchChain(chainId: String) : SwitchChainResult {
Expand Down
87 changes: 16 additions & 71 deletions app/src/main/java/com/metamask/dapp/EthereumViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class EthereumViewModel @Inject constructor(
logger.log("Ethereum connection error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Items -> {
is Result.Success -> {
logger.log("Ethereum connection result: ${result.value.first()}")
onSuccess()
}
Expand All @@ -41,7 +41,7 @@ class EthereumViewModel @Inject constructor(
logger.log("Connectwith error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Connectwith result: $result")
onSuccess(result.value)
}
Expand Down Expand Up @@ -76,7 +76,7 @@ class EthereumViewModel @Inject constructor(
logger.log("Connect & sign error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Connect & sign result: $result")
onSuccess(result.value)
}
Expand Down Expand Up @@ -114,7 +114,7 @@ class EthereumViewModel @Inject constructor(
logger.log("Ethereum batch sign error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Items -> {
is Result.Success -> {
logger.log("Ethereum batch sign result: $result")
onSuccess(result.value)
}
Expand All @@ -129,20 +129,13 @@ class EthereumViewModel @Inject constructor(
onSuccess: (String) -> Unit,
onError: (String) -> Unit
) {
val params: List<String> = listOf(address, message)

val signRequest = EthereumRequest(
method = EthereumMethod.ETH_SIGN_TYPED_DATA_V4.value,
params = params
)

ethereum.sendRequest(signRequest) { result ->
ethereum.ethSignTypedDataV4(message, address) { result ->
when (result) {
is Result.Error -> {
logger.log("Ethereum sign error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Ethereum sign result: $result")
onSuccess(result.value)
}
Expand All @@ -156,20 +149,13 @@ class EthereumViewModel @Inject constructor(
onSuccess: (String) -> Unit,
onError: (String) -> Unit
) {
val params: List<String> = listOf(address, "latest")

val getBalanceRequest = EthereumRequest(
method = EthereumMethod.ETH_GET_BALANCE.value,
params = params
)

ethereum.sendRequest(getBalanceRequest) { result ->
ethereum.getEthBalance(address, "latest") { result ->
when (result) {
is Result.Error -> {
logger.log("Ethereum get balance error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Ethereum get balance result: $result")
onSuccess(result.value)
}
Expand All @@ -182,20 +168,13 @@ class EthereumViewModel @Inject constructor(
onSuccess: (String) -> Unit,
onError: (String) -> Unit
) {
val params: List<String> = listOf()

val gasPriceRequest = EthereumRequest(
method = EthereumMethod.ETH_GAS_PRICE.value,
params = params
)

ethereum.sendRequest(gasPriceRequest) { result ->
ethereum.gasPrice { result ->
when (result) {
is Result.Error -> {
logger.log("Ethereum gas price error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Ethereum gas price result: $result")
onSuccess(result.value)
}
Expand All @@ -208,20 +187,13 @@ class EthereumViewModel @Inject constructor(
onSuccess: (String) -> Unit,
onError: (String) -> Unit
) {
val params: List<String> = listOf()

val web3ClientVersionRequest = EthereumRequest(
method = EthereumMethod.WEB3_CLIENT_VERSION.value,
params = params
)

ethereum.sendRequest(web3ClientVersionRequest) { result ->
ethereum.getWeb3ClientVersion { result ->
when (result) {
is Result.Error -> {
logger.log("Ethereum web3 client version error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Ethereum web3 client version result: $result")
onSuccess(result.value)
}
Expand All @@ -237,24 +209,13 @@ class EthereumViewModel @Inject constructor(
onSuccess: (String) -> Unit,
onError: (message: String) -> Unit
) {
val params: MutableMap<String, Any> = mutableMapOf(
"from" to from,
"to" to to,
"value" to value
)

val transactionRequest = EthereumRequest(
method = EthereumMethod.ETH_SEND_TRANSACTION.value,
params = listOf(params)
)

ethereum.sendRequest(transactionRequest) { result ->
ethereum.sendTransaction(from, to, value) { result ->
when (result) {
is Result.Error -> {
logger.log("Ethereum transaction error: ${result.error.message}")
onError(result.error.message)
}
is Result.Success.Item -> {
is Result.Success -> {
logger.log("Ethereum transaction result: $result")
onSuccess(result.value)
}
Expand All @@ -268,13 +229,7 @@ class EthereumViewModel @Inject constructor(
onSuccess: (message: String) -> Unit,
onError: (message: String, action: (() -> Unit)?) -> Unit
) {
val switchChainParams: Map<String, String> = mapOf("chainId" to chainId)
val switchChainRequest = EthereumRequest(
method = EthereumMethod.SWITCH_ETHEREUM_CHAIN.value,
params = listOf(switchChainParams)
)

ethereum.sendRequest(switchChainRequest) { result ->
ethereum.switchEthereumChain(chainId) { result ->
when (result) {
is Result.Error -> {
if (result.error.code == ErrorType.UNRECOGNIZED_CHAIN_ID.code || result.error.code == ErrorType.SERVER_ERROR.code) {
Expand Down Expand Up @@ -310,17 +265,7 @@ class EthereumViewModel @Inject constructor(
) {
logger.log("Adding chainId: $chainId")

val addChainParams: Map<String, Any> = mapOf(
"chainId" to chainId,
"chainName" to Network.chainNameFor(chainId),
"rpcUrls" to Network.rpcUrls(Network.fromChainId(chainId))
)
val addChainRequest = EthereumRequest(
method = EthereumMethod.ADD_ETHEREUM_CHAIN.value,
params = listOf(addChainParams)
)

ethereum.sendRequest(addChainRequest) { result ->
ethereum.addEthereumChain(chainId, Network.rpcUrls(Network.fromChainId(chainId))) { result ->
when (result) {
is Result.Error -> {
onError("Add chain error: ${result.error.message}")
Expand Down
Loading