From 64b569fd4d656577352a6661297bef3eb5d3563d Mon Sep 17 00:00:00 2001 From: Corban-Lee Jones Date: Wed, 2 Oct 2024 16:16:50 +0100 Subject: [PATCH] handle error based on HTTP status --- apps/home/static/home/js/servers.js | 35 ++++++++++++++++------------- apps/home/views.py | 5 +++-- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/apps/home/static/home/js/servers.js b/apps/home/static/home/js/servers.js index b994220..76ffcb9 100644 --- a/apps/home/static/home/js/servers.js +++ b/apps/home/static/home/js/servers.js @@ -156,23 +156,26 @@ $(document).on("selectedServerChange", function() { async function loadServers() { $(".server-loading-item").show(); - try { - let response = await generateServers(); - $(".server-loading-item").hide(); - - if (response.hasOwnProperty("retry_after")) { - $(".server-rate-limit").show(); - return; - } - - response.forEach(server => { - addToLoadedServers(server, false); + generateServers() + .then(servers => { + servers.forEach(server => addToLoadedServers(server, false)); + }) + .catch(error => { + switch (error.status) { + case 401: + window.location.href = "/login"; // discord token has expired + break; + case 429: + $(".server-rate-limit").show(); + break; + default: + logError(error); + break; + } + }) + .finally(() => { + $(".server-loading-item").hide(); }); - - } - catch (error) { - logError(error); - } } // #endregion diff --git a/apps/home/views.py b/apps/home/views.py index 2d0c0ae..dd32d18 100644 --- a/apps/home/views.py +++ b/apps/home/views.py @@ -35,10 +35,11 @@ class GuildsView(View): url=f"{settings.DISCORD_API_URL}/users/@me/guilds", headers={"Authorization": f"Bearer {access_token}"} ) + status = response.status_code guild_data = response.json() - if "retry_after" in guild_data: - return JsonResponse(guild_data, safe=False) + if status != 200: + return JsonResponse(guild_data, status=status, safe=False) # guilds where the user either administrates or owns cleaned_guild_data = []