diff --git a/src/invidious/views/channel.ecr b/src/invidious/views/channel.ecr index 38e7bc1b..53b71b6f 100644 --- a/src/invidious/views/channel.ecr +++ b/src/invidious/views/channel.ecr @@ -14,30 +14,8 @@
- "> - <%= translate(locale, "Unsubscribe") %> | <%= number_to_short_text(sub_count) %> - -
- <% else %> -- "> - <%= translate(locale, "Subscribe") %> | <%= number_to_short_text(sub_count) %> - -
- <% end %> -<% else %> -- "> - <%= translate(locale, "Login to subscribe to `x`", author) %> - -
-<% end %> +<% sub_count_text = number_to_short_text(sub_count) %> +<%= rendered "components/subscribe_widget" %>+ "> + <%= translate(locale, "Unsubscribe") %> | <%= sub_count_text %> + +
+ <% else %> ++ "> + <%= translate(locale, "Subscribe") %> | <%= sub_count_text %> + +
+ <% end %> +<% else %> ++ "> + <%= translate(locale, "Login to subscribe to `x`", author) %> + +
+<% end %> diff --git a/src/invidious/views/components/subscribe_widget_script.ecr b/src/invidious/views/components/subscribe_widget_script.ecr new file mode 100644 index 00000000..5180bbb8 --- /dev/null +++ b/src/invidious/views/components/subscribe_widget_script.ecr @@ -0,0 +1,42 @@ +subscribe_button = document.getElementById("subscribe"); +if (subscribe_button.getAttribute('onclick')) { + subscribe_button["href"] = "javascript:void(0)"; +} + +function subscribe() { + var url = "/subscription_ajax?action_create_subscription_to_channel=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>"; + 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) { + subscribe_button = document.getElementById("subscribe"); + subscribe_button.onclick = unsubscribe; + subscribe_button.innerHTML = '<%= translate(locale, "Unsubscribe") %> | <%= sub_count_text %>' + } + } + } +} + +function unsubscribe() { + var url = "/subscription_ajax?action_remove_subscriptions=1&c=<%= ucid %>&referer=<%= env.get("current_page") %>"; + 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) { + subscribe_button = document.getElementById("subscribe"); + subscribe_button.onclick = subscribe; + subscribe_button.innerHTML = '<%= translate(locale, "Subscribe") %> | <%= sub_count_text %>' + } + } + } +} diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index d5ab5411..da45011b 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -117,30 +117,10 @@- "> - <%= translate(locale, "Unsubscribe") %> | <%= video.sub_count_text %> - -
- <% else %> -- "> - <%= translate(locale, "Subscribe") %> | <%= video.sub_count_text %> - -
- <% end %> - <% else %> -- "> - <%= translate(locale, "Login to subscribe to `x`", video.author) %> - -
- <% end %> + <% ucid = video.ucid %> + <% author = video.author %> + <% sub_count_text = video.sub_count_text %> + <%= rendered "components/subscribe_widget" %><%= translate(locale, "Shared `x`", video.published.to_s("%B %-d, %Y")) %>
@@ -252,48 +232,11 @@ function number_with_separator(val) { return val; } -subscribe_button = document.getElementById("subscribe"); -if (subscribe_button.getAttribute('onclick')) { - subscribe_button["href"] = "javascript:void(0)"; -} +<% ucid = video.ucid %> +<% author = video.author %> +<% sub_count_text = video.sub_count_text %> +<%= rendered "components/subscribe_widget_script" %> -function subscribe() { - var url = "/subscription_ajax?action_create_subscription_to_channel=1&c=<%= video.ucid %>&referer=<%= env.get("current_page") %>"; - 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) { - subscribe_button = document.getElementById("subscribe"); - subscribe_button.onclick = unsubscribe; - subscribe_button.innerHTML = '<%= translate(locale, "Unsubscribe") %> | <%= video.sub_count_text %>' - } - } - } -} - -function unsubscribe() { - var url = "/subscription_ajax?action_remove_subscriptions=1&c=<%= video.ucid %>&referer=<%= env.get("current_page") %>"; - 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) { - subscribe_button = document.getElementById("subscribe"); - subscribe_button.onclick = subscribe; - subscribe_button.innerHTML = '<%= translate(locale, "Subscribe") %> | <%= video.sub_count_text %>' - } - } - } -} <% if plid %> function get_playlist(timeouts = 0) {