@@ -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