mirror of https://github.com/iv-org/invidious.git
Add async for manage_subscriptions
This commit is contained in:
parent
e80884cfce
commit
cdd916f51d
|
@ -1438,6 +1438,12 @@ get "/subscription_ajax" do |env|
|
||||||
user = env.get? "user"
|
user = env.get? "user"
|
||||||
referer = get_referer(env)
|
referer = get_referer(env)
|
||||||
|
|
||||||
|
redirect = env.params.query["redirect"]?
|
||||||
|
redirect ||= "false"
|
||||||
|
redirect = redirect == "true"
|
||||||
|
|
||||||
|
count_text = ""
|
||||||
|
|
||||||
if user
|
if user
|
||||||
user = user.as(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)
|
PG_DB.exec("UPDATE users SET subscriptions = array_remove(subscriptions,$1) WHERE id = $2", channel_id, sid)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
|
if redirect
|
||||||
env.redirect referer
|
env.redirect referer
|
||||||
|
else
|
||||||
|
env.response.content_type = "application/json"
|
||||||
|
{"countText" => count_text}.to_json
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/delete_account" do |env|
|
get "/delete_account" do |env|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<div class="pure-g h-box">
|
<div class="pure-g h-box">
|
||||||
<div class="pure-u-2-3">
|
<div class="pure-u-2-3">
|
||||||
<h3><%= subscriptions.size %> subscriptions</h3>
|
<h3 id="count"><%= subscriptions.size %> subscriptions</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="pure-u-1-3" style="text-align:right;">
|
<div class="pure-u-1-3" style="text-align:right;">
|
||||||
<h3>
|
<h3>
|
||||||
|
@ -24,7 +24,12 @@
|
||||||
<div class="pure-u-2-5"></div>
|
<div class="pure-u-2-5"></div>
|
||||||
<div class="pure-u-1-5" style="text-align: right;">
|
<div class="pure-u-1-5" style="text-align: right;">
|
||||||
<h3>
|
<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>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,3 +39,27 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% 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>
|
Loading…
Reference in New Issue