mirror of
https://github.com/iv-org/invidious.git
synced 2025-12-24 22:58:30 -06:00
feat: Add preferences cookie URL to import and export preferences
This commit is contained in:
parent
35d1d499bc
commit
19600fb67f
@ -555,6 +555,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,
|
||||||
@ -605,6 +609,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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -671,6 +679,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,
|
||||||
@ -736,6 +748,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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -887,3 +903,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
|
||||||
|
}
|
||||||
@ -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: ",
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user