Skip to content

Commit 66a0373

Browse files
authored
Merge pull request #57 from WalletConnect/develop
Beta 02
2 parents 64b6c0f + 9f19f01 commit 66a0373

File tree

159 files changed

+3899
-2913
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

159 files changed

+3899
-2913
lines changed

README.md

Lines changed: 119 additions & 63 deletions
Large diffs are not rendered by default.

buildSrc/src/main/kotlin/Dependencies.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ fun DependencyHandlerScope.sqlDelight() {
8080
}
8181
}
8282

83+
fun DependencyHandlerScope.koin() {
84+
val koinVersion = "3.1.5"
85+
86+
"api"("io.insert-koin:koin-android:$koinVersion")
87+
}
88+
8389
fun DependencyHandlerScope.jUnit5() {
8490
val jUnit5Version = "5.7.2"
8591

sample/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ dependencies {
4343
implementation(project(":walletconnectv2"))
4444
// implementation("com.github.walletconnect-labs.walletconnectkotlinv2:walletconnectkotlinv2:1.0.0-alpha01")
4545

46+
implementation("com.github.kenglxn.QRGen:android:2.6.0")
47+
4648
coroutines()
4749
navigationComponent()
4850
ktxCore()

sample/src/main/java/com/walletconnect/sample/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import androidx.navigation.fragment.NavHostFragment
77
import androidx.navigation.fragment.findNavController
88
import androidx.navigation.ui.NavigationUI
99
import com.walletconnect.sample.databinding.ActivityMainBinding
10-
import com.walletconnect.walletconnectv2.WalletConnectClient
10+
import com.walletconnect.walletconnectv2.client.WalletConnectClient
1111

1212
class MainActivity : AppCompatActivity() {
1313
private lateinit var binding: ActivityMainBinding
Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,53 @@
11
package com.walletconnect.sample
22

33
import android.app.Application
4-
import com.walletconnect.walletconnectv2.WalletConnectClient
5-
import com.walletconnect.walletconnectv2.client.ClientTypes
6-
import com.walletconnect.walletconnectv2.common.AppMetaData
4+
import com.walletconnect.walletconnectv2.client.WalletConnect
5+
import com.walletconnect.walletconnectv2.client.WalletConnectClient
76

87
class SampleApplication : Application() {
98

109
override fun onCreate() {
1110
super.onCreate()
1211

13-
val initParams = ClientTypes.InitialParams(
12+
// TODO: Move to Dapp example once separate workflow is added
13+
val init = WalletConnect.Params.Init(
1414
application = this,
15-
hostName = "relay.walletconnect.org",
16-
metadata = AppMetaData(
15+
useTls = true,
16+
hostName = WALLET_CONNECT_URL,
17+
projectId = PROJECT_ID,
18+
isController = false,
19+
metadata = WalletConnect.Model.AppMetaData(
20+
name = "Kotlin Dapp",
21+
description = "Dapp description",
22+
url = "example.dapp",
23+
icons = listOf("https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media")
24+
)
25+
)
26+
27+
// TODO: Move to Wallet example once separate workflow is added
28+
val init2 = WalletConnect.Params.Init(
29+
application = this,
30+
relayServerUrl = "wss://$WALLET_CONNECT_URL/?projectId=$PROJECT_ID",
31+
isController = true,
32+
metadata = WalletConnect.Model.AppMetaData(
1733
name = "Kotlin Wallet",
1834
description = "Wallet description",
1935
url = "example.wallet",
2036
icons = listOf("https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media")
2137
)
2238
)
2339

24-
WalletConnectClient.initialize(initParams)
40+
WalletConnectClient.initialize(init2)
41+
}
42+
43+
override fun onTrimMemory(level: Int) {
44+
super.onTrimMemory(level)
45+
46+
WalletConnectClient.shutdown()
47+
}
48+
49+
private companion object {
50+
const val WALLET_CONNECT_URL = "relay.walletconnect.com"
51+
const val PROJECT_ID = "" //TODO: register at https://walletconnect.com/register to get a project ID
2552
}
2653
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.walletconnect.sample.wallet
22

3-
import com.walletconnect.walletconnectv2.client.WalletConnectClientData
3+
import com.walletconnect.walletconnectv2.client.WalletConnect
44

55
interface SessionActionListener {
6-
fun onDisconnect(session: WalletConnectClientData.SettledSession)
7-
fun onUpdate(session: WalletConnectClientData.SettledSession)
8-
fun onUpgrade(session: WalletConnectClientData.SettledSession)
9-
fun onPing(session: WalletConnectClientData.SettledSession)
10-
fun onSessionsDetails(session: WalletConnectClientData.SettledSession)
6+
fun onDisconnect(session: WalletConnect.Model.SettledSession)
7+
fun onUpdate(session: WalletConnect.Model.SettledSession)
8+
fun onUpgrade(session: WalletConnect.Model.SettledSession)
9+
fun onPing(session: WalletConnect.Model.SettledSession)
10+
fun onSessionsDetails(session: WalletConnect.Model.SettledSession)
1111
}

sample/src/main/java/com/walletconnect/sample/wallet/WalletFragment.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.walletconnect.sample.wallet.ui.dialog.SessionDetailsDialog
1515
import com.walletconnect.sample.wallet.ui.dialog.SessionProposalDialog
1616
import com.walletconnect.sample.wallet.ui.dialog.SessionRequestDialog
1717
import com.walletconnect.sample.wallet.ui.dialog.UrlDialog
18-
import com.walletconnect.walletconnectv2.client.WalletConnectClientData
18+
import com.walletconnect.walletconnectv2.client.WalletConnect
1919

2020
class WalletFragment : Fragment(R.layout.wallet_fragment), SessionActionListener {
2121
private val viewModel: WalletViewModel by activityViewModels()
@@ -85,23 +85,23 @@ class WalletFragment : Fragment(R.layout.wallet_fragment), SessionActionListener
8585
}
8686
}
8787

88-
override fun onDisconnect(session: WalletConnectClientData.SettledSession) {
88+
override fun onDisconnect(session: WalletConnect.Model.SettledSession) {
8989
viewModel.disconnect(session.topic)
9090
}
9191

92-
override fun onUpdate(session: WalletConnectClientData.SettledSession) {
92+
override fun onUpdate(session: WalletConnect.Model.SettledSession) {
9393
viewModel.sessionUpdate(session)
9494
}
9595

96-
override fun onUpgrade(session: WalletConnectClientData.SettledSession) {
96+
override fun onUpgrade(session: WalletConnect.Model.SettledSession) {
9797
viewModel.sessionUpgrade(session)
9898
}
9999

100-
override fun onPing(session: WalletConnectClientData.SettledSession) {
100+
override fun onPing(session: WalletConnect.Model.SettledSession) {
101101
viewModel.sessionPing(session)
102102
}
103103

104-
override fun onSessionsDetails(session: WalletConnectClientData.SettledSession) {
104+
override fun onSessionsDetails(session: WalletConnect.Model.SettledSession) {
105105

106106
SessionDetailsDialog(requireContext(), session).show()
107107
}
Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
11
package com.walletconnect.sample.wallet
22

3+
import android.util.Log
34
import androidx.lifecycle.LiveData
45
import androidx.lifecycle.ViewModel
56
import androidx.lifecycle.asLiveData
67
import androidx.lifecycle.viewModelScope
78
import com.walletconnect.sample.wallet.ui.*
9+
import com.walletconnect.walletconnectv2.client.*
810
import kotlinx.coroutines.flow.MutableStateFlow
911
import kotlinx.coroutines.launch
10-
import com.walletconnect.walletconnectv2.WalletConnectClient
11-
import com.walletconnect.walletconnectv2.client.ClientTypes
12-
import com.walletconnect.walletconnectv2.client.WalletConnectClientData
13-
import com.walletconnect.walletconnectv2.client.WalletConnectClientListener
14-
import com.walletconnect.walletconnectv2.client.WalletConnectClientListeners
1512

16-
class WalletViewModel : ViewModel(), WalletConnectClientListener {
13+
class WalletViewModel : ViewModel(), WalletConnectClient.WalletDelegate {
1714
private var _eventFlow = MutableStateFlow<WalletUiEvent>(InitSessionsList(WalletConnectClient.getListOfSettledSessions()))
1815
val eventFlow: LiveData<WalletUiEvent> = _eventFlow.asLiveData()
1916

20-
private lateinit var proposal: WalletConnectClientData.SessionProposal
17+
private lateinit var proposal: WalletConnect.Model.SessionProposal
2118

2219
init {
23-
WalletConnectClient.setWalletConnectListener(this)
20+
WalletConnectClient.setWalletDelegate(this)
2421
}
2522

2623
fun pair(uri: String) {
27-
val pairParams = ClientTypes.PairParams(uri.trim())
28-
29-
WalletConnectClient.pair(pairParams, object : WalletConnectClientListeners.Pairing {
30-
override fun onSuccess(settledPairing: WalletConnectClientData.SettledPairing) {
24+
val pair = WalletConnect.Params.Pair(uri.trim())
25+
WalletConnectClient.pair(pair, object : WalletConnect.Listeners.Pairing {
26+
override fun onSuccess(settledPairing: WalletConnect.Model.SettledPairing) {
3127
//Settled pairing
3228
}
3329

@@ -39,10 +35,10 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
3935

4036
fun approve() {
4137
val accounts = proposal.chains.map { chainId -> "$chainId:0x022c0c42a80bd19EA4cF0F94c4F9F96645759716" }
42-
val approveParams: ClientTypes.ApproveParams = ClientTypes.ApproveParams(proposal, accounts)
38+
val approve = WalletConnect.Params.Approve(proposal, accounts)
4339

44-
WalletConnectClient.approve(approveParams, object : WalletConnectClientListeners.SessionApprove {
45-
override fun onSuccess(settledSession: WalletConnectClientData.SettledSession) {
40+
WalletConnectClient.approve(approve, object : WalletConnect.Listeners.SessionApprove {
41+
override fun onSuccess(settledSession: WalletConnect.Model.SettledSession) {
4642
viewModelScope.launch { _eventFlow.emit(UpdateActiveSessions(WalletConnectClient.getListOfSettledSessions())) }
4743
}
4844

@@ -55,10 +51,10 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
5551
fun reject() {
5652
val rejectionReason = "Reject Session"
5753
val proposalTopic: String = proposal.topic
58-
val rejectParams: ClientTypes.RejectParams = ClientTypes.RejectParams(rejectionReason, proposalTopic)
54+
val reject = WalletConnect.Params.Reject(rejectionReason, proposalTopic)
5955

60-
WalletConnectClient.reject(rejectParams, object : WalletConnectClientListeners.SessionReject {
61-
override fun onSuccess(rejectedSession: WalletConnectClientData.RejectedSession) {
56+
WalletConnectClient.reject(reject, object : WalletConnect.Listeners.SessionReject {
57+
override fun onSuccess(rejectedSession: WalletConnect.Model.RejectedSession) {
6258
viewModelScope.launch { _eventFlow.emit(RejectSession) }
6359
}
6460

@@ -69,10 +65,10 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
6965
}
7066

7167
fun disconnect(topic: String, reason: String = "Reason") {
72-
val disconnectParams = ClientTypes.DisconnectParams(topic, reason)
68+
val disconnect = WalletConnect.Params.Disconnect(topic, reason)
7369

74-
WalletConnectClient.disconnect(disconnectParams, object : WalletConnectClientListeners.SessionDelete {
75-
override fun onSuccess(deletedSession: WalletConnectClientData.DeletedSession) {
70+
WalletConnectClient.disconnect(disconnect, object : WalletConnect.Listeners.SessionDelete {
71+
override fun onSuccess(deletedSession: WalletConnect.Model.DeletedSession) {
7672
viewModelScope.launch { _eventFlow.emit(UpdateActiveSessions(WalletConnectClient.getListOfSettledSessions())) }
7773
}
7874

@@ -82,46 +78,46 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
8278
})
8379
}
8480

85-
fun respondRequest(sessionRequest: WalletConnectClientData.SessionRequest) {
86-
val result = ClientTypes.ResponseParams(
81+
fun respondRequest(sessionRequest: WalletConnect.Model.SessionRequest) {
82+
val response = WalletConnect.Params.Response(
8783
sessionTopic = sessionRequest.topic,
88-
jsonRpcResponse = WalletConnectClientData.JsonRpcResponse.JsonRpcResult(
84+
jsonRpcResponse = WalletConnect.Model.JsonRpcResponse.JsonRpcResult(
8985
sessionRequest.request.id,
9086
"0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
9187
)
9288
)
9389

94-
WalletConnectClient.respond(result, object : WalletConnectClientListeners.SessionPayload {
90+
WalletConnectClient.respond(response, object : WalletConnect.Listeners.SessionPayload {
9591
override fun onError(error: Throwable) {
9692
//Error
9793
}
9894
})
9995
}
10096

101-
fun rejectRequest(sessionRequest: WalletConnectClientData.SessionRequest) {
102-
val result = ClientTypes.ResponseParams(
97+
fun rejectRequest(sessionRequest: WalletConnect.Model.SessionRequest) {
98+
val response = WalletConnect.Params.Response(
10399
sessionTopic = sessionRequest.topic,
104-
jsonRpcResponse = WalletConnectClientData.JsonRpcResponse.JsonRpcError(
100+
jsonRpcResponse = WalletConnect.Model.JsonRpcResponse.JsonRpcError(
105101
sessionRequest.request.id,
106-
WalletConnectClientData.JsonRpcResponse.Error(500, "Kotlin Wallet Error")
102+
WalletConnect.Model.JsonRpcResponse.Error(500, "Kotlin Wallet Error")
107103
)
108104
)
109105

110-
WalletConnectClient.respond(result, object : WalletConnectClientListeners.SessionPayload {
106+
WalletConnectClient.respond(response, object : WalletConnect.Listeners.SessionPayload {
111107
override fun onError(error: Throwable) {
112108
//Error
113109
}
114110
})
115111
}
116112

117-
fun sessionUpdate(session: WalletConnectClientData.SettledSession) {
118-
val updateParams = ClientTypes.UpdateParams(
113+
fun sessionUpdate(session: WalletConnect.Model.SettledSession) {
114+
val update = WalletConnect.Params.Update(
119115
sessionTopic = session.topic,
120-
sessionState = WalletConnectClientData.SessionState(accounts = listOf("eip155:8001:0xa0A6c118b1B25207A8A764E1CAe1635339bedE62"))
116+
sessionState = WalletConnect.Model.SessionState(accounts = listOf("eip155:8001:0xa0A6c118b1B25207A8A764E1CAe1635339bedE62"))
121117
)
122118

123-
WalletConnectClient.update(updateParams, object : WalletConnectClientListeners.SessionUpdate {
124-
override fun onSuccess(updatedSession: WalletConnectClientData.UpdatedSession) {
119+
WalletConnectClient.update(update, object : WalletConnect.Listeners.SessionUpdate {
120+
override fun onSuccess(updatedSession: WalletConnect.Model.UpdatedSession) {
125121
viewModelScope.launch {
126122
_eventFlow.emit(UpdateActiveSessions(WalletConnectClient.getListOfSettledSessions(), "Successful session update"))
127123
}
@@ -133,15 +129,16 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
133129
})
134130
}
135131

136-
fun sessionUpgrade(session: WalletConnectClientData.SettledSession) {
132+
fun sessionUpgrade(session: WalletConnect.Model.SettledSession) {
137133
val permissions =
138-
WalletConnectClientData.SessionPermissions(
139-
blockchain = WalletConnectClientData.Blockchain(chains = listOf("eip155:80001")),
140-
jsonRpc = WalletConnectClientData.Jsonrpc(listOf("eth_sign"))
134+
WalletConnect.Model.SessionPermissions(
135+
blockchain = WalletConnect.Model.Blockchain(chains = listOf("eip155:80001")),
136+
jsonRpc = WalletConnect.Model.Jsonrpc(listOf("eth_sign"))
141137
)
142-
val upgradeParams = ClientTypes.UpgradeParams(topic = session.topic, permissions = permissions)
143-
WalletConnectClient.upgrade(upgradeParams, object : WalletConnectClientListeners.SessionUpgrade {
144-
override fun onSuccess(upgradedSession: WalletConnectClientData.UpgradedSession) {
138+
val upgrade = WalletConnect.Params.Upgrade(topic = session.topic, permissions = permissions)
139+
140+
WalletConnectClient.upgrade(upgrade, object : WalletConnect.Listeners.SessionUpgrade {
141+
override fun onSuccess(upgradedSession: WalletConnect.Model.UpgradedSession) {
145142
viewModelScope.launch {
146143
_eventFlow.emit(UpdateActiveSessions(WalletConnectClient.getListOfSettledSessions(), "Successful session upgrade"))
147144
}
@@ -153,10 +150,10 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
153150
})
154151
}
155152

156-
fun sessionPing(session: WalletConnectClientData.SettledSession) {
157-
val pingParams = ClientTypes.PingParams(session.topic)
153+
fun sessionPing(session: WalletConnect.Model.SettledSession) {
154+
val ping = WalletConnect.Params.Ping(session.topic)
158155

159-
WalletConnectClient.ping(pingParams, object : WalletConnectClientListeners.SessionPing {
156+
WalletConnectClient.ping(ping, object : WalletConnect.Listeners.SessionPing {
160157
override fun onSuccess(topic: String) {
161158
viewModelScope.launch {
162159
_eventFlow.emit(PingSuccess)
@@ -169,25 +166,25 @@ class WalletViewModel : ViewModel(), WalletConnectClientListener {
169166
})
170167
}
171168

172-
override fun onSessionProposal(sessionProposal: WalletConnectClientData.SessionProposal) {
169+
override fun onSessionProposal(sessionProposal: WalletConnect.Model.SessionProposal) {
173170
viewModelScope.launch {
174171
this@WalletViewModel.proposal = sessionProposal
175172
_eventFlow.emit(ShowSessionProposalDialog(this@WalletViewModel.proposal))
176173
}
177174
}
178175

179-
override fun onSessionRequest(sessionRequest: WalletConnectClientData.SessionRequest) {
176+
override fun onSessionRequest(sessionRequest: WalletConnect.Model.SessionRequest) {
180177
viewModelScope.launch {
181178
val session = WalletConnectClient.getListOfSettledSessions().find { session -> session.topic == sessionRequest.topic }!!
182179
_eventFlow.emit(ShowSessionRequestDialog(sessionRequest, session))
183180
}
184181
}
185182

186-
override fun onSessionDelete(deletedSession: WalletConnectClientData.DeletedSession) {
183+
override fun onSessionDelete(deletedSession: WalletConnect.Model.DeletedSession) {
187184
viewModelScope.launch { _eventFlow.emit(UpdateActiveSessions(WalletConnectClient.getListOfSettledSessions())) }
188185
}
189186

190-
override fun onSessionNotification(sessionNotification: WalletConnectClientData.SessionNotification) {
187+
override fun onSessionNotification(sessionNotification: WalletConnect.Model.SessionNotification) {
191188
//TODO handle session notification
192189
}
193190
}

sample/src/main/java/com/walletconnect/sample/wallet/ui/SessionsAdapter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import com.bumptech.glide.Glide
1010
import com.walletconnect.sample.R
1111
import com.walletconnect.sample.databinding.SessionItemBinding
1212
import com.walletconnect.sample.wallet.SessionActionListener
13-
import com.walletconnect.walletconnectv2.client.WalletConnectClientData
13+
import com.walletconnect.walletconnectv2.client.WalletConnect
1414

1515
class SessionsAdapter(private val listener: SessionActionListener) : RecyclerView.Adapter<SessionsAdapter.SessionViewHolder>() {
16-
private var sessions: List<WalletConnectClientData.SettledSession> = listOf()
16+
private var sessions: List<WalletConnect.Model.SettledSession> = listOf()
1717

1818
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SessionViewHolder =
1919
SessionViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.session_item, parent, false), listener)
@@ -24,7 +24,7 @@ class SessionsAdapter(private val listener: SessionActionListener) : RecyclerVie
2424

2525
override fun getItemCount(): Int = sessions.size
2626

27-
fun updateList(sessions: List<WalletConnectClientData.SettledSession>) {
27+
fun updateList(sessions: List<WalletConnect.Model.SettledSession>) {
2828
this.sessions = sessions
2929
notifyDataSetChanged()
3030
}
@@ -34,7 +34,7 @@ class SessionsAdapter(private val listener: SessionActionListener) : RecyclerVie
3434

3535
private val binding = SessionItemBinding.bind(view)
3636

37-
fun bind(session: WalletConnectClientData.SettledSession) = with(binding) {
37+
fun bind(session: WalletConnect.Model.SettledSession) = with(binding) {
3838

3939
view.setOnClickListener {
4040
listener.onSessionsDetails(session)

0 commit comments

Comments
 (0)