Give proper names

This commit is contained in:
RMidhunSuresh 2022-02-02 16:41:38 +05:30
parent fe0add01ee
commit a351a185a0
6 changed files with 22 additions and 25 deletions

View file

@ -17,32 +17,32 @@ limitations under the License.
import type {HomeServerApi} from "../net/HomeServerApi"; import type {HomeServerApi} from "../net/HomeServerApi";
import {registrationStageFromType} from "./registrationStageFromType"; import {registrationStageFromType} from "./registrationStageFromType";
import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage"; import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage";
import type {RegistrationDetails, RegistrationFlow, RegistrationResponse401} from "./types/types"; import type {AccountDetails, RegistrationFlow, RegistrationResponseMoreDataNeeded} from "./types/types";
type FlowSelector = (flows: RegistrationFlow[]) => RegistrationFlow | void; type FlowSelector = (flows: RegistrationFlow[]) => RegistrationFlow | void;
export class Registration { export class Registration {
private _hsApi: HomeServerApi; private _hsApi: HomeServerApi;
private _data: RegistrationDetails; private _accountDetails: AccountDetails;
private _flowSelector: FlowSelector; private _flowSelector: FlowSelector;
constructor(hsApi: HomeServerApi, data: RegistrationDetails, flowSelector?: FlowSelector) { constructor(hsApi: HomeServerApi, accountDetails: AccountDetails, flowSelector?: FlowSelector) {
this._hsApi = hsApi; this._hsApi = hsApi;
this._data = data; this._accountDetails = accountDetails;
this._flowSelector = flowSelector ?? (flows => flows.pop()); this._flowSelector = flowSelector ?? (flows => flows.pop());
} }
async start(): Promise<BaseRegistrationStage> { async start(): Promise<BaseRegistrationStage> {
const response = await this._hsApi.register( const response = await this._hsApi.register(
this._data.username, this._accountDetails.username,
this._data.password, this._accountDetails.password,
this._data.initialDeviceDisplayName, this._accountDetails.initialDeviceDisplayName,
undefined, undefined,
this._data.inhibitLogin).response(); this._accountDetails.inhibitLogin).response();
return this.parseStagesFromResponse(response); return this.parseStagesFromResponse(response);
} }
parseStagesFromResponse(response: RegistrationResponse401): BaseRegistrationStage { parseStagesFromResponse(response: RegistrationResponseMoreDataNeeded): BaseRegistrationStage {
const { session, params } = response; const { session, params } = response;
const flow = this._flowSelector(response.flows); const flow = this._flowSelector(response.flows);
if (!flow) { if (!flow) {
@ -55,7 +55,7 @@ export class Registration {
if (!stageClass) { if (!stageClass) {
throw new Error(`Unknown stage: ${stage}`); throw new Error(`Unknown stage: ${stage}`);
} }
const registrationStage = new stageClass(this._hsApi, this._data, session, params?.[stage]); const registrationStage = new stageClass(this._hsApi, this._accountDetails, session, params?.[stage]);
if (!firstStage) { if (!firstStage) {
firstStage = registrationStage; firstStage = registrationStage;
lastStage = registrationStage; lastStage = registrationStage;

View file

@ -16,11 +16,11 @@ limitations under the License.
import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage"; import type {BaseRegistrationStage} from "./stages/BaseRegistrationStage";
import type {HomeServerApi} from "../net/HomeServerApi"; import type {HomeServerApi} from "../net/HomeServerApi";
import type {RegistrationDetails} from "./types/types"; import type {AccountDetails, RegistrationParams} from "./types/types";
import {DummyAuth} from "./stages/DummyAuth"; import {DummyAuth} from "./stages/DummyAuth";
import {TermsAuth} from "./stages/TermsAuth"; import {TermsAuth} from "./stages/TermsAuth";
type ClassDerivedFromBaseRegistration = { new(hsApi: HomeServerApi, registrationData: RegistrationDetails, session: string, params?: Record<string, any>): BaseRegistrationStage } & typeof BaseRegistrationStage; type ClassDerivedFromBaseRegistration = { new(hsApi: HomeServerApi, registrationData: AccountDetails, session: string, params?: RegistrationParams): BaseRegistrationStage } & typeof BaseRegistrationStage;
export function registrationStageFromType(type: string): ClassDerivedFromBaseRegistration | undefined{ export function registrationStageFromType(type: string): ClassDerivedFromBaseRegistration | undefined{
switch (type) { switch (type) {

View file

@ -15,18 +15,18 @@ limitations under the License.
*/ */
import type {HomeServerApi} from "../../net/HomeServerApi"; import type {HomeServerApi} from "../../net/HomeServerApi";
import type {RegistrationDetails, RegistrationResponse, AuthenticationData, RegistrationParams} from "../types/types"; import type {AccountDetails, RegistrationResponse, AuthenticationData, RegistrationParams} from "../types/types";
export abstract class BaseRegistrationStage { export abstract class BaseRegistrationStage {
protected _hsApi: HomeServerApi; protected _hsApi: HomeServerApi;
protected _registrationData: RegistrationDetails; protected _accountDetails: AccountDetails;
protected _session: string; protected _session: string;
protected _nextStage: BaseRegistrationStage; protected _nextStage: BaseRegistrationStage;
protected _params?: Record<string, any> protected _params?: Record<string, any>
constructor(hsApi: HomeServerApi, registrationData: RegistrationDetails, session: string, params?: RegistrationParams) { constructor(hsApi: HomeServerApi, accountDetails: AccountDetails, session: string, params?: RegistrationParams) {
this._hsApi = hsApi; this._hsApi = hsApi;
this._registrationData = registrationData; this._accountDetails = accountDetails;
this._session = session; this._session = session;
this._params = params; this._params = params;
} }
@ -52,7 +52,7 @@ export abstract class BaseRegistrationStage {
// registration completed successfully // registration completed successfully
return response.user_id; return response.user_id;
} }
else if ("completed" in response && response.completed?.find(c => c === this.type)) { else if ("completed" in response && response.completed.find(c => c === this.type)) {
return this._nextStage; return this._nextStage;
} }
const error = "error" in response? response.error: "Could not parse response"; const error = "error" in response? response.error: "Could not parse response";

View file

@ -17,9 +17,8 @@ limitations under the License.
import {BaseRegistrationStage} from "./BaseRegistrationStage"; import {BaseRegistrationStage} from "./BaseRegistrationStage";
export class DummyAuth extends BaseRegistrationStage { export class DummyAuth extends BaseRegistrationStage {
async complete() { async complete() {
const { username, password, initialDeviceDisplayName, inhibitLogin } = this._registrationData; const { username, password, initialDeviceDisplayName, inhibitLogin } = this._accountDetails;
const response = await this._hsApi.register(username, password, initialDeviceDisplayName, { const response = await this._hsApi.register(username, password, initialDeviceDisplayName, {
session: this._session, session: this._session,
type: this.type type: this.type

View file

@ -17,9 +17,8 @@ limitations under the License.
import {BaseRegistrationStage} from "./BaseRegistrationStage"; import {BaseRegistrationStage} from "./BaseRegistrationStage";
export class TermsAuth extends BaseRegistrationStage { export class TermsAuth extends BaseRegistrationStage {
async complete() { async complete() {
const { username, password, initialDeviceDisplayName, inhibitLogin } = this._registrationData; const { username, password, initialDeviceDisplayName, inhibitLogin } = this._accountDetails;
const response = await this._hsApi.register(username, password, initialDeviceDisplayName, { const response = await this._hsApi.register(username, password, initialDeviceDisplayName, {
session: this._session, session: this._session,
type: this.type type: this.type

View file

@ -14,16 +14,16 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
export type RegistrationDetails = { export type AccountDetails = {
username: string | null; username: string | null;
password: string; password: string;
initialDeviceDisplayName: string; initialDeviceDisplayName: string;
inhibitLogin: boolean; inhibitLogin: boolean;
} }
export type RegistrationResponse = RegistrationResponse401 | RegistrationResponseError | RegistrationResponseSuccess; export type RegistrationResponse = RegistrationResponseMoreDataNeeded | RegistrationResponseError | RegistrationResponseSuccess;
export type RegistrationResponse401 = { export type RegistrationResponseMoreDataNeeded = {
completed: string[]; completed: string[];
flows: RegistrationFlow[]; flows: RegistrationFlow[];
params: Record<string, any>; params: Record<string, any>;
@ -46,7 +46,6 @@ export type RegistrationFlow = {
} }
/* Types for Registration Stage */ /* Types for Registration Stage */
export type AuthenticationData = { export type AuthenticationData = {
type: string; type: string;
session: string; session: string;