import React, { Component } from "react";
import {
  Button,
  Form,
  Grid,
  Header,
  Image,
  Icon,
  Message,
} from "semantic-ui-react";
import { Redirect } from "react-router-dom";
import { Forms } from "../remote";

export default class ChangePass extends Component {
  constructor(props) {
    super(props);
    this.state = {
      password: "",
      error: {
        state: false,
        message: "",
      },
      success: false,
    };
    this.handleChangePassword = this.handleChangePassword.bind(this);
  }

  onChangeHandler = (event) => {
    let nam = event.target.name;
    let val = event.target.value;
    this.setState({ [nam]: val });
  };

  handleChangePassword = (e) => {
    if (this.state.confirmPassword !== this.state.password) {
      this.setState({
        error: {
          state: true,
          message: "Passwords do not match.",
        },
      });
    }

    Forms.submitResetPassword(this.props.query.token, this.state.password)
      .then(() => this.setState({ success: true }))
      .catch((err) =>
        this.setState({
          error: { state: true, message: err.messages.join(" - ") },
        })
      );
  };

  render() {
    if (this.state.success) {
      return <Redirect to="/login" />;
    }
    return (
      <React.Fragment>
        <Button circular style={{ margin: "2em" }} href="/">
          <Icon name="arrow alternate circle left" />
          Go Home{" "}
        </Button>
        <Grid
          textAlign="center"
          style={{ height: "70vh" }}
          verticalAlign="middle"
        >
          <Grid.Column style={{ maxWidth: 450 }}>
            <Header as="h2" color="blue" textAlign="center">
              <Image src="img/logo.png" /> Reset Password
            </Header>
            <Form
              size="large"
              style={{ marginTop: "2em" }}
              error={this.state.error.state}
            >
              <Message
                error
                header="Change Password Error"
                content={this.state.error.message}
              />
              <Form.Input
                icon="address card outline"
                iconPosition="left"
                placeholder="Reset your password"
                name="password"
                type="password"
                onChange={this.onChangeHandler}
                required
              />
              <Form.Input
                icon="address card outline"
                iconPosition="left"
                placeholder="Confirm Password"
                name="confirmPassword"
                type="password"
                onChange={this.onChangeHandler}
                required
              />
              <Button
                color="blue"
                fluid
                size="large"
                onClick={this.handleChangePassword}
              >
                Confirm password
              </Button>
            </Form>
          </Grid.Column>
        </Grid>
      </React.Fragment>
    );
  }
}
