summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/invidious/views/channel.ecr5
-rw-r--r--src/invidious/views/components/subscribe_widget.ecr24
-rw-r--r--src/invidious/views/components/subscribe_widget_script.ecr77
-rw-r--r--src/invidious/views/playlists.ecr5
-rw-r--r--src/invidious/views/watch.ecr5
5 files changed, 18 insertions, 98 deletions
diff --git a/src/invidious/views/channel.ecr b/src/invidious/views/channel.ecr
index 6737c0d2..9d55f3c3 100644
--- a/src/invidious/views/channel.ecr
+++ b/src/invidious/views/channel.ecr
@@ -82,8 +82,3 @@
<% end %>
</div>
</div>
-
-<script>
-<% sub_count_text = number_to_short_text(sub_count) %>
-<%= rendered "components/subscribe_widget_script" %>
-</script>
diff --git a/src/invidious/views/components/subscribe_widget.ecr b/src/invidious/views/components/subscribe_widget.ecr
index a3d6a55f..c9240098 100644
--- a/src/invidious/views/components/subscribe_widget.ecr
+++ b/src/invidious/views/components/subscribe_widget.ecr
@@ -1,23 +1,35 @@
<% if user %>
<% if subscriptions.includes? ucid %>
<p>
- <form onsubmit="return false" action="/subscription_ajax?action_remove_subscriptions=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>" method="post">
+ <form action="/subscription_ajax?action_remove_subscriptions=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>" method="post">
<input type="hidden" name="csrf_token" value="<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>">
- <a id="subscribe" onclick="unsubscribe()" class="pure-button pure-button-primary" href="#">
+ <button data-type="unsubscribe" id="subscribe" class="pure-button pure-button-primary">
<b><input style="all:unset" type="submit" value="<%= translate(locale, "Unsubscribe") %> | <%= sub_count_text %>"></b>
- </a>
+ </button>
</form>
</p>
<% else %>
<p>
- <form onsubmit="return false" action="/subscription_ajax?action_create_subscription_to_channel=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>" method="post">
+ <form action="/subscription_ajax?action_create_subscription_to_channel=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>" method="post">
<input type="hidden" name="csrf_token" value="<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>">
- <a id="subscribe" onclick="subscribe()" class="pure-button pure-button-primary" href="#">
+ <button data-type="subscribe" id="subscribe" class="pure-button pure-button-primary">
<b><input style="all:unset" type="submit" value="<%= translate(locale, "Subscribe") %> | <%= sub_count_text %>"></b>
- </a>
+ </button>
</form>
</p>
<% end %>
+
+ <script>
+ var subscribe_data = {
+ ucid: '<%= ucid %>',
+ author: '<%= author %>',
+ sub_count_text: '<%= sub_count_text %>',
+ csrf_token: '<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>',
+ subscribe_text: '<%= translate(locale, "Subscribe").gsub("'", "\\'") %>',
+ unsubscribe_text: '<%= translate(locale, "Unsubscribe").gsub("'", "\\'") %>'
+ }
+ </script>
+ <script src="/js/subscribe_widget.js"></script>
<% else %>
<p>
<a id="subscribe" class="pure-button pure-button-primary"
diff --git a/src/invidious/views/components/subscribe_widget_script.ecr b/src/invidious/views/components/subscribe_widget_script.ecr
deleted file mode 100644
index 107bd3a2..00000000
--- a/src/invidious/views/components/subscribe_widget_script.ecr
+++ /dev/null
@@ -1,77 +0,0 @@
-subscribe_button = document.getElementById('subscribe');
-
-if (subscribe_button.getAttribute('onclick')) {
- subscribe_button['href'] = 'javascript:void(0)';
-}
-
-function subscribe(timeouts = 0) {
- subscribe_button = document.getElementById('subscribe');
-
- if (timeouts > 10) {
- console.log('Failed to subscribe.');
- return;
- }
-
- var url = '/subscription_ajax?action_create_subscription_to_channel=1&redirect=false' +
- '&c=<%= ucid %>&referer=<%= env.get("current_page") %>';
- var xhr = new XMLHttpRequest();
- xhr.responseType = 'json';
- xhr.timeout = 20000;
- xhr.open('POST', url, true);
- xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xhr.send('csrf_token=<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>');
-
- var fallback = subscribe_button.innerHTML;
- subscribe_button.onclick = unsubscribe;
- subscribe_button.innerHTML = '<b><%= translate(locale, "Unsubscribe").gsub("'", "\\'") %> | <%= sub_count_text %></b>';
-
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status != 200) {
- subscribe_button.onclick = subscribe;
- subscribe_button.innerHTML = fallback;
- }
- }
- }
-
- xhr.ontimeout = function() {
- console.log('Subscribing timed out.');
- subscribe(timeouts + 1);
- };
-}
-
-function unsubscribe(timeouts = 0) {
- subscribe_button = document.getElementById('subscribe');
-
- if (timeouts > 10) {
- console.log('Failed to subscribe');
- return;
- }
-
- var url = '/subscription_ajax?action_remove_subscriptions=1&redirect=false' +
- '&c=<%= ucid %>&referer=<%= env.get("current_page") %>';
- var xhr = new XMLHttpRequest();
- xhr.responseType = 'json';
- xhr.timeout = 20000;
- xhr.open('POST', url, true);
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- xhr.send('csrf_token=<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>');
-
- var fallback = subscribe_button.innerHTML;
- subscribe_button.onclick = subscribe;
- subscribe_button.innerHTML = '<b><%= translate(locale, "Subscribe").gsub("'", "\\'") %> | <%= sub_count_text %></b>';
-
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status != 200) {
- subscribe_button.onclick = unsubscribe;
- subscribe_button.innerHTML = fallback;
- }
- }
- }
-
- xhr.ontimeout = function() {
- console.log('Unsubscribing timed out.');
- unsubscribe(timeouts + 1);
- };
-}
diff --git a/src/invidious/views/playlists.ecr b/src/invidious/views/playlists.ecr
index 88d51268..fd7bf4d8 100644
--- a/src/invidious/views/playlists.ecr
+++ b/src/invidious/views/playlists.ecr
@@ -72,8 +72,3 @@
<% end %>
</div>
</div>
-
-<script>
-<% sub_count_text = number_to_short_text(sub_count) %>
-<%= rendered "components/subscribe_widget_script" %>
-</script>
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr
index 1f21f281..be594556 100644
--- a/src/invidious/views/watch.ecr
+++ b/src/invidious/views/watch.ecr
@@ -276,11 +276,6 @@ function number_with_separator(val) {
return val;
}
-<% ucid = video.ucid %>
-<% author = video.author %>
-<% sub_count_text = video.sub_count_text %>
-<%= rendered "components/subscribe_widget_script" %>
-
<% if plid %>
function get_playlist(plid, timeouts = 0) {
playlist = document.getElementById('playlist');