diff --git a/packages/@magic-sdk/provider/src/modules/user.ts b/packages/@magic-sdk/provider/src/modules/user.ts index 85dc3c777..c40baf4f7 100644 --- a/packages/@magic-sdk/provider/src/modules/user.ts +++ b/packages/@magic-sdk/provider/src/modules/user.ts @@ -132,6 +132,9 @@ export class UserModule extends BaseModule { handle.on(RecoveryFactorEventEmit.StartEditPhoneNumber, () => { this.createIntermediaryEvent(RecoveryFactorEventEmit.StartEditPhoneNumber, requestPayload.id as string)(); }); + handle.on(RecoveryFactorEventEmit.Cancel, () => { + this.createIntermediaryEvent(RecoveryFactorEventEmit.Cancel, requestPayload.id as string)(); + }); handle.on(RecencyCheckEventEmit.VerifyEmailOtp, (otp: string) => { this.createIntermediaryEvent(RecencyCheckEventEmit.VerifyEmailOtp, requestPayload.id as string)(otp); }); diff --git a/packages/@magic-sdk/provider/test/spec/modules/user/showSettings.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/user/showSettings.spec.ts index fcdb8b05a..9f215d79a 100644 --- a/packages/@magic-sdk/provider/test/spec/modules/user/showSettings.spec.ts +++ b/packages/@magic-sdk/provider/test/spec/modules/user/showSettings.spec.ts @@ -8,6 +8,7 @@ jest.mock('@magic-sdk/types', () => ({ RecoveryFactorEventEmit: { SendNewPhoneNumber: 'send-new-phone-number', SendOtpCode: 'send-otp-code', + Cancel: 'cancel', StartEditPhoneNumber: 'start-edit-phone-number', }, })); @@ -151,6 +152,25 @@ test('ShowSettings should call createIntermediaryEvent with StartEditPhoneNumber expect(createIntermediaryEventFn).toHaveBeenCalled(); }); +test('ShowSettings should call createIntermediaryEvent with Cancel', () => { + const magic = createMagicSDK(); + const mockOn = jest.fn(); + const mockHandle = { on: mockOn }; + + magic.user.request = jest.fn().mockReturnValue(mockHandle); + + const config = { page: DeepLinkPage.Recovery, showUI: false }; + magic.user.showSettings(config); + + const createIntermediaryEventFn = jest.fn(); + magic.user.createIntermediaryEvent = jest.fn(() => createIntermediaryEventFn); + + const startEditPhoneNumberListener = mockOn.mock.calls.find((call) => call[0] === 'cancel')[1]; + + startEditPhoneNumberListener(); + + expect(createIntermediaryEventFn).toHaveBeenCalled(); +}); test('ShowSettings should attach event listener for StartEditPhoneNumber event', () => { const magic = createMagicSDK(); diff --git a/packages/@magic-sdk/types/src/modules/user-types.ts b/packages/@magic-sdk/types/src/modules/user-types.ts index bd3d78df8..0d4e487ad 100644 --- a/packages/@magic-sdk/types/src/modules/user-types.ts +++ b/packages/@magic-sdk/types/src/modules/user-types.ts @@ -45,6 +45,7 @@ export enum RecoveryFactorEventOnReceived { export enum RecoveryFactorEventEmit { SendNewPhoneNumber = 'send-new-phone-number', SendOtpCode = 'send-otp-code', + Cancel = 'cancel', StartEditPhoneNumber = 'start-edit-phone-number', } @@ -58,6 +59,7 @@ export type RecoveryFactorEventHandlers = { [RecoveryFactorEventEmit.SendNewPhoneNumber]: (phone_number: string) => void; [RecoveryFactorEventEmit.SendOtpCode]: (otp: string) => void; [RecoveryFactorEventEmit.StartEditPhoneNumber]: () => void; + [RecoveryFactorEventEmit.Cancel]: () => void; // Event sent [RecoveryFactorEventOnReceived.EnterNewPhoneNumber]: () => void; diff --git a/yarn.lock b/yarn.lock index e4d47bb3e..e4f2eb15f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2332,7 +2332,7 @@ __metadata: "@babel/plugin-proposal-optional-chaining": ^7.9.0 "@babel/runtime": ^7.9.6 "@magic-ext/oauth": ^22.14.0 - magic-sdk: ^28.14.0 + magic-sdk: ^28.15.0 languageName: unknown linkType: soft @@ -12780,7 +12780,7 @@ fsevents@^2.3.2: languageName: unknown linkType: soft -"magic-sdk@^28.14.0, magic-sdk@workspace:packages/magic-sdk": +"magic-sdk@^28.15.0, magic-sdk@workspace:packages/magic-sdk": version: 0.0.0-use.local resolution: "magic-sdk@workspace:packages/magic-sdk" dependencies: