diff --git a/client/src/app/context/socketContext.js b/client/src/app/context/socketContext.js index 842cdd02b..b5d600098 100644 --- a/client/src/app/context/socketContext.js +++ b/client/src/app/context/socketContext.js @@ -12,7 +12,7 @@ function SocketProvider(props) { const [socket, setSocket] = useState(); useEffect(() => { - const socket = io(serverURL); + const socket = io(serverURL, { transports: ['websocket'] }); setSocket(socket); return () => socket.disconnect(); }, []); diff --git a/server/app.js b/server/app.js index e844a4d6f..8e8eb1148 100644 --- a/server/app.js +++ b/server/app.js @@ -17,13 +17,9 @@ const port = process.env.PORT || config.server.port; const eventlist = require('./data/eventsData.json'); const EventTimer = require('./classes/EventTimer.js'); -// TODO: this should be replaced by some sort of calculation -let durationForNow = 5400; +// init timer global.timer = new EventTimer(); timer.setupWithEventList(eventlist); -// timer.setupWithSeconds(durationForNow, true); - -console.log(timer.print()); // Socket const initiateSocket = require('./controllers/socketController.js'); diff --git a/server/classes/EventTimer.js b/server/classes/EventTimer.js index 52ce5a9df..e1cd28343 100644 --- a/server/classes/EventTimer.js +++ b/server/classes/EventTimer.js @@ -17,6 +17,15 @@ class EventTimer extends Timer { text: '', visible: false, }; + lower = { + text: '', + visible: false, + }; + titles = { + title: '', + subtitle: '', + presenter: '', + }; selectedEvent = null; selectedEventId = null; @@ -47,15 +56,20 @@ class EventTimer extends Timer { const start = e.timeStart == null || e.timeStart === '' ? 0 : e.timeStart; const end = e.timeEnd == null || e.timeEnd === '' ? 0 : e.timeEnd; + // time stuff this._resetTimers(); this.duration = end - start; this.current = this.duration; this.selectedEvent = eventIndex; this.selectedEventId = e.id; + + // event titles + this.titles.title = e.title; + this.titles.subtitle = e.subtitle; + this.titles.presenter = e.presenter; } print() { - // TODO: better formatting? return ` Timer ========= @@ -72,9 +86,12 @@ class EventTimer extends Timer { Events ------------------------------ + numEvents = ${this.numEvents} selectedEvent = ${this.selectedEvent} selectedEventId = ${this.selectedEventId} - numEvents = ${this.numEvents} + title = ${this.titles.title} + subtitle = ${this.titles.subtitle} + presenter = ${this.titles.presenter} Messages ------------------------------ @@ -82,6 +99,8 @@ class EventTimer extends Timer { presenter vis = ${this.presenter.visible} public text = ${this.public.text} public vis = ${this.public.visible} + lower text = ${this.lower.text} + lower vis = ${this.lower.visible} Private ------------------------------ @@ -109,6 +128,14 @@ class EventTimer extends Timer { this.public.visible = state; } + set lowerText(text) { + this.lower.text = text; + } + + set lowerVisible(state) { + this.lower.visible = state; + } + get presenter() { return this.presenter; } @@ -117,7 +144,24 @@ class EventTimer extends Timer { return this.public; } - _getEventData() {} + get lower() { + return this.lower; + } + + get titles() { + return this.titles; + } + + getEventData() {} + + get events() { + return this._eventList; + } + + // Torbjorn: is this a good idea? + set events(events) { + this._eventList = events; + } goto(eventIndex) { this.loadEvent(eventIndex); diff --git a/server/controllers/eventsController.js b/server/controllers/eventsController.js index 413db5537..c28d2ef2a 100644 --- a/server/controllers/eventsController.js +++ b/server/controllers/eventsController.js @@ -12,6 +12,10 @@ const replaceAt = (array, index, value) => { return ret; }; +const getEvents = () => { + return global.timer.events; +}; + // Create controller for GET request to '/events/all' // Returns - exports.eventsGetAll = async (req, res) => { diff --git a/server/controllers/socketController.js b/server/controllers/socketController.js index e5b5ce5a3..391039ef2 100644 --- a/server/controllers/socketController.js +++ b/server/controllers/socketController.js @@ -24,6 +24,11 @@ const initiateSocket = (server, config) => { socket.emit('timer', global.timer.getObject()); socket.emit('playstate', global.timer.playState); socket.emit('selected-id', global.timer.selectedEventId); + socket.emit('titles', global.timer.titles); + }); + + socket.on('get-current', () => { + socket.emit('current', global.timer.getCurrentInSeconds()); }); socket.on('get-timer', () => { @@ -38,22 +43,25 @@ const initiateSocket = (server, config) => { socket.emit('selected-id', global.timer.selectedEventId); }); - // playback API + socket.on('get-titles', () => { + socket.emit('titles', global.timer.titles); + }); + // playback API socket.on('get-messages', () => { - socket.emit('messages-presenter', global.timer.presenter); - socket.emit('messages-public', global.timer.public); - socket.emit('messages-lower', global.timer.lower); + broadcast(io, 'messages-presenter', global.timer.presenter); + broadcast(io, 'messages-public', global.timer.public); + broadcast(io, 'messages-lower', global.timer.lower); }); socket.on('set-presenter-text', (data) => { global.timer.presenterText = data; - socket.emit('messages-presenter', global.timer.presenter); + broadcast(io, 'messages-presenter', global.timer.presenter); }); socket.on('set-presenter-visible', (data) => { global.timer.presenterVisible = data; - socket.emit('messages-presenter', global.timer.presenter); + broadcast(io, 'messages-presenter', global.timer.presenter); }); socket.on('get-presenter', () => { @@ -62,12 +70,12 @@ const initiateSocket = (server, config) => { socket.on('set-public-text', (data) => { global.timer.publicText = data; - socket.emit('messages-public', global.timer.public); + broadcast(io, 'messages-public', global.timer.public); }); socket.on('set-public-visible', (data) => { global.timer.publicVisible = data; - socket.emit('messages-public', global.timer.public); + broadcast(io, 'messages-public', global.timer.public); }); socket.on('get-public', () => { @@ -76,12 +84,12 @@ const initiateSocket = (server, config) => { socket.on('set-lower-text', (data) => { global.timer.lowerText = data; - socket.emit('messages-lower', global.timer.lower); + broadcast(io, 'messages-lower', global.timer.lower); }); socket.on('set-lower-visible', (data) => { global.timer.lowerVisible = data; - socket.emit('messages-lower', global.timer.lower); + broadcast(io, 'messages-lower', global.timer.lower); }); socket.on('get-lower', () => { @@ -90,7 +98,11 @@ const initiateSocket = (server, config) => { }); }; -// send timer events +const broadcast = (socket, address, payload) => { + socket.emit(address, payload); +}; + +// broadcast: send timer events const emitTimer = (socket) => { // send current timer socket.emit('timer', global.timer.getObject());