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 @@
-<% if user %> - <% if subscriptions.includes? ucid %> -

- "> - <%= 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" %>
@@ -94,43 +72,6 @@
diff --git a/src/invidious/views/components/subscribe_widget.ecr b/src/invidious/views/components/subscribe_widget.ecr new file mode 100644 index 00000000..4f36368f --- /dev/null +++ b/src/invidious/views/components/subscribe_widget.ecr @@ -0,0 +1,24 @@ +<% if user %> + <% if subscriptions.includes? ucid %> +

+ "> + <%= 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 @@

<%= video.author %>

- <% if user %> - <% if subscriptions.includes? video.ucid %> -

- "> - <%= 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) {