refactor: add mark_watched_after_duration configuration option to backend

This commit is contained in:
Gus Libens 2025-11-07 18:45:17 +01:00
parent 089e0f9a94
commit 9a3735f4f4
No known key found for this signature in database
GPG Key ID: 032E49D0FE9D51EA
4 changed files with 37 additions and 24 deletions

View File

@ -52,6 +52,7 @@ struct ConfigPreferences
property vr_mode : Bool = true property vr_mode : Bool = true
property show_nick : Bool = true property show_nick : Bool = true
property save_player_pos : Bool = false property save_player_pos : Bool = false
property mark_watched_after_duration : Bool = false
@[YAML::Field(ignore: true)] @[YAML::Field(ignore: true)]
property default_playlist : String? = nil property default_playlist : String? = nil

View File

@ -82,6 +82,10 @@ module Invidious::Routes::PreferencesRoute
save_player_pos ||= "off" save_player_pos ||= "off"
save_player_pos = save_player_pos == "on" save_player_pos = save_player_pos == "on"
mark_watched_after_duration = env.params.body["mark_watched_after_duration"]?.try &.as(String)
mark_watched_after_duration ||= "off"
mark_watched_after_duration = mark_watched_after_duration == "on"
show_nick = env.params.body["show_nick"]?.try &.as(String) show_nick = env.params.body["show_nick"]?.try &.as(String)
show_nick ||= "off" show_nick ||= "off"
show_nick = show_nick == "on" show_nick = show_nick == "on"
@ -182,6 +186,7 @@ module Invidious::Routes::PreferencesRoute
vr_mode: vr_mode, vr_mode: vr_mode,
show_nick: show_nick, show_nick: show_nick,
save_player_pos: save_player_pos, save_player_pos: save_player_pos,
mark_watched_after_duration: mark_watched_after_duration,
default_playlist: default_playlist, default_playlist: default_playlist,
}.to_json) }.to_json)

View File

@ -56,6 +56,7 @@ struct Preferences
property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc
property volume : Int32 = CONFIG.default_user_preferences.volume property volume : Int32 = CONFIG.default_user_preferences.volume
property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos
property mark_watched_after_duration : Bool = CONFIG.default_user_preferences.mark_watched_after_duration
property default_playlist : String? = nil property default_playlist : String? = nil
module BoolToString module BoolToString

View File

@ -25,6 +25,7 @@ struct VideoPreferences
property volume : Int32 property volume : Int32
property vr_mode : Bool property vr_mode : Bool
property save_player_pos : Bool property save_player_pos : Bool
property mark_watched_after_duration : Bool
end end
def process_video_params(query, preferences) def process_video_params(query, preferences)
@ -48,6 +49,7 @@ def process_video_params(query, preferences)
volume = query["volume"]?.try &.to_i? volume = query["volume"]?.try &.to_i?
vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe } vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe }
save_player_pos = query["save_player_pos"]?.try { |q| (q == "true" || q == "1").to_unsafe } save_player_pos = query["save_player_pos"]?.try { |q| (q == "true" || q == "1").to_unsafe }
mark_watched_after_duration = query["mark_watched_after_duration"]?.try { |q| (q == "true" || q == "1").to_unsafe }
if preferences if preferences
# region ||= preferences.region # region ||= preferences.region
@ -70,6 +72,7 @@ def process_video_params(query, preferences)
volume ||= preferences.volume volume ||= preferences.volume
vr_mode ||= preferences.vr_mode.to_unsafe vr_mode ||= preferences.vr_mode.to_unsafe
save_player_pos ||= preferences.save_player_pos.to_unsafe save_player_pos ||= preferences.save_player_pos.to_unsafe
mark_watched_after_duration ||= preferences.mark_watched_after_duration.to_unsafe
end end
annotations ||= CONFIG.default_user_preferences.annotations.to_unsafe annotations ||= CONFIG.default_user_preferences.annotations.to_unsafe
@ -91,6 +94,7 @@ def process_video_params(query, preferences)
volume ||= CONFIG.default_user_preferences.volume volume ||= CONFIG.default_user_preferences.volume
vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe
save_player_pos ||= CONFIG.default_user_preferences.save_player_pos.to_unsafe save_player_pos ||= CONFIG.default_user_preferences.save_player_pos.to_unsafe
mark_watched_after_duration ||= CONFIG.default_user_preferences.mark_watched_after_duration.to_unsafe
annotations = annotations == 1 annotations = annotations == 1
preload = preload == 1 preload = preload == 1
@ -104,6 +108,7 @@ def process_video_params(query, preferences)
extend_desc = extend_desc == 1 extend_desc = extend_desc == 1
vr_mode = vr_mode == 1 vr_mode = vr_mode == 1
save_player_pos = save_player_pos == 1 save_player_pos = save_player_pos == 1
mark_watched_after_duration = mark_watched_after_duration == 1
if CONFIG.disabled?("dash") && quality == "dash" if CONFIG.disabled?("dash") && quality == "dash"
quality = "high" quality = "high"
@ -156,6 +161,7 @@ def process_video_params(query, preferences)
volume: volume, volume: volume,
vr_mode: vr_mode, vr_mode: vr_mode,
save_player_pos: save_player_pos, save_player_pos: save_player_pos,
mark_watched_after_duration: mark_watched_after_duration,
}) })
return params return params