Skip to content

Commit

Permalink
retrieve an account balance
Browse files Browse the repository at this point in the history
  • Loading branch information
sajalbnl committed Sep 2, 2024
1 parent f9d0b36 commit fbd9755
Show file tree
Hide file tree
Showing 6 changed files with 198 additions and 0 deletions.
66 changes: 66 additions & 0 deletions wallet_app/android/.idea/other.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions wallet_app/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ dependencies {
implementation(libs.androidx.hilt.navigation.fragment)
implementation (libs.androidx.hilt.navigation.compose.v100alpha03)

implementation (libs.core)

implementation(libs.androidx.ui.tooling.preview)
debugImplementation(libs.androidx.ui.tooling)

Expand Down
3 changes: 3 additions & 0 deletions wallet_app/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
<activity android:name=".AddTokenActivity"
android:exported="true"
android:theme="@style/Theme.Walletapp"/>
<activity android:name=".AccountBalanceActivity"
android:exported="true"
android:theme="@style/Theme.Walletapp"/>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.example.walletapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.graphics.toColorInt
import androidx.core.view.WindowCompat
import org.web3j.protocol.Web3j
import org.web3j.protocol.http.HttpService
import org.web3j.utils.Convert
import java.math.BigDecimal
import com.example.walletapp.ui.theme.WalletappTheme

class AccountBalanceActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
WindowCompat.setDecorFitsSystemWindows(window, true)
setContent {
WalletappTheme {
Surface(modifier = Modifier.fillMaxSize()) {
AccountBalanceScreenView(
)
}
}
}
}

@Composable
fun AccountBalanceScreenView(){

val rpcUrl = "https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID" // Replace with your RPC URL
val accountAddress = "0xYourHardcodedAccountAddress" // account Address


// Call the balance retrieval function
val balance = getAccountBalance(rpcUrl, accountAddress)?.toPlainString() ?: "0.0"

Column(modifier = Modifier
.fillMaxSize()
.background(Color("#0C0C4F".toColorInt()))
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center){
Spacer(modifier = Modifier.height(40.dp))
Text(
text = "Your Account Balance",
fontFamily = FontFamily(Font(R.font.publicsans_regular)),
color = Color.White,
fontSize = 14.sp
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "$$balance",
fontFamily = FontFamily(Font(R.font.inter_regular)),
color = Color.White,
fontSize = 28.sp,
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(top = 70.dp)
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = accountAddress,
fontFamily = FontFamily(Font(R.font.inter_regular)),
color = Color.White,
fontSize = 16.sp,
modifier = Modifier.align(Alignment.CenterHorizontally)
)



}
}

fun getAccountBalance(rpcUrl: String, accountAddress: String): BigDecimal? {
val web3j = Web3j.build(HttpService(rpcUrl))
return try {
val ethGetBalance = web3j.ethGetBalance(accountAddress, org.web3j.protocol.core.DefaultBlockParameterName.LATEST).send()
val balanceInWei = ethGetBalance.balance
Convert.fromWei(balanceInWei.toString(), Convert.Unit.ETHER)
} catch (e: Exception) {
e.printStackTrace()
null
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ import androidx.compose.ui.unit.sp
import androidx.core.graphics.toColorInt
import androidx.core.view.WindowCompat
import com.example.walletapp.ui.theme.WalletappTheme
import org.web3j.protocol.Web3j
import org.web3j.protocol.http.HttpService
import org.web3j.utils.Convert
import java.math.BigDecimal

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -65,6 +69,7 @@ class MainActivity : ComponentActivity() {
fun Wallet( modifier: Modifier) {
val context = (LocalContext.current as Activity)


Column(
modifier = Modifier
.fillMaxSize()
Expand Down Expand Up @@ -111,6 +116,20 @@ fun Wallet( modifier: Modifier) {
.align(Alignment.CenterHorizontally)
)

Button(
onClick = {val intent = Intent(context, AccountBalanceActivity::class.java)
context.startActivity(intent)},
colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
shape = RoundedCornerShape(15.dp),
modifier = Modifier.background(Color.Transparent)
.padding(10.dp)
.align(Alignment.CenterHorizontally)
) {
Text(text = "Get Account Balance", fontFamily = FontFamily(Font(R.font.publicsans_bold)),
color = Color.White,
fontSize = 14.sp)
}


Spacer(modifier = Modifier.weight(1f))
Row(
Expand Down Expand Up @@ -190,3 +209,4 @@ fun WalletCard(icon: Painter,amount:String,exchange:Double,type:String){
}
}
}

2 changes: 2 additions & 0 deletions wallet_app/android/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
activityCompose = "1.9.1"
agp = "8.5.2"
converterGson = "2.9.0"
core = "4.8.7"
hiltAndroid = "2.51"
hiltNavigationCompose = "1.2.0"
hiltNavigationComposeVersion = "1.2.0"
Expand Down Expand Up @@ -33,6 +34,7 @@ androidx-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedat
androidx-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
androidx-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "converterGson" }
core = { module = "org.web3j:core", version.ref = "core" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
Expand Down

0 comments on commit fbd9755

Please sign in to comment.