diff --git a/apps/static/js/api.js b/apps/static/js/api.js
index 2c0c8ba..e7e9a33 100644
--- a/apps/static/js/api.js
+++ b/apps/static/js/api.js
@@ -172,3 +172,14 @@ async function getGuildSettings(guildId) {
async function editGuildSettings(id, formData) {
return await ajaxRequest(`/api/guild-settings/${id}/`, "PUT", formData);
}
+
+// Unique Content Rules
+
+async function getUniqueContentRules() {
+ return await ajaxRequest("/api/unique-content-rule/", "GET");
+}
+
+async function getUniqueContentRule(ruleId) {
+ return await ajaxRequest(`/api/unique-content-rule/${ruleId}/`, "GET");
+}
+
diff --git a/apps/static/js/home/index.js b/apps/static/js/home/index.js
index 4a6f07f..e150dac 100644
--- a/apps/static/js/home/index.js
+++ b/apps/static/js/home/index.js
@@ -122,12 +122,12 @@ $(document).ready(function() {
$(this).replaceWith(`
-
+
-
diff --git a/apps/static/js/home/subscriptions.js b/apps/static/js/home/subscriptions.js
index 72a0aa4..4403912 100644
--- a/apps/static/js/home/subscriptions.js
+++ b/apps/static/js/home/subscriptions.js
@@ -416,6 +416,7 @@ $(document).on("selectedServerChange", async function() {
await loadChannelOptions(guildId);
await loadFilterOptions(guildId);
await loadMutatorOptions();
+ await loadUniqueContentRuleOptions();
})
async function updateDefaultSubEmbedColour(settings=null) {
@@ -568,6 +569,33 @@ async function loadChannelOptions(guildId) {
}
}
+async function loadUniqueContentRuleOptions() {
+ $("#subUniqueRules").prop("disabled", true);
+
+ $("#subUniqueRules option").each(function() {
+ if ($(this).val()) { $(this).remove() }
+ });
+
+ $("#subUniqueRules").val("").change();
+
+ try {
+ const rules = await getUniqueContentRules();
+ rules.results.forEach(rule => {
+ $("#subUniqueRules").append($("