Skip to content

Commit 286bd28

Browse files
Merge pull request #812 from 0xsequence/modifySession
Add modify explicit session
2 parents 5368682 + 3d3158f commit 286bd28

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

packages/wallet/wdk/src/sequence/sessions.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,25 @@ export class Sessions implements SessionsInterface {
310310
return this.prepareSessionUpdate(walletAddress, newTopology, origin)
311311
}
312312

313+
async modifyExplicitSession(
314+
walletAddress: Address.Address,
315+
sessionAddress: Address.Address,
316+
permissions: CoreSigners.Session.ExplicitParams,
317+
origin?: string,
318+
): Promise<string> {
319+
// This will add the session manager if it's missing
320+
const topology = await this.getTopology(walletAddress, true)
321+
const intermediateTopology = SessionConfig.removeExplicitSession(topology, sessionAddress)
322+
if (!intermediateTopology) {
323+
throw new Error('Incomplete session topology')
324+
}
325+
const newTopology = SessionConfig.addExplicitSession(intermediateTopology, {
326+
...permissions,
327+
signer: sessionAddress,
328+
})
329+
return this.prepareSessionUpdate(walletAddress, newTopology, origin)
330+
}
331+
313332
async removeExplicitSession(
314333
walletAddress: Address.Address,
315334
sessionAddress: Address.Address,
@@ -318,7 +337,7 @@ export class Sessions implements SessionsInterface {
318337
const topology = await this.getTopology(walletAddress)
319338
const newTopology = SessionConfig.removeExplicitSession(topology, sessionAddress)
320339
if (!newTopology) {
321-
throw new Error('Session not found')
340+
throw new Error('Incomplete session topology')
322341
}
323342
return this.prepareSessionUpdate(walletAddress, newTopology, origin)
324343
}

0 commit comments

Comments
 (0)