@@ -175,6 +175,25 @@ export class Sessions {
175
175
return this . prepareSessionUpdate ( walletAddress , newTopology , origin )
176
176
}
177
177
178
+ async modifyExplicitSession (
179
+ walletAddress : Address . Address ,
180
+ sessionAddress : Address . Address ,
181
+ permissions : CoreSigners . Session . ExplicitParams ,
182
+ origin ?: string ,
183
+ ) : Promise < string > {
184
+ // This will add the session manager if it's missing
185
+ const topology = await this . getSessionTopology ( walletAddress , true )
186
+ const intermediateTopology = SessionConfig . removeExplicitSession ( topology , sessionAddress )
187
+ if ( ! intermediateTopology ) {
188
+ throw new Error ( 'Incomplete session topology' )
189
+ }
190
+ const newTopology = SessionConfig . addExplicitSession ( intermediateTopology , {
191
+ ...permissions ,
192
+ signer : sessionAddress ,
193
+ } )
194
+ return this . prepareSessionUpdate ( walletAddress , newTopology , origin )
195
+ }
196
+
178
197
async removeExplicitSession (
179
198
walletAddress : Address . Address ,
180
199
sessionAddress : Address . Address ,
@@ -183,7 +202,7 @@ export class Sessions {
183
202
const topology = await this . getSessionTopology ( walletAddress )
184
203
const newTopology = SessionConfig . removeExplicitSession ( topology , sessionAddress )
185
204
if ( ! newTopology ) {
186
- throw new Error ( 'Session not found ' )
205
+ throw new Error ( 'Incomplete session topology ' )
187
206
}
188
207
return this . prepareSessionUpdate ( walletAddress , newTopology , origin )
189
208
}
0 commit comments