Skip to content

Commit 46a02a1

Browse files
committed
Pass request to PromptCodeHandler in guard registerUI
1 parent 7bef40e commit 46a02a1

File tree

4 files changed

+30
-22
lines changed

4 files changed

+30
-22
lines changed

packages/wallet/wdk/src/sequence/handlers/guard.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,25 @@ import { BaseSignatureRequest, SignerUnavailable, SignerReady, SignerActionable,
55
import { Signatures } from '../signatures.js'
66
import { Guards } from '../guards.js'
77

8+
type RespondFn = (code: string) => Promise<void>
9+
10+
export type PromptCodeHandler = (
11+
request: BaseSignatureRequest,
12+
codeType: 'TOTP' | 'PIN',
13+
respond: RespondFn,
14+
) => Promise<void>
15+
816
export class GuardHandler implements Handler {
917
kind = Kinds.Guard
1018

11-
private onPromptCode:
12-
| undefined
13-
| ((codeType: 'TOTP' | 'PIN', respond: (code: string) => Promise<void>) => Promise<void>)
19+
private onPromptCode: undefined | PromptCodeHandler
1420

1521
constructor(
1622
private readonly signatures: Signatures,
1723
private readonly guards: Guards,
1824
) {}
1925

20-
public registerUI(
21-
onPromptCode: (codeType: 'TOTP' | 'PIN', respond: (code: string) => Promise<void>) => Promise<void>,
22-
) {
26+
public registerUI(onPromptCode: PromptCodeHandler) {
2327
this.onPromptCode = onPromptCode
2428
return () => {
2529
this.onPromptCode = undefined
@@ -90,7 +94,7 @@ export class GuardHandler implements Handler {
9094
resolve(true)
9195
} catch (e) {
9296
if (e instanceof Guard.AuthRequiredError) {
93-
const respond = async (code: string) => {
97+
const respond: RespondFn = async (code: string) => {
9498
try {
9599
const signature = await guard.signEnvelope(request.envelope, { id: e.id, code })
96100
await this.signatures.addSignature(request.id, signature)
@@ -100,7 +104,7 @@ export class GuardHandler implements Handler {
100104
}
101105
}
102106

103-
await onPromptCode(e.id, respond)
107+
await onPromptCode(request, e.id, respond)
104108
} else {
105109
reject(e)
106110
}

packages/wallet/wdk/src/sequence/handlers/mnemonic.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ import { SignerReady, SignerUnavailable, BaseSignatureRequest, SignerActionable
77

88
type RespondFn = (mnemonic: string) => Promise<void>
99

10+
export type PromptMnemonicHandler = (respond: RespondFn) => Promise<void>
11+
1012
export class MnemonicHandler implements Handler {
1113
kind = Kinds.LoginMnemonic
1214

13-
private onPromptMnemonic: undefined | ((respond: RespondFn) => Promise<void>)
15+
private onPromptMnemonic: undefined | PromptMnemonicHandler
1416
private readySigners = new Map<Address.Address, Signers.Pk.Pk>()
1517

1618
constructor(private readonly signatures: Signatures) {}
1719

18-
public registerUI(onPromptMnemonic: (respond: RespondFn) => Promise<void>) {
20+
public registerUI(onPromptMnemonic: PromptMnemonicHandler) {
1921
this.onPromptMnemonic = onPromptMnemonic
2022
return () => {
2123
this.onPromptMnemonic = undefined
@@ -93,7 +95,7 @@ export class MnemonicHandler implements Handler {
9395
message: 'enter-mnemonic',
9496
handle: () =>
9597
new Promise(async (resolve, reject) => {
96-
const respond = async (mnemonic: string) => {
98+
const respond: RespondFn = async (mnemonic: string) => {
9799
const signer = MnemonicHandler.toSigner(mnemonic)
98100
if (!signer) {
99101
return reject('invalid-mnemonic')

packages/wallet/wdk/src/sequence/handlers/otp.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@ import { AnswerIncorrectError, ChallengeExpiredError, TooManyAttemptsError } fro
1111

1212
type RespondFn = (otp: string) => Promise<void>
1313

14+
export type PromptOtpHandler = (recipient: string, respond: RespondFn) => Promise<void>
15+
1416
export class OtpHandler extends IdentityHandler implements Handler {
1517
kind = Kinds.LoginEmailOtp
1618

17-
private onPromptOtp: undefined | ((recipient: string, respond: RespondFn) => Promise<void>)
19+
private onPromptOtp: undefined | PromptOtpHandler
1820

1921
constructor(nitro: Identity.IdentityInstrument, signatures: Signatures, authKeys: Db.AuthKeys) {
2022
super(nitro, authKeys, signatures, Identity.IdentityType.Email)
2123
}
2224

23-
public registerUI(onPromptOtp: (recipient: string, respond: RespondFn) => Promise<void>) {
25+
public registerUI(onPromptOtp: PromptOtpHandler) {
2426
this.onPromptOtp = onPromptOtp
2527
return () => {
2628
this.onPromptOtp = undefined
@@ -91,13 +93,13 @@ export class OtpHandler extends IdentityHandler implements Handler {
9193

9294
private handleAuth(
9395
challenge: Identity.OtpChallenge,
94-
onPromptOtp: (recipient: string, respond: RespondFn) => Promise<void>,
96+
onPromptOtp: PromptOtpHandler,
9597
): Promise<{ signer: Signers.Signer & Signers.Witnessable; email: string }> {
9698
return new Promise(async (resolve, reject) => {
9799
try {
98100
const { loginHint, challenge: codeChallenge } = await this.nitroCommitVerifier(challenge)
99101

100-
const respond = async (otp: string) => {
102+
const respond: RespondFn = async (otp: string) => {
101103
try {
102104
const { signer, email: returnedEmail } = await this.nitroCompleteAuth(
103105
challenge.withAnswer(codeChallenge, otp),

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ import { Signers } from './signers.js'
2727
import { Transactions, TransactionsInterface } from './transactions.js'
2828
import { Kinds } from './types/signer.js'
2929
import { Wallets, WalletsInterface } from './wallets.js'
30-
import { GuardHandler } from './handlers/guard.js'
30+
import { GuardHandler, PromptCodeHandler } from './handlers/guard.js'
3131
import { PasskeyCredential } from '../dbs/index.js'
32+
import { PromptMnemonicHandler } from './handlers/mnemonic.js'
33+
import { PromptOtpHandler } from './handlers/otp.js'
3234

3335
export type ManagerOptions = {
3436
verbose?: boolean
@@ -500,18 +502,16 @@ export class Manager {
500502
}
501503
}
502504

503-
public registerMnemonicUI(onPromptMnemonic: (respond: (mnemonic: string) => Promise<void>) => Promise<void>) {
505+
public registerMnemonicUI(onPromptMnemonic: PromptMnemonicHandler) {
504506
return this.mnemonicHandler.registerUI(onPromptMnemonic)
505507
}
506508

507-
public registerOtpUI(onPromptOtp: (recipient: string, respond: (otp: string) => Promise<void>) => Promise<void>) {
509+
public registerOtpUI(onPromptOtp: PromptOtpHandler) {
508510
return this.otpHandler?.registerUI(onPromptOtp) || (() => {})
509511
}
510512

511-
public registerGuardUI(
512-
onPromptOtp: (codeType: 'TOTP' | 'PIN', respond: (otp: string) => Promise<void>) => Promise<void>,
513-
) {
514-
return this.guardHandler?.registerUI(onPromptOtp) || (() => {})
513+
public registerGuardUI(onPromptCode: PromptCodeHandler) {
514+
return this.guardHandler?.registerUI(onPromptCode) || (() => {})
515515
}
516516

517517
public async setRedirectPrefix(prefix: string) {

0 commit comments

Comments
 (0)