Skip to content

Commit 9bbbf53

Browse files
authored
Handle session updates. (#4)
* Handle session updates.
1 parent f251937 commit 9bbbf53

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

lib/src/main/kotlin/org/walletconnect/Session.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ interface Session {
8282
object Connected : Status()
8383
object Disconnected : Status()
8484
object Approved : Status()
85+
object Updated : Status()
8586
object Closed : Status()
8687
data class Error(val throwable: Throwable) : Status()
8788
}

lib/src/main/kotlin/org/walletconnect/impls/WCSession.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,22 @@ class WCSession(
104104
val requestId = createCallId()
105105
send(Session.MethodCall.SessionRequest(requestId, clientData), topic = config.handshakeTopic, callback = { resp ->
106106
(resp.result as? Map<String, *>)?.extractSessionParams()?.let { params ->
107-
peerId = params.peerData?.id
108-
peerMeta = params.peerData?.meta
109-
approvedAccounts = params.accounts
110-
chainId = params.chainId
111-
storeSession()
107+
updateSession(params)
112108
propagateToCallbacks { onStatus(if (params.approved) Session.Status.Approved else Session.Status.Closed) }
113109
}
114110
})
115111
handshakeId = requestId
116112
}
117113
}
118114

115+
private fun updateSession(params: Session.SessionParams) {
116+
peerId = params.peerData?.id
117+
peerMeta = params.peerData?.meta
118+
approvedAccounts = params.accounts
119+
chainId = params.chainId
120+
storeSession()
121+
}
122+
119123
override fun approve(accounts: List<String>, chainId: Long) {
120124
val handshakeId = handshakeId ?: return
121125
approvedAccounts = accounts
@@ -207,8 +211,12 @@ class WCSession(
207211
is Session.MethodCall.SessionUpdate -> {
208212
if (!data.params.approved) {
209213
endSession()
214+
} else {
215+
updateSession(data.params)
216+
propagateToCallbacks {
217+
onStatus(Session.Status.Updated)
218+
}
210219
}
211-
// TODO handle session update -> not important for our usecase
212220
}
213221
is Session.MethodCall.SendTransaction -> {
214222
accountToCheck = data.from

0 commit comments

Comments
 (0)