subscriptions loaded per guild
This commit is contained in:
parent
a7dfc042a6
commit
397e02aa42
@ -23,6 +23,8 @@ async function ajaxRequest(url, method, data) {
|
||||
}
|
||||
}
|
||||
|
||||
// Saved Guilds
|
||||
|
||||
async function getSavedGuilds() {
|
||||
return await ajaxRequest("/api/saved-guilds/", "GET");
|
||||
}
|
||||
@ -39,10 +41,30 @@ async function deleteSavedGuild(id) {
|
||||
return await ajaxRequest(`/api/saved-guilds/${id}/`, "DELETE");
|
||||
}
|
||||
|
||||
// Loading Guilds
|
||||
|
||||
async function loadGuilds() {
|
||||
return await ajaxRequest("/guilds", "GET");
|
||||
}
|
||||
|
||||
// Subscriptions
|
||||
|
||||
async function getSubscriptions(guildId) {
|
||||
const url = `/api/subscription/?guild_id=${guildId}`;
|
||||
return await ajaxRequest(url, "GET");
|
||||
}
|
||||
|
||||
async function getSubscription(id) {
|
||||
return await ajaxRequest(`/api/subscription/${id}/`, "GET");
|
||||
}
|
||||
|
||||
async function newSubscription(formData) {
|
||||
return await ajaxRequest("/api/subscription/", "POST", formData);
|
||||
}
|
||||
|
||||
async function deleteSubscription(id) {
|
||||
return await ajaxRequest(`/api/subscription/${id}/`, "DELETE");
|
||||
}
|
||||
|
||||
|
||||
// Old functions
|
||||
@ -107,137 +129,137 @@ async function loadGuilds() {
|
||||
// });
|
||||
// }
|
||||
|
||||
function getSubscriptions() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: "/api/subscription/",
|
||||
type: "GET",
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function getSubscriptions() {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: "/api/subscription/",
|
||||
// type: "GET",
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function getSubscription(uuid) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: `/api/subscription/${uuid}/`,
|
||||
type: "GET",
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function getSubscription(uuid) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: `/api/subscription/${uuid}/`,
|
||||
// type: "GET",
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function getServer(serverId) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: `/api/serverlink/?server_id=${serverId}`,
|
||||
type: "GET",
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response.results[0]);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response.results[0]);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function getServer(serverId) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: `/api/serverlink/?server_id=${serverId}`,
|
||||
// type: "GET",
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response.results[0]);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response.results[0]);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function newSubscription(formData) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: "/api/subscription/",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function newSubscription(formData) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: "/api/subscription/",
|
||||
// type: "POST",
|
||||
// data: formData,
|
||||
// processData: false,
|
||||
// contentType: false,
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function editSubscription(uuid, formData) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: `/api/subscription/${uuid}/`,
|
||||
type: "PUT",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function editSubscription(uuid, formData) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: `/api/subscription/${uuid}/`,
|
||||
// type: "PUT",
|
||||
// data: formData,
|
||||
// processData: false,
|
||||
// contentType: false,
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function patchSubscription(uuid, formData) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: `/api/subscription/${uuid}/`,
|
||||
type: "PATCH",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function patchSubscription(uuid, formData) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: `/api/subscription/${uuid}/`,
|
||||
// type: "PATCH",
|
||||
// data: formData,
|
||||
// processData: false,
|
||||
// contentType: false,
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
function deleteSubscription(uuid) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax({
|
||||
url: `/api/subscription/${uuid}/`,
|
||||
type: "DELETE",
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
},
|
||||
success: function(response) {
|
||||
resolve(response);
|
||||
},
|
||||
error: function(response) {
|
||||
reject(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// function deleteSubscription(uuid) {
|
||||
// return new Promise(function(resolve, reject) {
|
||||
// $.ajax({
|
||||
// url: `/api/subscription/${uuid}/`,
|
||||
// type: "DELETE",
|
||||
// beforeSend: function(xhr) {
|
||||
// xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
|
||||
// },
|
||||
// success: function(response) {
|
||||
// resolve(response);
|
||||
// },
|
||||
// error: function(response) {
|
||||
// reject(response);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
@ -33,10 +33,10 @@ function initSubscriptionTable() {
|
||||
{ title: "Name", data: "name" },
|
||||
{ title: "URL", data: "url" },
|
||||
{ title: "Channels", data: "channels_count" },
|
||||
{ title: "Created", data: "created" },
|
||||
{ title: "Created", data: "creation_datetime" },
|
||||
{
|
||||
title: "Notes",
|
||||
data: "notes",
|
||||
data: "extra_notes",
|
||||
orderable: false,
|
||||
className: "text-center",
|
||||
render: function(data, type) {
|
||||
@ -55,40 +55,40 @@ function initSubscriptionTable() {
|
||||
]
|
||||
});
|
||||
|
||||
subTable.rows.add([
|
||||
{
|
||||
name: "BBC News",
|
||||
url: "https://feeds.bbci.co.uk/news/rss.xml",
|
||||
channels_count: 3,
|
||||
created: "13-03-2024",
|
||||
notes: "No Description",
|
||||
active: true
|
||||
},
|
||||
{
|
||||
name: "BBC News - Entertainment",
|
||||
url: "https://feeds.bbci.co.uk/news/entertainment_and_arts/rss.xml",
|
||||
channels_count: 1,
|
||||
created: "22-03-2024",
|
||||
notes: "No Description",
|
||||
active: true
|
||||
},
|
||||
{
|
||||
name: "BBC News - Politics",
|
||||
url: "https://feeds.bbci.co.uk/news/politics/rss.xml",
|
||||
channels_count: 5,
|
||||
created: "16-03-2024",
|
||||
notes: "No Description",
|
||||
active: true
|
||||
},
|
||||
{
|
||||
name: "BBC News - North America",
|
||||
url: "https://feeds.bbci.co.uk/news/north_america/rss.xml",
|
||||
channels_count: 2,
|
||||
created: "04-04-2024",
|
||||
notes: "No Description",
|
||||
active: true
|
||||
}
|
||||
]).draw(false);
|
||||
// subTable.rows.add([
|
||||
// {
|
||||
// name: "BBC News",
|
||||
// url: "https://feeds.bbci.co.uk/news/rss.xml",
|
||||
// channels_count: 3,
|
||||
// created: "13-03-2024",
|
||||
// notes: "No Description",
|
||||
// active: true
|
||||
// },
|
||||
// {
|
||||
// name: "BBC News - Entertainment",
|
||||
// url: "https://feeds.bbci.co.uk/news/entertainment_and_arts/rss.xml",
|
||||
// channels_count: 1,
|
||||
// created: "22-03-2024",
|
||||
// notes: "No Description",
|
||||
// active: true
|
||||
// },
|
||||
// {
|
||||
// name: "BBC News - Politics",
|
||||
// url: "https://feeds.bbci.co.uk/news/politics/rss.xml",
|
||||
// channels_count: 5,
|
||||
// created: "16-03-2024",
|
||||
// notes: "No Description",
|
||||
// active: true
|
||||
// },
|
||||
// {
|
||||
// name: "BBC News - North America",
|
||||
// url: "https://feeds.bbci.co.uk/news/north_america/rss.xml",
|
||||
// channels_count: 2,
|
||||
// created: "04-04-2024",
|
||||
// notes: "No Description",
|
||||
// active: true
|
||||
// }
|
||||
// ]).draw(false);
|
||||
}
|
||||
|
||||
// Determine and apply the state of the 'select all' checkbox
|
||||
@ -143,4 +143,63 @@ $("#tableButton").on("click", function() {
|
||||
// Open new subscription modal
|
||||
$("#tableAddRowBtn").on("click", function() {
|
||||
$("#subFormModal").modal("show");
|
||||
});
|
||||
});
|
||||
|
||||
$("#subForm").on("submit", async function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
var name = $("#subName").val();
|
||||
url = $("#subUrl").val();
|
||||
guildId = $("#subGuildId").val();
|
||||
extraNotes = $("#subExtraNotes").val();
|
||||
|
||||
var subPrimaryKey = await registerNewSubscription(name, url, guildId, extraNotes);
|
||||
if (subPrimaryKey)
|
||||
showToast("success", "subscription created", "created with ID: " + subPrimaryKey);
|
||||
|
||||
$("#subFormModal").modal("hide");
|
||||
});
|
||||
|
||||
async function registerNewSubscription(name, url, guildId, extraNotes) {
|
||||
var formData = new FormData();
|
||||
formData.append("name", name);
|
||||
formData.append("url", url);
|
||||
formData.append("guild_id", guildId);
|
||||
formData.append("extra_notes", extraNotes);
|
||||
formData.append("active", true);
|
||||
|
||||
try { response = await newSubscription(formData); }
|
||||
catch (err) {
|
||||
// alert(JSON.stringify(err))
|
||||
showToast("danger", "Subscription Error", err.responseText, 18000);
|
||||
return false;
|
||||
}
|
||||
|
||||
return response.id;
|
||||
}
|
||||
|
||||
function clearExistingTableRows() {
|
||||
subTable.clear().draw(false);
|
||||
}
|
||||
|
||||
async function loadSubscriptions(guildId) {
|
||||
|
||||
if (!guildId)
|
||||
return;
|
||||
|
||||
clearExistingTableRows();
|
||||
|
||||
try {
|
||||
const subscriptions = await getSubscriptions(guildId);
|
||||
subTable.rows.add(subscriptions.results).draw(false);
|
||||
}
|
||||
catch (err) {
|
||||
console.error(JSON.stringify(error, null, 4));
|
||||
showToast("danger", `Error Loading Subscriptions: HTTP ${error.status}`, error.responseJSON.message, 15000);
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on("selectedServerChange", async function() {
|
||||
const activeServer = getCurrentlyActiveServer();
|
||||
await loadSubscriptions(activeServer.guild_id);
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user