v0.32.0
This commit is contained in:
1 parent
d23fa5e154
commit
81ab39e70a
51 files changed
+5352
-1489
No files matched your search
@@ -30,8 +30,37 @@ fn default_admin_dashboard_widgets() -> Vec<String> {
|
||||
.map(|value| (*value).to_owned())
|
||||
.collect()
|
||||
}
|
||||
fn default_file_log_sort() -> String { "time".to_owned() }
|
||||
fn default_file_log_descending() -> bool { true }
|
||||
const STREAM_DASHBOARD_WIDGETS: &[&str] = &[
|
||||
"stream_overview",
|
||||
"stream_traffic",
|
||||
"stream_sessions",
|
||||
"stream_backend_health",
|
||||
];
|
||||
fn default_hidden_dashboard_widgets() -> Vec<String> {
|
||||
STREAM_DASHBOARD_WIDGETS
|
||||
.iter()
|
||||
.map(|id| (*id).to_owned())
|
||||
.collect()
|
||||
}
|
||||
// Old accounts stored a complete 12-card order and often an explicit empty
|
||||
// hidden list. Upgrade it in memory: append opt-in Stream cards as hidden.
|
||||
fn migrate_dashboard_widgets(prefs: &mut AdminPreferences) {
|
||||
for id in STREAM_DASHBOARD_WIDGETS {
|
||||
if !prefs.dashboard_widgets.iter().any(|item| item == id) {
|
||||
prefs.dashboard_widgets.push((*id).to_owned());
|
||||
if !prefs.dashboard_hidden_widgets.iter().any(|item| item == id) {
|
||||
prefs.dashboard_hidden_widgets.push((*id).to_owned());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn default_file_log_sort() -> String {
|
||||
"time".to_owned()
|
||||
}
|
||||
fn default_file_log_descending() -> bool {
|
||||
true
|
||||
}
|
||||
fn default_file_log_columns() -> Vec<String> {
|
||||
[
|
||||
"time",
|
||||
@@ -97,7 +126,7 @@ struct AdminPreferences {
|
||||
dashboard_density: String,
|
||||
#[serde(default = "default_admin_dashboard_widgets")]
|
||||
dashboard_widgets: Vec<String>,
|
||||
#[serde(default)]
|
||||
#[serde(default = "default_hidden_dashboard_widgets")]
|
||||
dashboard_hidden_widgets: Vec<String>,
|
||||
#[serde(default = "default_file_log_columns")]
|
||||
file_log_columns: Vec<String>,
|
||||
@@ -150,7 +179,7 @@ impl Default for AdminPreferences {
|
||||
table_density: default_admin_table_density(),
|
||||
dashboard_density: default_admin_dashboard_density(),
|
||||
dashboard_widgets: default_admin_dashboard_widgets(),
|
||||
dashboard_hidden_widgets: Vec::new(),
|
||||
dashboard_hidden_widgets: default_hidden_dashboard_widgets(),
|
||||
file_log_columns: default_file_log_columns(),
|
||||
file_log_sort: default_file_log_sort(),
|
||||
file_log_descending: default_file_log_descending(),
|
||||
@@ -388,8 +417,16 @@ async fn preferences(
|
||||
.map_err(auth::internal)?;
|
||||
let preferences = match stored {
|
||||
Some(document) => match serde_json::from_str::<AdminPreferences>(&document) {
|
||||
Ok(preferences) if validate_admin_preferences(&preferences).is_ok() => preferences,
|
||||
Ok(_) | Err(_) => {
|
||||
Ok(mut preferences) => {
|
||||
migrate_dashboard_widgets(&mut preferences);
|
||||
if validate_admin_preferences(&preferences).is_ok() {
|
||||
preferences
|
||||
} else {
|
||||
tracing::warn!(user = %session.username, "invalid admin view preferences ignored");
|
||||
AdminPreferences::default()
|
||||
}
|
||||
}
|
||||
Err(_) => {
|
||||
tracing::warn!(user = %session.username, "invalid admin view preferences ignored");
|
||||
AdminPreferences::default()
|
||||
}
|
||||
@@ -420,4 +457,3 @@ async fn update_preferences(
|
||||
}
|
||||
Ok(Json(preferences))
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user