Parsing sui events using complex filters

This is a question from ChzChz in the Suinami Riders group (Telegram)

hi. I would like to know about complex filters.
I am trying setup parsing sui’s events using complex filters. Did you test something like this:

let contract = config.sui_contract.address.as_str();
info!("Setup SuiEventFilter for contract with id: {contract}");
let lemon_filter = vec![
    SuiEventFilter::Package(ObjectID::from_hex_literal(contract)?),
    SuiEventFilter::Module("lemon".to_string()),
    SuiEventFilter::MoveEventType(format!("{contract}::lemon::LemonCreated")),
];
let item_filter = vec![
    SuiEventFilter::Package(ObjectID::from_hex_literal(contract)?),
    SuiEventFilter::Module("item".to_string()),
    SuiEventFilter::MoveEventType(format!("{contract}::item::ItemCreated")),
];
let mut lemon_events = sui
    .event_api()
    .subscribe_event(SuiEventFilter::Or(
        Box::new(SuiEventFilter::All(lemon_filter)),
        Box::new(SuiEventFilter::All(item_filter)),
    ))
    .await
    .context("Failed to subscribe to events")?;

because I can’t get events for this filter. maybe I do something wrong.

13 Likes

nice your work and best