import {Events} from "javascripts/components/event"; import {CurrentUser, AdminPanel, ProfileModal, UserMenu} from "javascripts/components/user"; import {SoundPanel} from "javascripts/components/sound"; import {TeamSpeakButton, TeamSpeakModal} from "javascripts/components/teamspeak"; import {SettingsPanel} from "javascripts/components/settings"; import {Chatroom} from "javascripts/components/message"; import {Gather, ArchivedGathers} from "javascripts/components/gather" const React = require("react"); const Sound = require("javascripts/components/sound"); const SoundController = Sound.SoundController; const helper = require("javascripts/helper"); const storageAvailable = helper.storageAvailable; const SplashScreen = React.createClass({ getInitialState() { return { status: "connecting", socket: null } }, componentDidMount() { const socketUrl = window.location.protocol + "//" + window.location.host; let socket = io(socketUrl) .on("connect", () => { console.log("Connected"); this.setState({ status: "connected" }); socket .on("reconnect", () => { console.log("Reconnected"); }) .on("disconnect", () => { console.log("Disconnected") }); }) .on("error", error => { console.log(error); if (error === "Authentication Failed") { this.setState({ status: "authFailed" }); } else if (error === "Gather Banned") { this.setState({ status: "banned" }); } }); this.setState({ socket: socket }); }, render() { const status = this.state.status; if (status === "connected") { return ; } let splash; if (status === "authFailed") { splash = ; } else if (status === "banned") { splash = ; } else if (status === "connecting") { splash = ; } return (
{splash}
); } }); const AuthFailedSplash = React.createClass({ render() { return (
ENSL Logo

You need to be logged in to the ENSL website to access gathers

If you are logged on, try visiting a few pages on ENSL.org so the server can update your cookies

If this error persists please contact an admin to fix it


Go to website

); } }); const BannedSplash = React.createClass({ render() { return (
ENSL Logo

You're currently barred from joining gathers

Either wait for the ban to expire or talk to an admin to get it lifted


See the ban list

); } }); const ConnectingSplash = React.createClass({ render() { return (
ENSL Logo

Authenticating your ENSL account


Loading
); } }); const App = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired }, getInitialState() { let updateTitle = true; let showEventsPanel = true; if (storageAvailable('localStorage')) { if (localStorage.getItem("updateTitle") !== null) { updateTitle = JSON.parse(localStorage.getItem("updateTitle")); } if (localStorage.getItem("showEventsPanel") !== null) { showEventsPanel = JSON.parse(localStorage.getItem("showEventsPanel")); } } return { gather: { gatherers: [] }, users: [], messages: [], maps: [], user: null, servers: [], archive: [], socket: null, events: [], updateTitle: updateTitle, showEventsPanel: showEventsPanel, soundController: new SoundController(), showMessageBox: true, collapseMenu: false, connectionState: "connected" }; }, updateTitle() { let gather = this.state.gather; if (gather && this.state.updateTitle) { document.title = `NSL Gathers (${gather.gatherers.length}/12)`; return; } document.title = "NSL Gathers"; }, toggleEventsPanel(event) { let newState = event.target.checked; this.setState({ showEventsPanel: newState }); if (storageAvailable('localStorage')) { localStorage.setItem("showEventsPanel", newState) } }, toggleUpdateTitle(event) { let newState = event.target.checked; this.setState({ updateTitle: newState }); if (storageAvailable('localStorage')) { localStorage.setItem("updateTitle", newState) } this.updateTitle(); }, thisGatherer() { let gather = this.state.gather; let user = this.state.user; if (gather && user && gather.gatherers.length) { return gather.gatherers .filter(gatherer => gatherer.id === user.id) .pop() || null; } return null; }, componentDidMount() { let self = this; let socket = this.props.socket; let soundController = this.state.soundController; this.updateTitle(); socket.on('stateChange', data => { let state = data.state; if (state.from === 'gathering' && state.to === 'election' && this.thisGatherer()) { soundController.playGatherMusic(); } if (state.from === 'election' && state.to === 'gathering') { soundController.stop(); } }); socket.on('event:append', data => { let events = self.state.events; events.unshift(data); self.setState({ events: events.slice(0, 20) }); }); socket.on('users:update', data => self.setState({ users: data.users, user: data.currentUser }) ); socket.on("message:append", data => { self.setState({ messages: self.state.messages.concat(data.messages) .sort((a, b) => { return new Date(a.createdAt) - new Date(b.createdAt); }) }); }); socket.on("message:refresh", data => { self.setState({ messages: data.messages }); }); socket.on("gather:refresh", (data) => { self.setState({ gather: data.gather, maps: data.maps, servers: data.servers, previousGather: data.previousGather }); this.updateTitle(); }); socket.on("gather:archive:refresh", data => { self.setState({ archive: data.archive, maps: data.maps, servers: data.servers }); }); socket.on("connect", () => { this.setState({ connectionState: "connected" }); }); socket.on("disconnect", () => { this.setState({ connectionState: "disconnected" }); }); socket.on("reconnecting", () => { this.setState({ connectionState: "reconnecting" }); }); socket.on("reconnect", () => { this.setState({ connectionState: "connected" }); }); socket.emit("users:refresh"); socket.emit("message:refresh"); socket.emit("gather:refresh"); }, toggleMessageBox(e) { e.preventDefault(); console.log("FOO") this.setState({ showMessageBox: !this.state.showMessageBox }); }, toggleCollapseMenu(e) { e.preventDefault(); this.setState({ collapseMenu: !this.state.collapseMenu }); }, render() { const socket = this.props.socket; let eventsPanel; if (this.state.showEventsPanel) { eventsPanel = ; } let profileModal, chatroom, currentUser; if (this.state.user) { profileModal = ; chatroom = ; currentUser = (
); } const user = this.state.user; let username, avatar; if (user) { username = user.username; avatar = user.avatar; } let appClass = ["skin-blue", "sidebar-mini", "fixed"]; if (this.state.showMessageBox) appClass.push("control-sidebar-open"); if (this.state.collapseMenu) appClass.push("sidebar-collapse"); let connectionStatus; const connectionState = this.state.connectionState; if (connectionState === "connected") { connectionStatus = Online; } else if (connectionState === "reconnecting") { connectionStatus = Reconnecting; } else if (connectionState === "disconnected") { connectionStatus = Disconnected; } return (
NSL Gathers NSL Gathers

Gathersbeta

Foo

); return ( ); } }); module.exports = SplashScreen;