Skip to content

Commit 0dfb72d

Browse files
committed
is_log_level_equal function
1 parent 1519fff commit 0dfb72d

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ overtls = { version = "0.3.6" }
1515
qrcode = "0.14.1"
1616
rfd = { version = "0.15.4", default-features = false, features = ["xdg-portal", "tokio"] }
1717
rqrr = "0.10.0"
18-
run-as = { version = "1.2.1", default-features = false }
18+
run-as = { version = "1.2.2", default-features = false }
1919
screenshot = { version = "0.0.7", git = "https://github.com/ssrlive/screenshot-rs.git", rev = "36f877f" }
2020
serde = { version = "1.0.219", features = ["derive"] }
2121
serde_json = "1.0.143"

src/main.rs

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,12 @@ async fn main() -> Result<(), BoxError> {
645645
// Deal with settings dialog results
646646
while let Ok(new_settings) = settings_rx.try_recv() {
647647
let tun2proxy_enable = new_settings.tun2proxy_enable.unwrap_or_default();
648+
let equal_log_level = state
649+
.borrow()
650+
.system_settings
651+
.as_ref()
652+
.map(|s| s.is_log_level_equal(&new_settings))
653+
.unwrap_or(false);
648654
state.borrow_mut().system_settings = Some(new_settings);
649655
if tun2proxy_enable && !run_as::is_elevated() {
650656
if let Ok(status) = core::restart_as_admin() {
@@ -657,8 +663,18 @@ async fn main() -> Result<(), BoxError> {
657663
.set_level(rfd::MessageLevel::Error)
658664
.show();
659665
}
666+
} else if !equal_log_level {
667+
rfd::MessageDialog::new()
668+
.set_title("Restart Required")
669+
.set_description("Log level changes will take effect after restart.")
670+
.set_level(rfd::MessageLevel::Info)
671+
.show();
672+
save_final_app_state(&state, &remote_nodes, &win, &current_node_index)?;
673+
if let Err(e) = run_as::restart_self(None, false) {
674+
log::error!("Failed to restart self: {e}");
675+
}
676+
::fltk::app::quit();
660677
}
661-
log::info!("Settings updated. Log filter changes will take effect after restart.");
662678
}
663679

664680
// Handle results from node details dialogs
@@ -725,11 +741,21 @@ async fn main() -> Result<(), BoxError> {
725741
}
726742
}
727743

728-
state.borrow_mut().remote_nodes = remote_nodes.borrow().clone();
729-
state.borrow_mut().window.refresh_window(&win);
730-
state.borrow_mut().current_node_index = *current_node_index.borrow();
744+
fn save_final_app_state(
745+
state: &Rc<RefCell<states_manager::AppState>>,
746+
remote_nodes: &Rc<RefCell<Vec<OverTlsNode>>>,
747+
win: &Window,
748+
current_node_index: &Rc<RefCell<Option<usize>>>,
749+
) -> std::io::Result<()> {
750+
state.borrow_mut().remote_nodes = remote_nodes.borrow().clone();
751+
state.borrow_mut().window.refresh_window(win);
752+
state.borrow_mut().current_node_index = *current_node_index.borrow();
753+
754+
states_manager::save_app_state(&state.borrow())?;
755+
Ok(())
756+
}
731757

732-
states_manager::save_app_state(&state.borrow())?;
758+
save_final_app_state(&state, &remote_nodes, &win, &current_node_index)?;
733759

734760
if let Err(e) = stop_running_node(&running_token, &running_handle) {
735761
log::debug!("Failed to stop running node: {e}");

src/states_manager.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ impl Default for SystemSettings {
9696
pub struct AppState {
9797
pub window: WindowState,
9898

99-
#[serde(skip_serializing_if = "Option::is_none", default)]
100-
pub working_node: Option<OverTlsNode>,
101-
10299
#[serde(skip_serializing_if = "Option::is_none", default)]
103100
pub current_node_index: Option<usize>,
104101

@@ -215,4 +212,14 @@ impl SystemSettings {
215212
default_level,
216213
}
217214
}
215+
216+
pub fn is_log_level_equal(&self, other: &SystemSettings) -> bool {
217+
self.rustls_log_level == other.rustls_log_level
218+
&& self.tokio_tungstenite_log_level == other.tokio_tungstenite_log_level
219+
&& self.tungstenite_log_level == other.tungstenite_log_level
220+
&& self.ipstack_log_level == other.ipstack_log_level
221+
&& self.overtls_log_level == other.overtls_log_level
222+
&& self.tun2proxy_log_level == other.tun2proxy_log_level
223+
&& self.log_level == other.log_level
224+
}
218225
}

0 commit comments

Comments
 (0)