yazi-actor 26.1.22

Yazi actor model
Documentation
use anyhow::Result;
use yazi_macro::{render, succ};
use yazi_parser::mgr::UpdatePeekedOpt;
use yazi_shared::data::Data;

use crate::Actor;

pub struct UpdatePeeked;

impl Actor for UpdatePeeked {
	type Options = UpdatePeekedOpt;

	const NAME: &str = "update_peeked";

	fn act(cx: &mut crate::Ctx, opt: Self::Options) -> Result<Data> {
		let Some(hovered) = cx.hovered().map(|h| &h.url) else {
			succ!(cx.tab_mut().preview.reset());
		};

		if opt.lock.url == *hovered {
			cx.tab_mut().preview.lock = Some(opt.lock);
			render!();
		}

		succ!();
	}
}