diff --git a/apps/static/js/home/content.js b/apps/static/js/home/content.js
index aa94517..1462222 100644
--- a/apps/static/js/home/content.js
+++ b/apps/static/js/home/content.js
@@ -146,24 +146,35 @@ async function goToSubscription(subId) {
await showEditSubModal(subId);
}
+
+// #region Delete Content
+
async function deleteSelectedContent() {
+ const rows = contentTable.rows(".selected").data().toArray();
+ const names = rows.map(row => { return row.title });
+ const namesString = arrayToHtmlList(names, true).prop("outerHTML");
+ const multiple = names.length > 1;
- var rows = contentTable.rows(".selected").data();
- $.each(rows, async function() {
- await deleteTrackedContent(this.id);
- showToast(
- "success",
- "Deletion Successful",
- `This content may appear again under the ${this.subscription.name} Subscription:
${this.guid}`,
- 10000
- );
- });
+ await confirmDeleteModal(
+ `Confirm ${multiple ? "Multiple Deletions" : "Deletion"}`,
+ `Do you wish to permanently delete ${multiple ? "these" : "this"} ${names.length} content${multiple ? "s" : ""}?
${namesString}`,
+ async () => {
+ rows.forEach(async row => { await deleteTrackedContent(row.id) });
- setTimeout(async () => {
- await loadContent(getCurrentlyActiveServer().guild_id);
- }, 600)
+ showToast(
+ "danger",
+ `Deleted ${names.length} Content${multiple ? "s" : ""}`,
+ `${arrayToHtmlList(names, false).prop("outerHTML")}`,
+ 12000
+ );
+ },
+ null
+ );
}
+// #endregion
+
+
function clearExistingContentRows() {
$("#contentTable thead .table-select-all").prop("checked", false).prop("indeterminate", false);
contentTable.clear().draw(false);
diff --git a/apps/static/js/home/filters.js b/apps/static/js/home/filters.js
index c6e83b8..83cfd42 100644
--- a/apps/static/js/home/filters.js
+++ b/apps/static/js/home/filters.js
@@ -247,36 +247,57 @@ $(document).on("selectedServerChange", async function() {
await loadFilters(activeServer.guild_id);
});
-async function deleteSelectedFilters() {
- var rows = filtersTable.rows(".selected").data();
- $.each(rows, async function() {
- await deleteFilter(this.id);
- showToast(
- "success",
- "Deletion Successful",
- `Content Filter ${this.name} has been erased.`,
- 10000
- );
- })
-
- setTimeout(async () => {
- const guildId = getCurrentlyActiveServer().guild_id;
- await loadFilters(guildId);
- loadFilterOptions(guildId);
- }, 500)
-}
+// #region Delete Filters
$("#deleteEditFilter").on("click", async function() {
- const filterId = $("#filterId").val();
- const row = filtersTable.row(function(index, row) {row.id == id}).data();
- alert(filterId + JSON.stringify(row, null, 4))
- await deleteFilter(filterId);
- await loadFilters(getCurrentlyActiveServer().guild_id);
+ const filterId = parseInt($("#filterId").val());
+ const filter = filtersTable.row(function(idx, row) { return row.id === filterId }).data();
+
$("#filterFormModal").modal("hide");
- showToast(
- "success",
- "Deletion Successful",
- `Content Filter ${row.name} has been erased.`,
- 10000
+
+ await confirmDeleteModal(
+ "Confirm Deletion",
+ `Do you wish to permanently delete ${filter.name}?`,
+ async () => {
+ await deleteFilter(filterId);
+ await loadFilters(getCurrentlyActiveServer().guild_id);
+
+ showToast(
+ "danger",
+ "Deleted a Filter",
+ filter.name,
+ 12000
+ );
+ },
+ async () => {
+ $("#filterFormModal").modal("show");
+ }
);
-});
\ No newline at end of file
+});
+
+async function deleteSelectedFilters() {
+ const rows = filtersTable.rows(".selected").data().toArray();
+ const names = rows.map(row => row.name);
+ const namesString = arrayToHtmlList(names, true).prop("outerHTML");
+ const multiple = names.length > 1;
+
+ await confirmDeleteModal(
+ `Confirm ${multiple ? "Multiple Deletions" : "Deletion"}`,
+ `Do you wish to permanently delete ${multiple ? "these" : "this"} ${names.length} filter${multiple ? "s" : ""}?
${namesString}`,
+ async () => {
+ rows.forEach(async row => { await deleteFilter(row.id) });
+
+ showToast(
+ "danger",
+ `Delete ${names.length} Subscription${multiple ? "s" : ""}`,
+ `${arrayToHtmlList(names, false).prop("outerHTML")}`,
+ 12000
+ );
+
+ await loadFilters(getCurrentlyActiveServer().guild_id);
+ },
+ null
+ );
+}
+
+// #endregion
diff --git a/apps/static/js/home/index.js b/apps/static/js/home/index.js
index f1d25d7..bfdc881 100644
--- a/apps/static/js/home/index.js
+++ b/apps/static/js/home/index.js
@@ -157,4 +157,15 @@ async function confirmDeleteModal(title, description, acceptFunc, declineFunc) {
$modal.modal("hide");
});
$modal.modal("show");
+}
+
+function arrayToHtmlList(array, bold=false) {
+ $ul = $("