var React = require('react'); var _ = require('lodash'); var cx = require('classnames'); var Moment = require('moment'); var Nav = require('naturalcrit/nav/nav.jsx'); const VIEW_KEY = 'homebrewery-recently-viewed'; const EDIT_KEY = 'homebrewery-recently-edited'; var BaseItem = React.createClass({ getDefaultProps: function() { return { storageKey : '', text : '', currentBrew:{ title : '', id : '', url : '' } }; }, getInitialState: function() { return { showDropdown: false, brews : [] }; }, componentDidMount: function() { var brews = JSON.parse(localStorage.getItem(this.props.storageKey) || '[]'); brews = _.filter(brews, (brew)=>{ return brew.id !== this.props.currentBrew.id; }); if(this.props.currentBrew.id){ brews.unshift({ id : this.props.currentBrew.id, url : this.props.currentBrew.url, title : this.props.currentBrew.title, ts : Date.now() }); } brews = _.slice(brews, 0, 8); localStorage.setItem(this.props.storageKey, JSON.stringify(brews)); this.setState({ brews : brews }); }, handleDropdown : function(show){ this.setState({ showDropdown : show }) }, renderDropdown : function(){ if(!this.state.showDropdown) return null; var items = _.map(this.state.brews, (brew)=>{ return {brew.title} {Moment(brew.ts).fromNow()} }); return
{items}
}, render : function(){ return {this.props.text} {this.renderDropdown()} }, }); module.exports = { viewed : React.createClass({ getDefaultProps: function() { return { brew : { title : '', shareId : '' } }; }, render : function(){ return }, }), edited : React.createClass({ getDefaultProps: function() { return { brew : { title : '', editId : '' } }; }, render : function(){ return }, }), both : React.createClass({ getDefaultProps: function() { return { errorId : null }; }, getInitialState: function() { return { showDropdown: false, edit : [], view : [] }; }, componentDidMount: function() { var edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]'); var viewed = JSON.parse(localStorage.getItem(VIEW_KEY) || '[]'); if(this.props.errorId){ edited = _.filter(edited, (edit) => { return edit.id !== this.props.errorId; }); viewed = _.filter(viewed, (view) => { return view.id !== this.props.errorId; }); localStorage.setItem(EDIT_KEY, JSON.stringify(edited)); localStorage.setItem(VIEW_KEY, JSON.stringify(viewed)); } this.setState({ edit : edited, view : viewed }); }, handleDropdown : function(show){ this.setState({ showDropdown : show }) }, renderDropdown : function(){ if(!this.state.showDropdown) return null; var makeItems = (brews) => { return _.map(brews, (brew)=>{ return {brew.title} {Moment(brew.ts).fromNow()} }); }; return

edited

{makeItems(this.state.edit)}

viewed

{makeItems(this.state.view)}
}, render : function(){ return Recent brews {this.renderDropdown()} } }) }