client/src/components/NotesList.js
changeset 125 c653f49fabfb
parent 124 c77570164050
child 138 a1fb2ced3049
equal deleted inserted replaced
124:c77570164050 125:c653f49fabfb
     1 import React, { Component } from 'react';
     1 import React, { Component } from 'react';
     2 import { connect } from 'react-redux';
       
     3 import { bindActionCreators } from 'redux';
       
     4 import PropTypes from 'prop-types';
     2 import PropTypes from 'prop-types';
     5 import Immutable from 'immutable';
     3 import Immutable from 'immutable';
     6 import { Alert, Modal, Button } from 'react-bootstrap';
     4 import { Alert, Modal, Button } from 'react-bootstrap';
     7 import Note from './Note';
     5 import Note from './Note';
     8 import * as notesActions from '../actions/notesActions';
       
     9 
     6 
    10 class NotesList extends Component {
     7 class NotesList extends Component {
    11 
     8 
    12   state = {
     9   state = {
    13     editingNote: null,
    10     editingNote: null,
    30     })
    27     })
    31   }
    28   }
    32 
    29 
    33   deleteNote = () => {
    30   deleteNote = () => {
    34     const { noteToDelete } = this.state;
    31     const { noteToDelete } = this.state;
    35     this.props.notesActions.deleteNote(noteToDelete);
    32     this.props.deleteNote(noteToDelete);
    36     this.closeModal();
    33     this.closeModal();
    37   }
    34   }
    38 
    35 
    39   closeModal = () => {
    36   closeModal = () => {
    40     this.setState({
    37     this.setState({
    42       noteToDelete: null
    39       noteToDelete: null
    43     })
    40     })
    44   }
    41   }
    45 
    42 
    46   updateNote = (note, data) => {
    43   updateNote = (note, data) => {
    47     this.props.notesActions.updateNote(note, data);
    44     this.props.updateNote(note, data);
    48   }
    45   }
    49 
    46 
    50   render() {
    47   render() {
    51     if (this.props.notes.size === 0) {
    48     if (this.props.notes.size === 0) {
    52       return (
    49       return (
    85 
    82 
    86 NotesList.propTypes = {
    83 NotesList.propTypes = {
    87   notes: PropTypes.instanceOf(Immutable.List).isRequired
    84   notes: PropTypes.instanceOf(Immutable.List).isRequired
    88 };
    85 };
    89 
    86 
    90 function mapStateToProps(state, props) {
    87 export default NotesList;
    91   return {
       
    92     ...props,
       
    93     notes : props.notes.filter(note => !note.deleted)
       
    94   };
       
    95 }
       
    96 
       
    97 function mapDispatchToProps(dispatch) {
       
    98   return {
       
    99     notesActions: bindActionCreators(notesActions, dispatch),
       
   100   }
       
   101 }
       
   102 
       
   103 export default connect(mapStateToProps, mapDispatchToProps)(NotesList);