Merge 19600fb67fac127bc5c6b092eb9ff6fee0d0eed2 into dbbaf51f1f4e80c7db14e669aadac7fb87f6267d

This commit is contained in:
Fijxu 2025-12-19 23:26:13 +09:00 committed by GitHub
commit 6016bd1ddb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 48 additions and 1 deletions

View File

@ -556,6 +556,10 @@ span > select {
border: 1px solid black; border: 1px solid black;
} }
.light-theme .cookie-url-box {
border: 2px solid #444
}
@media (prefers-color-scheme: light) { @media (prefers-color-scheme: light) {
.no-theme a:hover, .no-theme a:hover,
.no-theme a:active, .no-theme a:active,
@ -606,6 +610,10 @@ span > select {
.no-theme .error-card { .no-theme .error-card {
border: 1px solid black; border: 1px solid black;
} }
.no-theme .cookie-url-box {
border: 2px solid #444
}
} }
@ -672,6 +680,10 @@ body.dark-theme {
border: 1px solid #5e5e5e; border: 1px solid #5e5e5e;
} }
.dark-theme .cookie-url-box {
border: 2px solid #ccc
}
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
.no-theme a:hover, .no-theme a:hover,
.no-theme a:active, .no-theme a:active,
@ -737,6 +749,10 @@ body.dark-theme {
.no-theme .error-card { .no-theme .error-card {
border: 1px solid #5e5e5e; border: 1px solid #5e5e5e;
} }
.no-theme .cookie-url-box {
border: 2px solid #ccc
}
} }
@ -888,3 +904,7 @@ h1, h2, h3, h4, h5, p,
padding: 20px; padding: 20px;
background: rgba(0, 0, 0, 0.12345); background: rgba(0, 0, 0, 0.12345);
} }
.cookie-url-box {
padding: 4px
}

View File

@ -149,6 +149,8 @@
"preferences_default_home_label": "Default homepage: ", "preferences_default_home_label": "Default homepage: ",
"preferences_feed_menu_label": "Feed menu: ", "preferences_feed_menu_label": "Feed menu: ",
"preferences_show_nick_label": "Show nickname on top: ", "preferences_show_nick_label": "Show nickname on top: ",
"preferences_category_cookies": "Preferences cookies",
"preferences_cookie_desccription": "With this URL you can restore your preferences on any other browser.",
"Popular enabled: ": "Popular enabled: ", "Popular enabled: ": "Popular enabled: ",
"Top enabled: ": "Top enabled: ", "Top enabled: ": "Top enabled: ",
"CAPTCHA enabled: ": "CAPTCHA enabled: ", "CAPTCHA enabled: ": "CAPTCHA enabled: ",

View File

@ -4,6 +4,21 @@ module Invidious::Routes::PreferencesRoute
def self.show(env) def self.show(env)
preferences = env.get("preferences").as(Preferences) preferences = env.get("preferences").as(Preferences)
locale = preferences.locale locale = preferences.locale
saved_preferences = env.params.query["preferences"]?
if saved_preferences
decoded_preferences = Base64.decode_string(saved_preferences)
preferences = Preferences.from_json(decoded_preferences)
if user = env.get? "user"
user = user.as(User)
user.preferences = preferences
Invidious::Database::Users.update_preferences(user)
else
env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences)
end
end
encoded_preferences = Base64.urlsafe_encode(preferences.to_json.to_s)
referer = get_referer(env) referer = get_referer(env)

View File

@ -371,6 +371,16 @@
<div class="pure-controls"> <div class="pure-controls">
<button type="submit" class="pure-button pure-button-primary"><%= translate(locale, "Save preferences") %></button> <button type="submit" class="pure-button pure-button-primary"><%= translate(locale, "Save preferences") %></button>
</div> </div>
</fieldset> </fieldset>
<legend><%= translate(locale, "preferences_category_cookies") %></legend>
<%
url = "#{HOST_URL}/preferences?preferences=#{encoded_preferences}"
%>
<p><%= translate(locale, "preferences_cookie_desccription") %></p>
<div class="cookie-url-box">
<a href="<%= url %>"><%= url %></a>
</div>
</form> </form>
</div> </div>