From 1337070e3551186ee1eb7e1b4ef981b9431909e3 Mon Sep 17 00:00:00 2001
From: Reed <reed@plusreed.com>
Date: Wed, 12 Oct 2022 13:43:49 -0400
Subject: [PATCH 1/6] start work on making the timing property do something

---
 index.js           | 12 +++++++++---
 util/addSeconds.js |  7 +++++++
 2 files changed, 16 insertions(+), 3 deletions(-)
 create mode 100644 util/addSeconds.js

diff --git a/index.js b/index.js
index f2df2e5..0169c2f 100644
--- a/index.js
+++ b/index.js
@@ -4,6 +4,8 @@ const { Server } = require('socket.io')
 const path = require('path')
 const readline = require('readline')
 
+const addSeconds = require('./util/addSeconds')
+
 const app = express()
 const server = http.createServer(app)
 const io = new Server(server)
@@ -48,7 +50,7 @@ const TABELLARIUS_STATE = {
             ascend: false,
             deleted: false,
             show: false,
-            timing: 0,
+            timing: 180,
             responded: false,
             responseMessage: '',
             potential: true,
@@ -98,6 +100,9 @@ app.get('/twitch', async (_req, res) => {
 })
 
 app.post('/merch-message', (req, res) => {
+    let currentDate = new Date()
+    let respondByDate = addSeconds(new Date(), 180) // adds 180 seconds to current date
+
     const m = {
         number: TABELLARIUS_STATE.merch_messages.length + 1,
         id: +new Date(),
@@ -113,7 +118,7 @@ app.post('/merch-message', (req, res) => {
         ascend: false,
         deleted: false,
         show: false,
-        timing: 0,
+        timing: Math.abs(currentDate.getTime() - respondByDate.getTime()) / 1000,
         responded: false,
         responseMessage: '',
         discount: false
@@ -156,6 +161,7 @@ function wsl (...args) {
 
 const MessageHandler = {
     _emitTimingUpdate: function (_io) {
+        // TODO: Go through merch messages and decrement every timing by 1
         _io.emit('updateTimings', {
             backlog: TABELLARIUS_STATE.merch_messages,
             queueLength: TABELLARIUS_STATE.merch_messages.length,
@@ -306,7 +312,7 @@ const MessageHandler = {
                 image: messageToToggle.image,
                 number: messageToToggle.number,
                 alertColour: messageToToggle.alertColour,
-                timing: messageToToggle.timing,
+                timing: 0,
                 discount: messageToToggle.discount,
                 deleted: messageToToggle.deleted,
             })
diff --git a/util/addSeconds.js b/util/addSeconds.js
new file mode 100644
index 0000000..7d71ae7
--- /dev/null
+++ b/util/addSeconds.js
@@ -0,0 +1,7 @@
+module.exports = function (date, numSeconds) {
+    // TODO: Validate that this is a date
+
+    date.setSeconds(date.getSeconds + numSeconds)
+
+    return date
+}
\ No newline at end of file

From 8f4ae9f42cb094fccb1e4201666134ea5750a320 Mon Sep 17 00:00:00 2001
From: Reed Davenport <reed@plusreed.com>
Date: Wed, 12 Oct 2022 13:44:54 -0400
Subject: [PATCH 2/6] add config file

---
 .gitignore                 | 3 ++-
 config/config.example.json | 5 +++++
 index.js                   | 8 +++++---
 3 files changed, 12 insertions(+), 4 deletions(-)
 create mode 100644 config/config.example.json

diff --git a/.gitignore b/.gitignore
index 235d614..b288f9b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 build_basedonsourcemaps/
 build*/
-node_modules/
\ No newline at end of file
+node_modules/
+config/config.json
\ No newline at end of file
diff --git a/config/config.example.json b/config/config.example.json
new file mode 100644
index 0000000..5399e1b
--- /dev/null
+++ b/config/config.example.json
@@ -0,0 +1,5 @@
+{
+    "port": 3000,
+    "password": "lttstore.com",
+    "frontend_folder": "build"
+}
\ No newline at end of file
diff --git a/index.js b/index.js
index 0169c2f..a84f0cf 100644
--- a/index.js
+++ b/index.js
@@ -4,14 +4,16 @@ const { Server } = require('socket.io')
 const path = require('path')
 const readline = require('readline')
 
+const config = require('./config/config.json')
+
 const addSeconds = require('./util/addSeconds')
 
 const app = express()
 const server = http.createServer(app)
 const io = new Server(server)
 
-const PASSWORD = 'lttstore.com'
-const PORT = 3000
+const PASSWORD = config.password
+const PORT = config.port
 
 /** All clients connected to socket.io */
 let clients = []
@@ -65,7 +67,7 @@ const TABELLARIUS_STATE = {
 }
 
 let live = true;
-const FRONTEND_FOLDER = "build"
+const FRONTEND_FOLDER = config.frontend_folder
 
 app.use(express.json())
 app.use('/', express.static(path.join(__dirname, FRONTEND_FOLDER)))

From 0393658dc8fddc65ffe96ef741ec13cd8f1e9538 Mon Sep 17 00:00:00 2001
From: Reed <reed@plusreed.com>
Date: Wed, 12 Oct 2022 13:43:49 -0400
Subject: [PATCH 3/6] start work on making the timing property do something

---
 index.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/index.js b/index.js
index a84f0cf..276faa8 100644
--- a/index.js
+++ b/index.js
@@ -4,6 +4,7 @@ const { Server } = require('socket.io')
 const path = require('path')
 const readline = require('readline')
 
+const addSeconds = require('./util/addSeconds')
 const config = require('./config/config.json')
 
 const addSeconds = require('./util/addSeconds')

From 4cf8d340a26644df439b120289db4561f5a57373 Mon Sep 17 00:00:00 2001
From: Reed Davenport <reed@plusreed.com>
Date: Wed, 12 Oct 2022 13:52:56 -0400
Subject: [PATCH 4/6] squash

Decrement timing on every timing update

Decrement timing on every timing update
---
 index.js | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/index.js b/index.js
index 276faa8..78b0783 100644
--- a/index.js
+++ b/index.js
@@ -7,8 +7,6 @@ const readline = require('readline')
 const addSeconds = require('./util/addSeconds')
 const config = require('./config/config.json')
 
-const addSeconds = require('./util/addSeconds')
-
 const app = express()
 const server = http.createServer(app)
 const io = new Server(server)
@@ -164,7 +162,11 @@ function wsl (...args) {
 
 const MessageHandler = {
     _emitTimingUpdate: function (_io) {
-        // TODO: Go through merch messages and decrement every timing by 1
+        TABELLARIUS_STATE.merch_messages.forEach((m) => {
+            if (m.timing > 0) {
+                m.timing--
+            }
+        })
         _io.emit('updateTimings', {
             backlog: TABELLARIUS_STATE.merch_messages,
             queueLength: TABELLARIUS_STATE.merch_messages.length,

From 4dba78ed875ba5c5c2d74c1ef97cae7de2a2f5d7 Mon Sep 17 00:00:00 2001
From: Reed Davenport <reed@plusreed.com>
Date: Wed, 12 Oct 2022 14:03:39 -0400
Subject: [PATCH 5/6] use -= 1 instead of --

---
 index.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.js b/index.js
index 78b0783..301ac79 100644
--- a/index.js
+++ b/index.js
@@ -54,7 +54,7 @@ const TABELLARIUS_STATE = {
             timing: 180,
             responded: false,
             responseMessage: '',
-            potential: true,
+            potential: false,
             potentialRejected: false
         }
     ],
@@ -164,7 +164,7 @@ const MessageHandler = {
     _emitTimingUpdate: function (_io) {
         TABELLARIUS_STATE.merch_messages.forEach((m) => {
             if (m.timing > 0) {
-                m.timing--
+                m.timing -= 1
             }
         })
         _io.emit('updateTimings', {

From 7d27f4d79b6454d24ea08dae37c5d15bee1b3f8a Mon Sep 17 00:00:00 2001
From: Reed Davenport <reed@plusreed.com>
Date: Thu, 13 Oct 2022 18:33:57 -0400
Subject: [PATCH 6/6] calculate queueDuration and nextMessageTiming

---
 index.js | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/index.js b/index.js
index 301ac79..da9549a 100644
--- a/index.js
+++ b/index.js
@@ -167,6 +167,11 @@ const MessageHandler = {
                 m.timing -= 1
             }
         })
+
+        // sum up all timings
+        let totalTiming = 0
+        TABELLARIUS_STATE.merch_messages.forEach(m => totalTiming += m.timing)
+
         _io.emit('updateTimings', {
             backlog: TABELLARIUS_STATE.merch_messages,
             queueLength: TABELLARIUS_STATE.merch_messages.length,
@@ -174,8 +179,8 @@ const MessageHandler = {
             isPaused: TABELLARIUS_STATE.queuePaused,
             displayMarquee: TABELLARIUS_STATE.marquee_show,
             marqueeText: TABELLARIUS_STATE.marquee_text,
-            queueDuration: 0, // ???
-            nextMessageTiming: 0, // ???
+            queueDuration: totalTiming,
+            nextMessageTiming: TABELLARIUS_STATE.merch_messages[TABELLARIUS_STATE.merch_messages.length - 1].timing,
             displayDiscount: TABELLARIUS_STATE.showDiscount,
             discountText: TABELLARIUS_STATE.discountText,
             messagesPotentiated: TABELLARIUS_STATE.merch_messages.filter(m => m.potential).length,
@@ -317,7 +322,7 @@ const MessageHandler = {
                 image: messageToToggle.image,
                 number: messageToToggle.number,
                 alertColour: messageToToggle.alertColour,
-                timing: 0,
+                timing: messageToToggle.timing,
                 discount: messageToToggle.discount,
                 deleted: messageToToggle.deleted,
             })