diff --git a/locales/en-US.json b/locales/en-US.json index 3f42a5090..fa28e7f8b 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -122,6 +122,8 @@ "Redirect homepage to feed: ": "Redirect homepage to feed: ", "preferences_max_results_label": "Number of videos shown in feed: ", "preferences_sort_label": "Sort videos by: ", + "preferences_default_playlist": "Default playlist: ", + "preferences_default_playlist_none": "No default playlist set", "published": "published", "published - reverse": "published - reverse", "alphabetically": "alphabetically", diff --git a/locales/es.json b/locales/es.json index 46217943b..686e13f93 100644 --- a/locales/es.json +++ b/locales/es.json @@ -78,6 +78,8 @@ "Redirect homepage to feed: ": "Redirigir la página de inicio a la fuente: ", "preferences_max_results_label": "Número de videos mostrados en la fuente: ", "preferences_sort_label": "Ordenar los videos por: ", + "preferences_default_playlist": "Lista de reproducción por defecto: ", + "preferences_default_playlist_none": "Ninguna lista de reproducción por defecto establecida", "published": "fecha de publicación", "published - reverse": "fecha de publicación: orden inverso", "alphabetically": "alfabéticamente", diff --git a/src/invidious/config.cr b/src/invidious/config.cr index e47e405ce..36f09d282 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -52,6 +52,8 @@ struct ConfigPreferences property vr_mode : Bool = true property show_nick : Bool = true property save_player_pos : Bool = false + @[YAML::Field(ignore: true)] + property default_playlist : String? = nil def to_tuple {% begin %} diff --git a/src/invidious/routes/preferences.cr b/src/invidious/routes/preferences.cr index 39ca77c06..9936e5230 100644 --- a/src/invidious/routes/preferences.cr +++ b/src/invidious/routes/preferences.cr @@ -144,6 +144,8 @@ module Invidious::Routes::PreferencesRoute notifications_only ||= "off" notifications_only = notifications_only == "on" + default_playlist = env.params.body["default_playlist"]?.try &.as(String) + # Convert to JSON and back again to take advantage of converters used for compatibility preferences = Preferences.from_json({ annotations: annotations, @@ -180,6 +182,7 @@ module Invidious::Routes::PreferencesRoute vr_mode: vr_mode, show_nick: show_nick, save_player_pos: save_player_pos, + default_playlist: default_playlist, }.to_json) if user = env.get? "user" diff --git a/src/invidious/user/preferences.cr b/src/invidious/user/preferences.cr index 0a8525f36..df195dd69 100644 --- a/src/invidious/user/preferences.cr +++ b/src/invidious/user/preferences.cr @@ -56,6 +56,7 @@ struct Preferences property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc property volume : Int32 = CONFIG.default_user_preferences.volume property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos + property default_playlist : String? = nil module BoolToString def self.to_json(value : String, json : JSON::Builder) diff --git a/src/invidious/views/user/preferences.ecr b/src/invidious/views/user/preferences.ecr index cf8b55936..23cb89f69 100644 --- a/src/invidious/views/user/preferences.ecr +++ b/src/invidious/views/user/preferences.ecr @@ -126,6 +126,19 @@ checked<% end %>> + <% if user = env.get?("user").try &.as(User) %> + <% playlists = Invidious::Database::Playlists.select_user_created_playlists(user.email) %> +
+ + +
+ <% end %> + <%= translate(locale, "preferences_category_visual") %>
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index 6f9ced6fc..fada6361b 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -163,7 +163,7 @@ we're going to need to do it here in order to allow for translations.