From 64277b748bf36e74274ad7c6414d0f7b489ee0c3 Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Fri, 11 Feb 2022 16:50:21 +0200 Subject: [PATCH] Remove membership info form (no longer used) --- components/membership/MembershipForm.tsx | 39 ---- components/membership/MembershipInfoForm.tsx | 212 ------------------- 2 files changed, 251 deletions(-) delete mode 100644 components/membership/MembershipForm.tsx delete mode 100644 components/membership/MembershipInfoForm.tsx diff --git a/components/membership/MembershipForm.tsx b/components/membership/MembershipForm.tsx deleted file mode 100644 index f9776ca..0000000 --- a/components/membership/MembershipForm.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from "react"; -import MembershipInfoForm from "./MembershipInfoForm"; - -export default class MembershipForm extends React.Component { - state = { - signupSuccess: false, - }; - - handleSignupSuccess = () => { - this.setState({ signupSuccess: true }); - }; - - render() { - if (!this.state.signupSuccess) { - return ; - } - return ( -
- - - - -

Rekisteröityminen onnistui. Tervetuloa jäseneksi!

-

Tervetuloa Koodiklinikka ry:n jäseneksi!

-
- ); - } -} diff --git a/components/membership/MembershipInfoForm.tsx b/components/membership/MembershipInfoForm.tsx deleted file mode 100644 index 0906209..0000000 --- a/components/membership/MembershipInfoForm.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import request from "axios"; -import React from "react"; -import classSet from "classnames"; -import api from "../api"; -import Loader from "../Loader"; - -type Props = { - onSignupSuccess: () => void; -}; - -type State = { - error: boolean; - errors: string[]; - fields: { - name: string; - email: string; - handle: string; - address: string; - postcode: string; - city: string; - }; - sending: boolean; - pristineFields: string[]; -}; - -const fieldNameTranslations = { - address: { fi: "Osoite" }, - city: { fi: "Paikkakunta" }, - email: { fi: "Sähköpostiosoite" }, - handle: { fi: "Slack-käyttäjätunnus " }, - name: { fi: "Koko nimi " }, - postcode: { fi: "Postinumero" }, -}; - -const mailValidateRe = - /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - -function validateEmail(email) { - return mailValidateRe.test(email); -} - -function getUserInfo(state) { - return state.fields; -} - -export default class MembershipInfoForm extends React.Component { - constructor(props: Props) { - super(props); - this.setState({ - fields: { - address: "", - city: "", - email: "", - handle: "", - name: "", - postcode: "", - }, - sending: false, - pristineFields: Object.keys(this.state.fields), - }); - } - - onSubmit = async () => { - this.setState({ - sending: true, - error: null, - }); - - try { - await request.post(api("membership"), { - userInfo: getUserInfo(this.state), - }); - this.setState({ sending: false }); - this.props.onSignupSuccess(); - } catch (err) { - this.setState({ error: err, sending: false }); - } - }; - - onChange = (e) => { - const name = e.target.name; - if (e.target.value === this.state[name]) { - return; - } - - this.setState({ - fields: { - ...this.state.fields, - [name]: e.target.value, - }, - pristineFields: this.state.pristineFields.filter( - (fieldName) => fieldName !== name - ), - errors: [], - }); - }; - - getDataErrors = () => { - const foundErrors = []; - - Object.keys(this.state.fields).forEach((fieldName) => { - if (!this.state[fieldName]) { - foundErrors.push({ field: fieldName, type: "missing" }); - } - }); - - if (this.state.fields.email && !validateEmail(this.state.fields.email)) { - foundErrors.push({ field: "email", type: "invalid" }); - } - - return foundErrors; - }; - - render() { - const inputErrors = this.getDataErrors(); - - const formClasses = classSet({ - form: true, - "membership-form": true, - "has-error": inputErrors.length !== 0 || this.state.error, - sending: this.state.sending, - }); - - function getErrorMessage(err) { - let feedbackText; - - const fieldName = fieldNameTranslations[err.field].fi; - if (err.type === "missing") { - feedbackText = `${fieldName} on pakollinen.`; - } else if (err.type === "invalid") { - feedbackText = `${fieldName} on virheellinen.`; - } - - return ( -
- {feedbackText} -
- ); - } - - /* generate error messages */ - const visibleErrors = inputErrors.filter( - (error) => this.state.pristineFields.indexOf(error.field) === -1 - ); - - const fieldsWithErrors = visibleErrors.map(({ field }) => field); - - const inputFields = Object.keys(this.state.fields).map((fieldName) => { - const inputClasses = classSet({ - input: true, - "has-error": fieldsWithErrors.includes(fieldName), - half: fieldName === "city" || fieldName === "postcode", - left: fieldName === "postcode", - }); - - function showsErrorFor(field) { - if (fieldName === "city") { - return false; - } - - return ( - field === fieldName || (fieldName === "postcode" && field === "city") - ); - } - - return ( - - - {visibleErrors - .filter(({ field }) => showsErrorFor(field)) - .map(getErrorMessage)} - - ); - }); - if (this.state.sending) { - return ( -
- -
- ); - } - return ( -
-

Liity jäseneksi

-
- {inputFields} - {this.state.error && ( -
- Jotain meni pieleen! Ota yhteyttä info@koodiklinikka.fi -
- )} -
- -
-
- ); - } -}