diff --git a/src/matrix/registration/Registration.ts b/src/matrix/registration/Registration.ts index ad0b461e..3d8ec9fc 100644 --- a/src/matrix/registration/Registration.ts +++ b/src/matrix/registration/Registration.ts @@ -15,14 +15,16 @@ limitations under the License. */ import type {HomeServerApi} from "../net/HomeServerApi"; -import {registrationStageFromType} from "./registrationStageFromType"; import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage"; +import {DummyAuth} from "./stages/DummyAuth"; +import {TermsAuth} from "./stages/TermsAuth"; import type { AccountDetails, RegistrationFlow, RegistrationResponseMoreDataNeeded, RegistrationResponse, RegistrationResponseSuccess, + RegistrationParams, } from "./types"; type FlowSelector = (flows: RegistrationFlow[]) => RegistrationFlow | void; @@ -73,11 +75,7 @@ export class Registration { let firstStage: BaseRegistrationStage | undefined; let lastStage: BaseRegistrationStage; for (const stage of flow.stages) { - const stageClass = registrationStageFromType(stage); - if (!stageClass) { - throw new Error(`Unknown stage: ${stage}`); - } - const registrationStage = new stageClass(session, params?.[stage]); + const registrationStage = this._createRegistrationStage(stage, session, params); if (!firstStage) { firstStage = registrationStage; lastStage = registrationStage; @@ -104,6 +102,17 @@ export class Registration { } } + private _createRegistrationStage(type: string, session: string, params?: RegistrationParams) { + switch (type) { + case "m.login.dummy": + return new DummyAuth(session, params); + case "m.login.terms": + return new TermsAuth(session, params); + default: + throw new Error(`Unknown stage: ${type}`); + } + } + get sessionInfo(): RegistrationResponseSuccess | undefined { return this._sessionInfo; } diff --git a/src/matrix/registration/registrationStageFromType.ts b/src/matrix/registration/registrationStageFromType.ts deleted file mode 100644 index cf08e0ec..00000000 --- a/src/matrix/registration/registrationStageFromType.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2021 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage"; -import type {RegistrationParams} from "./types"; -import {DummyAuth} from "./stages/DummyAuth"; -import {TermsAuth} from "./stages/TermsAuth"; - -type ClassDerivedFromBaseRegistration = { new(session: string, params?: RegistrationParams): BaseRegistrationStage } & typeof BaseRegistrationStage; - -export function registrationStageFromType(type: string): ClassDerivedFromBaseRegistration | undefined{ - switch (type) { - case "m.login.dummy": - return DummyAuth; - case "m.login.terms": - return TermsAuth; - } -}