Set the real message.id in the response instead of the content hash
Introduce the new field "content_id" and use it for the same purpose as
the "id" field was used: to detect if a dismissed message should be
displayed again. This behaviour is described in
I2ccaaa55ac549cb37eed851f8ed40f4d5f345f72
Change-Id: Ifd67230ea09884e0f31b140e2e2ccf550f0534b5
diff --git a/gr-messageoftheday/gr-messageoftheday-banner.js b/gr-messageoftheday/gr-messageoftheday-banner.js
index 9d7c839..dc9e393 100644
--- a/gr-messageoftheday/gr-messageoftheday-banner.js
+++ b/gr-messageoftheday/gr-messageoftheday-banner.js
@@ -52,12 +52,12 @@
_handleDismissMessage() {
document.cookie =
- `msg-${this._message.id}=1; path=/; expires=${this._getExpires()}`;
+ `msg-${this._message.content_id}=1; path=/; expires=${this._getExpires()}`;
this._hidden = true;
}
_isHidden() {
- this._hidden = document.cookie.search(`msg-${this._message.id}=`) > -1;
+ this._hidden = document.cookie.search(`msg-${this._message.content_id}=`) > -1;
}
_getExpires() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GetMessage.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GetMessage.java
index 3369392..64fcdcb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GetMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GetMessage.java
@@ -28,6 +28,7 @@
public class GetMessage implements RestReadView<ConfigResource> {
private static final String SECTION_MESSAGE = "message";
+ private static final String KEY_ID = "id";
private static final String KEY_STARTS_AT = "startsAt";
private static final String KEY_EXPIRES_AT = "expiresAt";
@@ -78,7 +79,8 @@
}
motd.html = message;
- motd.id = Integer.toString(motd.html.hashCode());
+ motd.id = cfg.getString(SECTION_MESSAGE, null, KEY_ID);
+ motd.contentId = Integer.toString(motd.html.hashCode());
return Response.ok(motd);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/MessageOfTheDayInfo.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/MessageOfTheDayInfo.java
index e17127c..09a2624 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/MessageOfTheDayInfo.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/MessageOfTheDayInfo.java
@@ -20,6 +20,8 @@
public class MessageOfTheDayInfo {
/** The ID of the message. */
public String id;
+ /** Content ID of the message */
+ public String contentId;
/** The time from which on the message will be displayed. */
public Date startsAt;
/** The time from which on the message will not be displayed anymore. */
diff --git a/src/main/resources/Documentation/rest-api-config.md b/src/main/resources/Documentation/rest-api-config.md
index 0bb32a8..417e20f 100644
--- a/src/main/resources/Documentation/rest-api-config.md
+++ b/src/main/resources/Documentation/rest-api-config.md
@@ -32,6 +32,7 @@
)]}'
{
"id": "hello",
+ "content_id": "768630922",
"starts_at": "Feb 4, 2020 5:53:00 PM",
"expires_at": "Dec 30, 2020 6:00:00 PM",
"html": "hello you!"
@@ -68,7 +69,8 @@
The `MessageOfTheDayInfo` entity contains information about the message of the day.
-* `id`: ID of the message generated based on the message content.
+* `id`: ID of the message
+* `content_id`: ID generated based on the message content
* `starts_at`: Date, when the message will be first displayed
* `expires_at`: Date, after which the message will not be displayed anymore
* `html`: String, containing the HTML-formatted message