resolve.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use super::{init, server};
  2. use crate::{core::ProfilesConfig, states};
  3. use tauri::{App, AppHandle, Manager};
  4. /// handle something when start app
  5. pub fn resolve_setup(app: &App) {
  6. // setup a simple http server for singleton
  7. server::embed_server(&app.handle());
  8. // init app config
  9. init::init_app(app.package_info());
  10. // init states
  11. let clash_state = app.state::<states::ClashState>();
  12. let verge_state = app.state::<states::VergeState>();
  13. let profiles_state = app.state::<states::ProfilesState>();
  14. let mut clash = clash_state.0.lock().unwrap();
  15. let mut verge = verge_state.0.lock().unwrap();
  16. let mut profiles = profiles_state.0.lock().unwrap();
  17. if let Err(err) = clash.run_sidecar() {
  18. log::error!("{}", err);
  19. }
  20. *profiles = ProfilesConfig::read_file();
  21. if let Err(err) = profiles.activate(clash.info.clone()) {
  22. log::error!("{}", err);
  23. }
  24. verge.init_sysproxy(clash.info.port.clone());
  25. }
  26. /// reset system proxy
  27. pub fn resolve_reset(app_handle: &AppHandle) {
  28. let verge_state = app_handle.state::<states::VergeState>();
  29. let mut verge_arc = verge_state.0.lock().unwrap();
  30. verge_arc.reset_sysproxy();
  31. }