hi
#[tauri::command]
pub fn start<'a>(number_of_try: i32, effects: Vec<Effect>, state: State<'a, Mutex<OcrState>>) -> Result<(), String> {
let mut global_item = GLOBAL_ITEM.lock().map_err(|_| "Failed to lock GLOBAL_ITEM in start_fm")?;
for effect in &effects {
if let Some(global_effect) = global_item.effects.iter_mut().find(|e| e.index_on_item == effect.index_on_item) {
global_effect.desired_value = effect.desired_value;
}
}
for _ in 0..number_of_try {
if let Some(action) = global_item.next_best_action() {
update_effect_value(&state, &mut global_item);
}
}
Ok(())
}
fn update_effect_value<'a>(state: &State<'a, Mutex<OcrState>>, global_item: &mut Item) -> Result<(), String> {
let global_handle = GLOBAL_APP_HANDLE.lock().map_err(|_| "Failed to lock GLOBAL_APP_HANDLE")?;
if let Some(app_handle) = &*global_handle {
println!("Emitting update-item event...");
app_handle.emit_all("update-item", Payload { message: serialized_effects })
.map_err(|_| "Failed to emit update-item event")?;
}
Ok(())
}
async function startSerialEventListener() {
console.log("Starting serial event listener...");
await listen<Payload>('update-item', (event) => {
try {
const parsedMessage = JSON.parse(event.payload.message) as ItemEffect[];
console.log("Event payload:", parsedMessage);
setInit(parsedMessage);
} catch (error) {
console.error("Failed to parse event payload:", error);
}
});
}
useEffect(() => {
startSerialEventListener();
}, []);
i got a problem it work but it send all the emit at once at the end of the for loop, so this is not dynamic and i can't see the progress in live