React/Redux - publish component #323

Merged
bones7242 merged 80 commits from react-upload into master 2018-01-25 22:43:20 +01:00
10 changed files with 154 additions and 70 deletions
Showing only changes of commit 94cdb37a13 - Show all commits

View file

@ -43,6 +43,11 @@
"nodemon": "^1.11.0", "nodemon": "^1.11.0",
"passport": "^0.4.0", "passport": "^0.4.0",
"passport-local": "^1.0.0", "passport-local": "^1.0.0",
"prop-types": "^15.6.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"request": "^2.83.0", "request": "^2.83.0",
"request-promise": "^4.2.2", "request-promise": "^4.2.2",
"sequelize": "^4.1.0", "sequelize": "^4.1.0",
@ -68,8 +73,7 @@
"eslint-plugin-standard": "3.0.1", "eslint-plugin-standard": "3.0.1",
"husky": "^0.13.4", "husky": "^0.13.4",
"mocha": "^4.0.1", "mocha": "^4.0.1",
"react": "^16.2.0", "redux-devtools": "^3.4.1",
"react-dom": "^16.2.0",
"webpack": "^3.10.0" "webpack": "^3.10.0"
} }
} }

17
react/actions/index.js Normal file
View file

@ -0,0 +1,17 @@
// export action types
export const FILE_SELECTED = 'FILE_SELECTED';
export const FILE_CLEAR = 'FILE_CLEAR';
// export action creators
export function selectFile (file) {
return {
type : FILE_SELECTED,
payload: file,
};
};
export function clearFile () {
return {
type: FILE_CLEAR,
};
};

View file

@ -1,6 +1,8 @@
import React from 'react'; import React from 'react';
// import PropTypes from 'prop-types';
const DETAILS = 'DETAILS'; import { selectFile } from '../actions';
import { connect } from 'react-redux';
class PublishDropzone extends React.Component { class PublishDropzone extends React.Component {
constructor (props) { constructor (props) {
@ -16,7 +18,6 @@ class PublishDropzone extends React.Component {
this.handleDragLeave = this.handleDragLeave.bind(this); this.handleDragLeave = this.handleDragLeave.bind(this);
this.handleClick = this.handleClick.bind(this); this.handleClick = this.handleClick.bind(this);
this.handleFileInput = this.handleFileInput.bind(this); this.handleFileInput = this.handleFileInput.bind(this);
this.stageFile = this.stageFile.bind(this);
this.setClaimNameFromFileName = this.setClaimNameFromFileName.bind(this); this.setClaimNameFromFileName = this.setClaimNameFromFileName.bind(this);
} }
validateFile (file) { validateFile (file) {
@ -73,7 +74,7 @@ class PublishDropzone extends React.Component {
} }
// stage it so it will be ready when the publish button is clicked // stage it so it will be ready when the publish button is clicked
this.setClaimNameFromFileName(droppedFile.name); this.setClaimNameFromFileName(droppedFile.name);
this.stageFile(droppedFile); this.props.onFileSelect(droppedFile);
} }
} }
} }
@ -113,16 +114,9 @@ class PublishDropzone extends React.Component {
} }
// stage it so it will be ready when the publish button is clicked // stage it so it will be ready when the publish button is clicked
this.setClaimNameFromFileName(chosenFile.name); this.setClaimNameFromFileName(chosenFile.name);
this.stageFile(chosenFile); this.props.onFileSelect(chosenFile);
} }
} }
stageFile (selectedFile) {
console.log('stageFileAndShowDetails', selectedFile);
// store the selected file for upload
this.props.updateUploaderState('file', selectedFile);
// show the publish form
this.props.updateUploaderState('showComponent', DETAILS);
}
setClaimNameFromFileName (fileName) { setClaimNameFromFileName (fileName) {
console.log('setClaimNameFromFileName', fileName); console.log('setClaimNameFromFileName', fileName);
const fileNameWithoutEnding = fileName.substring(0, fileName.lastIndexOf('.')); const fileNameWithoutEnding = fileName.substring(0, fileName.lastIndexOf('.'));
@ -154,4 +148,18 @@ class PublishDropzone extends React.Component {
} }
}; };
module.exports = PublishDropzone; const mapStateToProps = state => {
return {
file: state.file,
};
};
const mapDispatchToProps = dispatch => {
return {
onFileSelect: (file) => {
dispatch(selectFile(file));
},
};
}
export default connect(mapStateToProps, mapDispatchToProps)(PublishDropzone);

