mod attachments;
mod local_load;
mod metadata;
mod planes;
mod remote_load;
mod shared;
#[cfg(test)]
mod tests;
pub use attachments::{export_diagram_file, export_diagram_file_via_source};
pub use metadata::setup_save_metadata_callback;
pub use planes::reconstruct_planes;
pub use shared::{clear_current_detail_display, setup_filtered_row_count_callback};
use crate::{
MainWindow,
bridge::{library::source::LibrarySource, render_thread::RenderContext},
gui::solid_preview::preview_state::SolidPreviewState,
};
use indicatrix_vault::db::sqlite::Database;
use std::sync::{Arc, Mutex};
pub fn load_diagram_detail_via_source(
ui: &MainWindow,
db_mutex: &Arc<Mutex<Database>>,
source: &Arc<Mutex<LibrarySource>>,
render_ctx: &Arc<Mutex<RenderContext>>,
entry_id: i64,
preview_state: &Arc<SolidPreviewState>,
) {
let current = source
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner)
.clone();
match current {
LibrarySource::Local => local_load::load_diagram_detail(ui, db_mutex, render_ctx, entry_id),
LibrarySource::Remote(worker) => {
let seq = crate::gui::library::search::bump_search_seq();
remote_load::load_diagram_detail_remote(
ui,
worker,
render_ctx,
entry_id,
preview_state,
Arc::clone(source),
seq,
);
}
}
}