From 71298ee166fe3d7b9a789dc6f1ecc7445b7b556e Mon Sep 17 00:00:00 2001 From: Florian Schmitt Date: Wed, 4 Jun 2025 12:35:04 +0300 Subject: [PATCH] feat: wip board metas --- client/script.js | 4 ++++ lib/data/redis.js | 35 ++++++++++++++++++++++++++++++++++- server.js | 21 +++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/client/script.js b/client/script.js index 0abec71..3150ab7 100644 --- a/client/script.js +++ b/client/script.js @@ -97,6 +97,10 @@ function getMessage(m) { // this doesn't happen yet break + case 'editBoardMetas': + sendAction('editBoardMetas', { prop: 'opacity', value: 0.5 }) + break + case 'moveCard': moveCard($(`#${data.id}`), data.position) break diff --git a/lib/data/redis.js b/lib/data/redis.js index 5fd6027..42b46bf 100644 --- a/lib/data/redis.js +++ b/lib/data/redis.js @@ -11,7 +11,7 @@ const sets = require('simplesets') // var MemoryStore = require('connect/middleware/session/memory'); // var session_store = new MemoryStore(); -const REDIS_PREFIX = '#scrumblr#' +const REDIS_PREFIX = '#memo#' // For Redis Debugging @@ -111,6 +111,39 @@ db.prototype = { }) }, + // Board metadata commands + createBoardMetas(room, id, board) { + const boardString = JSON.stringify(board) + redisClient.hset( + `${REDIS_PREFIX}-room:${room}-board`, + id, + boardString + ) + } + getBoardMetas(room, callback) { + redisClient.hgetall(`${REDIS_PREFIX}-room:${room}-board`, (err, res) => { + console.log('board metas',res) + callback(JSON.parse(res)) + }) + }, + + editBoardMetas(room, id, prop, value) { + redisClient.hget(`${REDIS_PREFIX}-room:${room}-board`, id, (err, res) => { + const board = JSON.parse(res) + if (board !== null) { + board[prop] = value + redisClient.hset(`${REDIS_PREFIX}-room:${room}-board`, id, JSON.stringify(board)) + } + }) + }, + + deleteBoardMetas(room, id) { + redisClient.hdel( + `${REDIS_PREFIX}-room:${room}-board`, + id + ) + }, + // Card commands createCard(room, id, card) { const cardString = JSON.stringify(card) diff --git a/server.js b/server.js index 53bca5f..05d47e1 100644 --- a/server.js +++ b/server.js @@ -134,6 +134,27 @@ io.sockets.on('connection', (client) => { break + case 'editBoardMetas': + clean_data = {} + // TODO: test if prop is in ['title', opacity, 'imageUrl'] + clean_data.id = message.data.id + clean_data.prop = message.data.prop + clean_data.value = scrub(message.data.value) + + // send update to database + getRoom(client, (room) => { + db.editBoardMetas(room, clean_data.id, clean_data.prop, clean_data.value) + }) + + message_out = { + action: 'editBoardMetas', + data: clean_data + } + + broadcastToRoom(client, message_out) + + break + case 'moveCard': // report to all other browsers message_out = {