DDCreationStudios/votingApp

View on GitHub
src/components/singlePollPage/NewAnswerCon.js

Summary

Maintainability
B
4 hrs
Test Coverage
import React from 'react';
import shortid from 'shortid';
import loadAgain from '../../app';

import NewAnswer from './NewAnswer';

export default class NewAnswerCon extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            answers: [{ answer: '', votes: 1 }],
        };
        loadAgain();
    }

    reset() {
        this.setState({
            answers: [{ answer: '', votes: 1 }],
        });
    }

    onChange = (e, index) => {
        const newValue = e.target.value;
        this.setState(oldState => ({
            answers: oldState.answers.map((answ, ansInd) => {
                if (ansInd !== index) {
                    return { answer: answ.answer, votes: 1 };
                } else {
                    return { answer: newValue, votes: 1 };
                }
            }),
        }));
    };

    addAnswer = () => {
        this.setState(oldState => ({
            answers: [...oldState.answers, { answer: '', votes: 1 }],
        }));
    };

    addPoll = e => {
        if (e) e.preventDefault();
        this.props.addEditPoll(
            this.props.url,
            this.props.polls.findIndex(elem => elem._id === this.props.url),
            this.state.answers,
        );
        this.reset();
    };

    render() {
        return (
            <NewAnswer
                poll={this.props.poll}
                addPoll={this.addPoll}
                addAnswer={this.addAnswer}
                onChange={this.onChange}
                state={this.state}
            />
        );
    }
}