diff --git a/package.json b/package.json
index b6eec028..7fb50032 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"author": "Calvin Montgomery",
"name": "CyTube",
"description": "Online media synchronizer and chat",
- "version": "3.42.0",
+ "version": "3.42.1",
"repository": {
"url": "http://github.com/calzoneman/sync"
},
diff --git a/src/acp.js b/src/acp.js
index e370ffa3..58ffe886 100644
--- a/src/acp.js
+++ b/src/acp.js
@@ -4,6 +4,7 @@ var db = require("./database");
var util = require("./utilities");
var Config = require("./config");
var Server = require("./server");
+import { v4 as uuidv4 } from 'uuid';
function eventUsername(user) {
return user.getName() + "@" + user.realip;
@@ -13,6 +14,7 @@ function handleAnnounce(user, data) {
var sv = Server.getServer();
sv.announce({
+ id: uuidv4(),
title: data.title,
text: data.content,
from: user.getName()
diff --git a/www/js/callbacks.js b/www/js/callbacks.js
index 86a74362..15966819 100644
--- a/www/js/callbacks.js
+++ b/www/js/callbacks.js
@@ -64,10 +64,21 @@ Callbacks = {
},
announcement: function(data) {
+ // Suppress this announcement for people who have already closed it
+ if (data.id && CyTube.ui.suppressedAnnouncementId
+ && data.id === CyTube.ui.suppressedAnnouncementId) {
+ return;
+ }
$("#announcements").html("");
var signature = "
\u2014" + data.from;
var announcement = makeAlert(data.title, data.text + signature)
.appendTo($("#announcements"));
+ if (data.id) {
+ announcement.find(".close").click(function suppressThisAnnouncement() {
+ CyTube.ui.suppressedAnnouncementId = data.id;
+ setOpt("suppressed_announcement_id", data.id);
+ });
+ }
},
kick: function(data) {
diff --git a/www/js/data.js b/www/js/data.js
index 996687c2..4c101e37 100644
--- a/www/js/data.js
+++ b/www/js/data.js
@@ -69,7 +69,9 @@ var SOCKETIO_CONNECT_ERROR_COUNT = 0;
var HAS_CONNECTED_BEFORE = false;
var IMAGE_MATCH = /
]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/gi;
var CyTube = {};
-CyTube.ui = {};
+CyTube.ui = {
+ suppressedAnnouncementId: getOpt("suppressed_announcement_id")
+};
CyTube.featureFlag = {
efficientEmotes: false
};