import React, { Component } from 'react' // import { Link } from 'react-router-dom' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import { ReactSortable } from "react-sortablejs" // import actions from '../../../actions' import * as tileActions from '../../tile/tile.actions' import * as pageActions from '../../page/page.actions' const DOUBLE_CLICK_THRESHOLD = 250 class TileList extends Component { state = { tiles: [], didDoubleClick: false, lastTargetId: 0, lastTimeStamp: 0, } // store doubleclick state as a class property because ReactSortable calls setState promiscuously didDoubleClick = false componentDidMount(prevProps) { const { tiles } = this.props.page.show.res this.setState({ tiles: tiles.slice(0).reverse() }) } componentDidUpdate(prevProps, prevState) { const { tiles, didDoubleClick } = this.state if (prevState.tiles.length && !pageActions.isSameTileOrder(tiles, prevState.tiles)) { this.props.pageActions.setTileSortOrder(tiles.slice(0).reverse()) } if (didDoubleClick) { this.setState({ didDoubleClick: false }) } } handleChoose(e) { const { lastTargetId, lastTimeStamp } = this.state if (lastTimeStamp && parseInt(e.item.dataset.id) === lastTargetId && (e.timeStamp - lastTimeStamp) < DOUBLE_CLICK_THRESHOLD ) { // console.log('selected', lastTargetId) this.didDoubleClick = true this.props.pageActions.showEditTileForm(lastTargetId) } else { this.setState({ lastTargetId: parseInt(e.item.dataset.id), lastTimeStamp: e.timeStamp, }) } } handleUpdate(newTiles) { if (this.didDoubleClick) return this.setState({ tiles: newTiles }) } render() { const { tiles } = this.state return (