@ -95,6 +95,16 @@ fn load_stored_plans() -> Vec<String> {
Storage ::enumerate_plans ( )
}
#[ tauri::command ]
fn load_previous ( name : String , state : tauri ::State < Mutex < Storage > > ) -> Option < Plan > {
if let Ok ( mut storage ) = state . lock ( ) {
let plan = Storage ::load_by_name ( name ) ;
log ::info ! ( "got plan: {plan:?}" ) ;
return plan ;
}
None
}
#[ tauri::command ]
fn base_plan ( ) -> Plan {
const BASE_PLAN_STRING : & str = include_str! ( "../../data/base_plan.json" ) ;
@ -150,7 +160,8 @@ fn main() {
load_plan ,
load_stored_plans ,
save_plan ,
base_plan
base_plan ,
load_previous
] )
. system_tray ( system_tray )
. on_system_tray_event ( | app , event | match event {
@ -180,20 +191,19 @@ fn main() {
}
fn listen_for_zone_changes ( poe_client_log_path : Option < PathBuf > , window : Window ) {
std ::thread ::spawn ( move | | {
// need _watcher
if let Some ( ( enter_area_receiver , _watcher ) ) = receiver_from_path ( & poe_client_log_path ) {
let world_areas : WorldAreasMap = load_world_areas ( ) ;
for area in blocking_area_filtered_rx ( & enter_area_receiver ) {
if let Some ( area ) = filter_func ( area ) {
if let Some ( entered ) = world_areas . get ( & area ) {
window . emit_to ( "Overlay" , "entered" , & entered . named_id ) . ok ( ) ;
}
std ::thread ::spawn ( move | | {
// need _watcher
if let Some ( ( enter_area_receiver , _watcher ) ) = receiver_from_path ( & poe_client_log_path ) {
let world_areas : WorldAreasMap = load_world_areas ( ) ;
for area in blocking_area_filtered_rx ( & enter_area_receiver ) {
if let Some ( area ) = filter_func ( area ) {
if let Some ( entered ) = world_areas . get ( & area ) {
window . emit_to ( "Overlay" , "entered" , & entered . named_id ) . ok ( ) ;
}
}
}
} ) ;
}
} ) ;
}
fn receiver_from_path ( path : & Option < PathBuf > ) -> Option < ( Receiver < String > , PollWatcher ) > {