Skip to content

Commit 65c2f88

Browse files
committed
Updated and tested solana example
1 parent 3bd388d commit 65c2f88

File tree

6 files changed

+78
-23
lines changed

6 files changed

+78
-23
lines changed

android-solana-example/app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ dependencies {
6363
implementation("androidx.compose.ui:ui-graphics")
6464
implementation("androidx.compose.ui:ui-tooling-preview")
6565
implementation("androidx.compose.material3:material3")
66-
implementation("com.github.Web3Auth:web3auth-android-sdk:9.0.4")
66+
implementation("com.github.Web3Auth:web3auth-android-sdk:10.0.0")
6767
testImplementation("junit:junit:4.13.2")
6868
androidTestImplementation("androidx.test.ext:junit:1.1.5")
6969
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

android-solana-example/app/src/main/java/com/example/androidsolanaexample/data/Web3AuthHelper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ interface Web3AuthHelper {
1414
fun getUserInfo(): UserInfo
1515
suspend fun initialize(): CompletableFuture<Void>
1616

17-
suspend fun setResultUrl(uri: Uri?): Unit
17+
fun setResultUrl(uri: Uri?)
1818
suspend fun isUserAuthenticated(): Boolean
19-
}
19+
}

android-solana-example/app/src/main/java/com/example/androidsolanaexample/data/Web3AuthHelperImpl.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ class Web3AuthHelperImpl(
1111
private val web3Auth: Web3Auth
1212
): Web3AuthHelper {
1313
override suspend fun login(loginParams: LoginParams): CompletableFuture<Web3AuthResponse> {
14-
return web3Auth.login(loginParams)
14+
return web3Auth.connectTo(loginParams)
1515
}
1616

1717
override suspend fun logOut(): CompletableFuture<Void> {
1818
return web3Auth.logout()
1919
}
2020

2121
override fun getSolanaPrivateKey(): String {
22-
return web3Auth.getEd25519PrivKey()
22+
return web3Auth.getEd25519PrivateKey()
2323
}
2424

2525
override fun getUserInfo(): UserInfo {
@@ -39,12 +39,15 @@ class Web3AuthHelperImpl(
3939
}
4040
}
4141

42-
override suspend fun setResultUrl(uri: Uri?) {
43-
return web3Auth.setResultUrl(uri)
42+
override fun setResultUrl(uri: Uri?) {
43+
web3Auth.setResultUrl(uri)
4444
}
4545

46-
override suspend fun isUserAuthenticated(): Boolean {
47-
return web3Auth.getPrivkey().isNotEmpty()
48-
}
46+
override suspend fun isUserAuthenticated(): Boolean =
47+
try {
48+
web3Auth.getPrivateKey().isNotEmpty()
49+
} catch (_: Exception) {
50+
false
51+
}
4952

50-
}
53+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.example.androidsolanaexample.data
2+
3+
object Web3AuthSampleConfig {
4+
const val CLIENT_ID =
5+
"BPi5PB_UiIZ-cPz1GtV5i1I2iOSOHuimiXBI0e-Oe_u6X3oVAbCiAZOTEBtTXw4tsluTITPqA8zMsfxIKMjiqNQ"
6+
const val REDIRECT_URL = "com.example.androidsolanaexample://auth"
7+
const val GOOGLE_AUTH_CONNECTION_ID = "w3ads"
8+
const val GOOGLE_CLIENT_ID =
9+
"519228911939-snh959gvvmjieoo4j14kkaancbkjp34r.apps.googleusercontent.com"
10+
const val GROUPED_AUTH_CONNECTION_ID = "aggregate-mobile"
11+
}

android-solana-example/app/src/main/java/com/example/androidsolanaexample/di/appModule.kt

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package com.example.androidsolanaexample.di
22

33
import android.content.Context
4-
import android.net.Uri
54
import com.example.androidsolanaexample.data.SolanaUseCaseImpl
65
import com.example.androidsolanaexample.data.Web3AuthHelper
76
import com.example.androidsolanaexample.data.Web3AuthHelperImpl
7+
import com.example.androidsolanaexample.data.Web3AuthSampleConfig
88
import com.example.androidsolanaexample.domain.SolanaUseCase
99
import com.example.androidsolanaexample.viewmodel.MainViewModel
1010
import com.web3auth.core.Web3Auth
11-
import com.web3auth.core.types.Network
11+
import com.web3auth.core.types.AuthConnection
12+
import com.web3auth.core.types.AuthConnectionConfig
13+
import com.web3auth.core.types.BuildEnv
14+
import com.web3auth.core.types.Language
15+
import com.web3auth.core.types.MfaSetting
16+
import com.web3auth.core.types.MfaSettings
17+
import com.web3auth.core.types.ThemeModes
1218
import com.web3auth.core.types.Web3AuthOptions
19+
import com.web3auth.core.types.WalletServicesConfig
20+
import com.web3auth.core.types.WhiteLabelData
1321
import org.koin.androidx.viewmodel.dsl.viewModel
1422
import org.koin.dsl.module
1523
import org.sol4k.Connection
1624
import org.sol4k.RpcUrl
25+
import org.torusresearch.fetchnodedetails.types.Web3AuthNetwork
1726

1827
val appModule = module {
1928
single {
@@ -30,13 +39,42 @@ val appModule = module {
3039
}
3140

3241
private fun getWeb3AuthHelper(context: Context): Web3AuthHelper {
42+
val whiteLabelData = WhiteLabelData(
43+
appName = "Web3Auth Solana Example",
44+
logoLight = "https://cryptologos.cc/logos/solana-sol-logo.png",
45+
logoDark = "https://cryptologos.cc/logos/solana-sol-logo.png",
46+
defaultLanguage = Language.EN,
47+
mode = ThemeModes.LIGHT,
48+
useLogoLoader = true,
49+
theme = hashMapOf("primary" to "#14F195")
50+
)
51+
52+
val authConnections = listOf(
53+
AuthConnectionConfig(
54+
authConnectionId = Web3AuthSampleConfig.GOOGLE_AUTH_CONNECTION_ID,
55+
authConnection = AuthConnection.GOOGLE,
56+
clientId = Web3AuthSampleConfig.GOOGLE_CLIENT_ID,
57+
groupedAuthConnectionId = Web3AuthSampleConfig.GROUPED_AUTH_CONNECTION_ID
58+
)
59+
)
60+
3361
val web3Auth: Web3Auth = Web3Auth(
3462
Web3AuthOptions(
35-
clientId = "BPi5PB_UiIZ-cPz1GtV5i1I2iOSOHuimiXBI0e-Oe_u6X3oVAbCiAZOTEBtTXw4tsluTITPqA8zMsfxIKMjiqNQ",
36-
network = Network.SAPPHIRE_MAINNET,
37-
redirectUrl = Uri.parse( "com.example.androidsolanaexample://auth")
63+
clientId = Web3AuthSampleConfig.CLIENT_ID,
64+
web3AuthNetwork = Web3AuthNetwork.SAPPHIRE_MAINNET,
65+
authBuildEnv = BuildEnv.TESTING,
66+
redirectUrl = Web3AuthSampleConfig.REDIRECT_URL,
67+
authConnectionConfig = authConnections,
68+
whiteLabel = whiteLabelData,
69+
walletServicesConfig = WalletServicesConfig(whiteLabel = whiteLabelData),
70+
mfaSettings = MfaSettings(
71+
deviceShareFactor = MfaSetting(true, 1, true),
72+
socialBackupFactor = MfaSetting(true, 2, true),
73+
passwordFactor = MfaSetting(true, 3, false),
74+
backUpShareFactor = MfaSetting(true, 4, false),
75+
)
3876
), context
3977
)
4078

4179
return Web3AuthHelperImpl(web3Auth)
42-
}
80+
}

android-solana-example/app/src/main/java/com/example/androidsolanaexample/viewmodel/MainViewModel.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import android.util.Log
44
import androidx.lifecycle.ViewModel
55
import androidx.lifecycle.viewModelScope
66
import com.example.androidsolanaexample.data.Web3AuthHelper
7+
import com.example.androidsolanaexample.data.Web3AuthSampleConfig
78
import com.example.androidsolanaexample.domain.SolanaUseCase
9+
import com.web3auth.core.types.AuthConnection
810
import com.web3auth.core.types.LoginParams
9-
import com.web3auth.core.types.Provider
1011
import com.web3auth.core.types.UserInfo
1112
import kotlinx.coroutines.flow.MutableStateFlow
1213
import kotlinx.coroutines.flow.StateFlow
@@ -34,7 +35,11 @@ class MainViewModel(private val web3AuthHelper: Web3AuthHelper, private val sola
3435
solanaKeyPair = Keypair.fromSecretKey(solanaPrivateKey().hexToByteArray())
3536
}
3637
fun login(){
37-
val loginParams = LoginParams(loginProvider = Provider.GOOGLE)
38+
val loginParams = LoginParams(
39+
authConnection = AuthConnection.GOOGLE,
40+
authConnectionId = Web3AuthSampleConfig.GOOGLE_AUTH_CONNECTION_ID,
41+
groupedAuthConnectionId = Web3AuthSampleConfig.GROUPED_AUTH_CONNECTION_ID
42+
)
3843
viewModelScope.launch {
3944
try {
4045
web3AuthHelper.login(loginParams = loginParams).await()
@@ -98,9 +103,7 @@ class MainViewModel(private val web3AuthHelper: Web3AuthHelper, private val sola
98103
}
99104

100105
fun setResultUrl(uri: Uri?) {
101-
viewModelScope.launch {
102-
web3AuthHelper.setResultUrl(uri)
103-
}
106+
web3AuthHelper.setResultUrl(uri)
104107
}
105108

106109
fun signAndSendTransaction(onSign: (hash: String?, error: String?) -> Unit) {
@@ -133,4 +136,4 @@ class MainViewModel(private val web3AuthHelper: Web3AuthHelper, private val sola
133136
e.localizedMessage?.let { onAvailable( null, it) }
134137
}
135138
}
136-
}
139+
}

0 commit comments

Comments
 (0)