View file

@ -7,6 +7,9 @@ import PublishThumbnailInput from './PublishThumbnailInput.jsx';
import PublishMetadataInputs from './PublishMetadataInputs.jsx'; import PublishMetadataInputs from './PublishMetadataInputs.jsx';
import AnonymousOrChannelSelect from './AnonymousOrChannelSelect.jsx'; import AnonymousOrChannelSelect from './AnonymousOrChannelSelect.jsx';
import { selectFile, clearFile } from '../actions';
import { connect } from 'react-redux';
class PublishForm extends React.Component { class PublishForm extends React.Component {
constructor (props) { constructor (props) {
super(props); super(props);
@ -14,7 +17,7 @@ class PublishForm extends React.Component {
this.state = { this.state = {
error : null, error : null,
showMetadataInputs: false, showMetadataInputs: false,
} };
this.publish = this.publish.bind(this); this.publish = this.publish.bind(this);
} }
publish () { publish () {
@ -80,7 +83,7 @@ class PublishForm extends React.Component {
</div> </div>
<div className="row row--short align-content-center"> <div className="row row--short align-content-center">
<button className="button--cancel" onClick={this.props.clearUploaderState}>Cancel</button> <button className="button--cancel" onClick={this.props.onFileClear}>Cancel</button>
</div> </div>
<div className="row row--short align-content-center"> <div className="row row--short align-content-center">
@ -94,4 +97,30 @@ class PublishForm extends React.Component {
} }
}; };
module.exports = PublishForm; const mapStateToProps = state => {
return {
loggedInChannelName : state.loggedInChannelName,
loggedInChannelShortId: state.loggedInChannelShortId,
publishToChannel : state.publishToChannel,
file : state.file,
title : state.title,
claim : state.claim,
thumbnail : state.thumbnail,
description : state.description,
license : state.license,
nsfw : state.nsfw,
};
};
const mapDispatchToProps = dispatch => {
return {
onFileSelect: (file) => {
dispatch(selectFile(file));
},
onFileClear: () => {
dispatch(clearFile());
},
};
}
export default connect(mapStateToProps, mapDispatchToProps)(PublishForm);

View file

@ -5,10 +5,10 @@ class MetadataInputs extends React.Component {
super(props); super(props);
this.state = { this.state = {
showInputs : false, showInputs : false,
description: null,
}; };
this.toggleShowInputs = this.toggleShowInputs.bind(this); this.toggleShowInputs = this.toggleShowInputs.bind(this);
this.handleInput = this.handleInput.bind(this); this.handleInput = this.handleInput.bind(this);
this.handleSelection = this.handleSelection.bind(this);
} }
toggleShowInputs () { toggleShowInputs () {
if (this.state.showInputs) { if (this.state.showInputs) {
@ -19,10 +19,16 @@ class MetadataInputs extends React.Component {
} }
handleInput (event) { handleInput (event) {
event.preventDefault(); event.preventDefault();
const name = event.target.name; const target = event.target;
const value = event.target.value; const name = target.name;
const value = target.type === 'checkbox' ? target.checked : target.value;
this.props.updateUploaderState(name, value); this.props.updateUploaderState(name, value);
} }
handleSelection (event) {
const selectedOption = event.target.selectedOptions[0].value;
this.props.updateUploaderState('', value);
}
render () { render () {
return ( return (
<div> <div>
@ -37,7 +43,7 @@ class MetadataInputs extends React.Component {
<div className="column column--3 column--med-10 align-content-top"> <div className="column column--3 column--med-10 align-content-top">
<label htmlFor="publish-license" className="label">Description:</label> <label htmlFor="publish-license" className="label">Description:</label>
</div><div className="column column--7 column--sml-10"> </div><div className="column column--7 column--sml-10">
<textarea rows="1" id="publish-description" className="textarea textarea--primary textarea--full-width" name="description" placeholder="Optional description" onChange={this.handleInput}>{this.state.description}</textarea> <textarea rows="1" id="publish-description" className="textarea textarea--primary textarea--full-width" name="description" placeholder="Optional description" value={this.props.description} onChange={this.handleInput} />
</div> </div>
</div> </div>
@ -45,7 +51,7 @@ class MetadataInputs extends React.Component {
<div className="column column--3 column--med-10"> <div className="column column--3 column--med-10">
<label htmlFor="publish-license" className="label">License:</label> <label htmlFor="publish-license" className="label">License:</label>
</div><div className="column column--7 column--sml-10"> </div><div className="column column--7 column--sml-10">
<select type="text" id="publish-license" className="select select--primary"> <select type="text" name="license" id="publish-license" className="select select--primary" onSelect={this.handleSelection}>
<option value=" ">Unspecified</option> <option value=" ">Unspecified</option>
<option value="Public Domain">Public Domain</option> <option value="Public Domain">Public Domain</option>
<option value="Creative Commons">Creative Commons</option> <option value="Creative Commons">Creative Commons</option>
@ -57,7 +63,7 @@ class MetadataInputs extends React.Component {
<div className="column column--3"> <div className="column column--3">
<label htmlFor="publish-nsfw" className="label">Mature:</label> <label htmlFor="publish-nsfw" className="label">Mature:</label>
</div><div className="column column--7"> </div><div className="column column--7">
<input className="input-checkbox" type="checkbox" id="publish-nsfw" /> <input className="input-checkbox" type="checkbox" id="publish-nsfw" name="nsfw" checked={this.props.nsfw} onChange={this.handleInput} />
</div> </div>
</div> </div>

View file

@ -1,34 +1,14 @@
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import PublishDropzone from './PublishDropzone.jsx';
import PublishDropzone from './components/PublishDropzone.jsx'; import PublishForm from './PublishForm.jsx';
import PublishForm from './components/PublishForm.jsx'; import PublishStatus from './PublishStatus.jsx';
import PublishStatus from './components/PublishStatus.jsx'; import {connect} from 'react-redux';
const DROPZONE = 'DROPZONE';
const DETAILS = 'DETAILS';
const STATUS = 'STATUS';
const initialState = {
showComponent : DROPZONE, // DROPZONE, DETAILS, or PUBLISHING
loggedInChannelName : null,
loggedInChannelShortId: null,
publishToChannel : false,
error : null,
file : null,
title : '',
claim : '',
thumbnail : '',
description : '',
license : '',
nsfw : '',
};
class PublishTool extends React.Component { class PublishTool extends React.Component {
constructor (props) { constructor (props) {
super(props); super(props);
this.state = initialState;
// bind class methods with `this` // bind class methods with `this`
this.updateUploaderState = this.updateUploaderState.bind(this); this.updateUploaderState = this.updateUploaderState.bind(this);
this.clearUploaderState = this.clearUploaderState.bind(this);
this.makeGetRequest = this.makeGetRequest.bind(this); this.makeGetRequest = this.makeGetRequest.bind(this);
this.makePostRequest = this.makePostRequest.bind(this); this.makePostRequest = this.makePostRequest.bind(this);
this.cleanseInput = this.cleanseInput.bind(this); this.cleanseInput = this.cleanseInput.bind(this);
@ -46,9 +26,6 @@ class PublishTool extends React.Component {
console.log(`updateUploaderState ${name} ${value}`); console.log(`updateUploaderState ${name} ${value}`);
this.setState({[name]: value}); this.setState({[name]: value});
} }
clearUploaderState () {
this.setState(initialState);
}
makeGetRequest (url) { makeGetRequest (url) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let xhttp = new XMLHttpRequest(); let xhttp = new XMLHttpRequest();
@ -111,33 +88,22 @@ class PublishTool extends React.Component {
render () { render () {
return ( return (
<div className="row row--tall flex-container--column"> <div className="row row--tall flex-container--column">
{ this.state.showComponent === DROPZONE && { !this.props.file &&
<PublishDropzone <PublishDropzone
updateUploaderState={this.updateUploaderState} updateUploaderState={this.updateUploaderState}
cleanseInput={this.cleanseInput} cleanseInput={this.cleanseInput}
/> />
} }
{ this.state.showComponent === DETAILS && { this.props.file &&
<PublishForm <PublishForm
updateUploaderState={this.updateUploaderState} updateUploaderState={this.updateUploaderState}
clearUploaderState={this.clearUploaderState} clearUploaderState={this.clearUploaderState}
makeGetRequest={this.makeGetRequest} makeGetRequest={this.makeGetRequest}
makePostRequest={this.makePostRequest} makePostRequest={this.makePostRequest}
cleanseInput={this.cleanseInput} cleanseInput={this.cleanseInput}
loggedInChannelName={this.state.loggedInChannelName}
loggedInChannelShortId={this.state.loggedInChannelShortId}
publishToChannel={this.state.publishToChannel}
error={this.state.error}
file={this.state.file}
title={this.state.title}
claim={this.state.claim}
thumbnail={this.state.thumbnail}
description={this.state.description}
license={this.state.license}
nsfw={this.state.nsfw}
/> />
} }
{ this.state.showComponent === STATUS && { this.props.publishStatus &&
<PublishStatus /> <PublishStatus />
} }
</div> </div>
@ -145,7 +111,10 @@ class PublishTool extends React.Component {
} }
}; };
ReactDOM.render( const mapStateToProps = state => {
<PublishTool />, return {
document.getElementById('react-uploader') file: state.file,
); };
};
export default connect(mapStateToProps, null)(PublishTool);

15
react/index.js Normal file
View file

@ -0,0 +1,15 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import Reducers from './reducers/index.js';
import PublishTool from './components/PublishTool.jsx';
let store = createStore(Reducers)
ReactDOM.render(
<Provider store={store}>
<PublishTool />
</Provider>,
document.getElementById('react-publish-tool')
)

36
react/reducers/index.js Normal file
View file

@ -0,0 +1,36 @@
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
import {FILE_CLEAR, FILE_SELECTED} from '../actions';
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
const DROPZONE = 'DROPZONE';
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
const initialState = {
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
showComponent : DROPZONE,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
loggedInChannelName : null,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
loggedInChannelShortId: null,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
publishToChannel : false,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
publishStatus : null,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
error : null,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
file : null,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
title : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
claim : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
thumbnail : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
description : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
license : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
nsfw : '',
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
};
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
/*
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
Reducers describe how the application's state changes in response to actions
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
*/
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
export default function (state = initialState, action) {
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
switch (action.type) {
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
case FILE_SELECTED:
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
return Object.assign({}, state, {
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
file: action.payload,
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
});
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
case FILE_CLEAR:
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
return initialState;
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
default:
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
return state;
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
}
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).
}
kauffj commented 2018-01-15 20:27:22 +01:00 (Migrated from github.com)
Review

import * as

`import * as`
kauffj commented 2018-01-15 20:28:40 +01:00 (Migrated from github.com)
Review

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

Some of these should possibly be renamed or refactored into separate files (or possibly can wait until next refactor/revision).

View file

@ -1,5 +1,5 @@
kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?
kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?
<div class="row row--tall flex-container--column"> <div class="row row--tall flex-container--column">
<div id="react-uploader" class="row row--padded row--tall flex-container--column"> <div id="react-publish-tool" class="row row--padded row--tall flex-container--column">
kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?
kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?
<div class="row row--padded row--tall flex-container--column flex-container--center-center"> <div class="row row--padded row--tall flex-container--column flex-container--center-center">
<img src="/assets/img/loading.gif" alt="loading"> <img src="/assets/img/loading.gif" alt="loading">
</div> </div>

kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?
kauffj commented 2018-01-15 20:35:20 +01:00 (Migrated from github.com)
Review

This doesn't seem exactly on theme. Maybe ask nizuka?

This doesn't seem exactly on theme. Maybe ask nizuka?

View file

@ -1,7 +1,7 @@
const path = require('path'); const path = require('path');
module.exports = { module.exports = {
entry : './react/PublishTool.js', entry : './react/index.js',
output: { output: {
path : path.join(__dirname, '/public/bundle/'), path : path.join(__dirname, '/public/bundle/'),
filename: 'bundle.js', filename: 'bundle.js',