From e04b7452bae10e6525cfb9c551f76a1aa98f9078 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 25 Jan 2022 09:32:34 -0800 Subject: [PATCH] [Auth] Add missing PhoneMultiFactorInfo public interface (#5924) * Add missing PhoneMultiFactorInfo public interface * Fix missing closing paren * Changeset --- .changeset/tame-timers-visit.md | 5 +++++ common/api-review/auth.api.md | 5 +++++ packages/auth/src/mfa/mfa_info.ts | 10 +++++----- packages/auth/src/model/public_types.ts | 9 +++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 .changeset/tame-timers-visit.md diff --git a/.changeset/tame-timers-visit.md b/.changeset/tame-timers-visit.md new file mode 100644 index 00000000000..7618e58fb7a --- /dev/null +++ b/.changeset/tame-timers-visit.md @@ -0,0 +1,5 @@ +--- +"@firebase/auth": patch +--- + +Add missing PhoneMultiFactorInfo public interface diff --git a/common/api-review/auth.api.md b/common/api-review/auth.api.md index 5f8cb8ab6dc..354ab2b2ee8 100644 --- a/common/api-review/auth.api.md +++ b/common/api-review/auth.api.md @@ -601,6 +601,11 @@ export class PhoneMultiFactorGenerator { static FACTOR_ID: string; } +// @public +export interface PhoneMultiFactorInfo extends MultiFactorInfo { + readonly phoneNumber: string; +} + // @public export interface PhoneMultiFactorSignInInfoOptions { multiFactorHint?: MultiFactorInfo; diff --git a/packages/auth/src/mfa/mfa_info.ts b/packages/auth/src/mfa/mfa_info.ts index f89bcf990b4..f5d0beb7d37 100644 --- a/packages/auth/src/mfa/mfa_info.ts +++ b/packages/auth/src/mfa/mfa_info.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { FactorId, MultiFactorInfo } from '../model/public_types'; +import { FactorId, MultiFactorInfo, PhoneMultiFactorInfo } from '../model/public_types'; import { PhoneMfaEnrollment, MfaEnrollment @@ -40,13 +40,13 @@ export abstract class MultiFactorInfoImpl implements MultiFactorInfo { enrollment: MfaEnrollment ): MultiFactorInfoImpl { if ('phoneInfo' in enrollment) { - return PhoneMultiFactorInfo._fromServerResponse(auth, enrollment); + return PhoneMultiFactorInfoImpl._fromServerResponse(auth, enrollment); } return _fail(auth, AuthErrorCode.INTERNAL_ERROR); } } -export class PhoneMultiFactorInfo extends MultiFactorInfoImpl { +export class PhoneMultiFactorInfoImpl extends MultiFactorInfoImpl implements PhoneMultiFactorInfo { readonly phoneNumber: string; private constructor(response: PhoneMfaEnrollment) { @@ -57,7 +57,7 @@ export class PhoneMultiFactorInfo extends MultiFactorInfoImpl { static _fromServerResponse( _auth: AuthInternal, enrollment: MfaEnrollment - ): PhoneMultiFactorInfo { - return new PhoneMultiFactorInfo(enrollment); + ): PhoneMultiFactorInfoImpl { + return new PhoneMultiFactorInfoImpl(enrollment); } } diff --git a/packages/auth/src/model/public_types.ts b/packages/auth/src/model/public_types.ts index 714c6a9da75..426aac426de 100644 --- a/packages/auth/src/model/public_types.ts +++ b/packages/auth/src/model/public_types.ts @@ -628,6 +628,15 @@ export interface MultiFactorInfo { readonly factorId: typeof FactorIdMap[keyof typeof FactorIdMap]; } +/** + * The subclass of the {@link MultiFactorInfo} interface for phone number + * second factors. The factorId of this second factor is {@link FactorId.PHONE}. + */ +export interface PhoneMultiFactorInfo extends MultiFactorInfo { + /** The phone number associated with the current second factor. */ + readonly phoneNumber: string; +} + /** * The class used to facilitate recovery from {@link MultiFactorError} when a user needs to * provide a second factor to sign in.