summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2018-11-21 13:35:37 -0600
committerOmar Roth <omarroth@hotmail.com>2018-11-21 13:35:37 -0600
commitcdd916f51d68e9982ab3e98cad20c998504146cb (patch)
treec8b1368636d0c7d2977a59b8f1dc9a12c2383570
parente80884cfce3ec21d6e3bb08a682607d3952eb954 (diff)
downloadinvidious-cdd916f51d68e9982ab3e98cad20c998504146cb.tar.gz
invidious-cdd916f51d68e9982ab3e98cad20c998504146cb.tar.bz2
invidious-cdd916f51d68e9982ab3e98cad20c998504146cb.zip
Add async for manage_subscriptions
-rw-r--r--src/invidious.cr17
-rw-r--r--src/invidious/views/subscription_manager.ecr33
2 files changed, 47 insertions, 3 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index d0ef43c1..34cf318b 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -1438,6 +1438,12 @@ get "/subscription_ajax" do |env|
user = env.get? "user"
referer = get_referer(env)
+ redirect = env.params.query["redirect"]?
+ redirect ||= "false"
+ redirect = redirect == "true"
+
+ count_text = ""
+
if user
user = user.as(User)
@@ -1500,9 +1506,18 @@ get "/subscription_ajax" do |env|
PG_DB.exec("UPDATE users SET subscriptions = array_remove(subscriptions,$1) WHERE id = $2", channel_id, sid)
end
end
+
+ count_text = PG_DB.query_one?("SELECT cardinality(subscriptions) FROM users WHERE id = $1", [sid], as: Int64)
+ count_text ||= 0
+ count_text = "#{number_with_separator(count_text)} subscriptions"
end
- env.redirect referer
+ if redirect
+ env.redirect referer
+ else
+ env.response.content_type = "application/json"
+ {"countText" => count_text}.to_json
+ end
end
get "/delete_account" do |env|
diff --git a/src/invidious/views/subscription_manager.ecr b/src/invidious/views/subscription_manager.ecr
index b942e686..d420fbf8 100644
--- a/src/invidious/views/subscription_manager.ecr
+++ b/src/invidious/views/subscription_manager.ecr
@@ -4,7 +4,7 @@
<div class="pure-g h-box">
<div class="pure-u-2-3">
- <h3><%= subscriptions.size %> subscriptions</h3>
+ <h3 id="count"><%= subscriptions.size %> subscriptions</h3>
</div>
<div class="pure-u-1-3" style="text-align:right;">
<h3>
@@ -24,7 +24,12 @@
<div class="pure-u-2-5"></div>
<div class="pure-u-1-5" style="text-align: right;">
<h3>
- <a href="/subscription_ajax?action_remove_subscriptions=1&c=<%= channel.id %>">unsubscribe</a>
+ <a onclick="remove_subscription(this)"
+ data-id="<%= channel.id %>"
+ onmouseenter='this["href"]="javascript:void(0)"'
+ href="/subscription_ajax?action_remove_subscriptions=1&c=<%= channel.id %>">
+ unsubscribe
+ </a>
</h3>
</div>
</div>
@@ -34,3 +39,27 @@
<% end %>
</div>
<% end %>
+
+<script>
+function remove_subscription(target) {
+ var row = target.parentNode.parentNode.parentNode.parentNode;
+ row.style.display = "none";
+
+ var url = "/subscription_ajax?action_remove_subscriptions=1&redirect=false&c=" + target.getAttribute("data-id");
+ var xhr = new XMLHttpRequest();
+ xhr.responseType = "json";
+ xhr.timeout = 20000;
+ xhr.open("GET", url, true);
+ xhr.send();
+
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4) {
+ if (xhr.status == 200) {
+ document.getElementById("count").innerHTML = xhr.response.countText;
+ } else {
+ row.style.display = "";
+ }
+ }
+ }
+}
+</script> \ No newline at end of file