diff --git a/js/api.js b/js/api.js index 84ae430..1484cc9 100644 --- a/js/api.js +++ b/js/api.js @@ -49,6 +49,8 @@ const actiontypes_tournamentinfo = { 'REQUEST_TOURNAMENT' : 'REQUEST_TOURNAMENT', 'REQUEST_TOURNAMENT_SUCCESS' : 'REQUEST_TOURNAMENT_SUCCESS', + 'CREATE_TOURNAMENT' : 'CREATE_TOURNAMENT', + 'MODIFY_TOURNAMENT' : 'MODIFY_TOURNAMENT', 'MODIFY_TOURNAMENT_SUCCESS' : 'MODIFY_TOURNAMENT_SUCCESS', 'MODIFY_TOURNAMENT_ERROR' : 'MODIFY_TOURNAMENT_ERROR', @@ -260,6 +262,14 @@ const reducer_userinfo = (state = defaultstate_userinfo, action) => { const reducer_tournamentinfo = (state = defaultstate_tournamentinfo, action) => { switch(action.type) { + case actiontypes_tournamentinfo.CREATE_TOURNAMENT: + postRequest(action.state, '/tournaments', action.parameters.tournament).then((resp) => { + storeOptionalToken(resp); + action.parameters.successCallback(); + }).catch(() => { + action.parameters.errorCallback(); + }); + return Object.assign({}, state, {}); case actiontypes_tournamentinfo.REQUEST_TOURNAMENT: getRequest(action.state, '/tournaments/' + action.parameters.code).then((resp) => { __store.dispatch({ @@ -302,7 +312,6 @@ const reducer_tournamentinfo = (state = defaultstate_tournamentinfo, action) => case actiontypes_tournamentinfo.MODIFY_TOURNAMENT_ERROR: return Object.assign({}, state, {}); - case actiontypes_tournamentinfo.REHYDRATE: return Object.assign({}, state, {}); @@ -378,6 +387,18 @@ export function logout() { }); } +export function createTournament(data, successCallback, errorCallback) { + __store.dispatch({ + type: actiontypes_tournamentinfo.CREATE_TOURNAMENT, + parameters: { + tournament: data, + successCallback: successCallback, + errorCallback: errorCallback + }, + state: __store.getState() + }); +} + export function requestTournament(code, successCallback, errorCallback) { __store.dispatch({ type: actiontypes_tournamentinfo.REQUEST_TOURNAMENT, @@ -423,7 +444,3 @@ function rehydrateApplicationState() { }); } } - - - - diff --git a/pages/_app.js b/pages/_app.js index 1b508c4..e0e8f7c 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,13 +1,18 @@ -import App, { Container } from 'next/app'; -import React from 'react'; -import { Provider } from 'react-redux'; -import Notifications from 'react-notify-toast'; -import Favicon from 'react-favicon'; +import App, { Container } from 'next/app'; +import React from 'react'; +import { Provider } from 'react-redux'; +import Notifications from 'react-notify-toast'; +import Favicon from 'react-favicon'; -import withReduxStore from '../js/redux/reduxStoreBinder'; +import withReduxStore from '../js/redux/reduxStoreBinder'; +import { verifyCredentials } from '../js/api.js'; class TurniereApp extends App { + componentDidMount() { + verifyCredentials(); + } + render () { const {Component, pageProps, reduxStore} = this.props; return ( diff --git a/pages/create.js b/pages/create.js index b8ad288..2565c7c 100644 --- a/pages/create.js +++ b/pages/create.js @@ -1,5 +1,6 @@ import Head from 'next/head'; import React from 'react'; +import { notify } from 'react-notify-toast'; import { connect } from 'react-redux'; import { @@ -19,17 +20,13 @@ import { TurniereNavigation } from '../js/components/Navigation'; import { Footer } from '../js/components/Footer'; import { UserRestrictor, Option } from '../js/components/UserRestrictor'; import { Login } from '../js/components/Login'; -import { verifyCredentials } from '../js/api'; import EditableStringList from '../js/components/EditableStringList'; +import { createTournament } from '../js/api'; import '../static/everypage.css'; class PrivateCreatePage extends React.Component { - componentDidMount() { - verifyCredentials(); - } - render() { const { isSignedIn } = this.props; @@ -91,9 +88,22 @@ function CreateTournamentCard() { class CreateTournamentForm extends React.Component { constructor(props) { super(props); - this.state = {fadeIn: false, teams: []}; + this.state = { + fadeIn: false, + + name: '', + description: '', + public: false, + teams: [] + }; this.toggle = this.toggle.bind(this); this.teamListUpdate = this.teamListUpdate.bind(this); + this.create = this.create.bind(this); + this.handleNameInput = this.handleNameInput.bind(this); + this.handleDescriptionInput = this.handleDescriptionInput.bind(this); + this.handlePublicInput = this.handlePublicInput.bind(this); + + this.create = this.create.bind(this); } render() { @@ -102,15 +112,15 @@ class CreateTournamentForm extends React.Component {