import { Action } from '@ngrx/store';

import { RESTClientError } from '@loafer/ng-rest/protocol';

import { Member } from '@overflow/commons-typescript/model/member';

export enum ActionType {
  Signup = '[member.signup] Signup',
  SignupSuccess = '[member.signup] SignupSuccess',
  SignupFailure = '[member.signup] SignupFailure',
}

export class Signup implements Action {
  readonly type = ActionType.Signup;

  constructor(public payload: {member: Member, password: string}) {}
}

export class SignupSuccess implements Action {
  readonly type = ActionType.SignupSuccess;

  constructor(public payload: Member) {}
}

export class SignupFailure implements Action {
  readonly type = ActionType.SignupFailure;

  constructor(public payload: RESTClientError) {}
}

export type Actions =
  | Signup
  | SignupSuccess
  | SignupFailure
;
