Skip to main content

tauri_plugin_fs_stream/
lib.rs

1mod cmds;
2mod config;
3mod error;
4mod state;
5
6use error::*;
7use state::*;
8
9
10/// Initializes the plugin.
11pub fn init<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R, Option<config::Config>> {
12	tauri::plugin::Builder::<R, Option<config::Config>>::new("fs-stream")
13		.setup(|app, api| {
14			use tauri::Manager as _;
15
16			let require_literal_leading_dot = api
17				.config()
18				.as_ref()
19                .and_then(|c| c.require_literal_leading_dot);
20
21			app.manage(new_plugin_config_state(require_literal_leading_dot));
22			app.manage(new_plugin_resources_state(app.app_handle().clone()));
23			Ok(())
24		})
25		.invoke_handler(tauri::generate_handler![
26			cmds::open_read_file_stream,
27			cmds::open_read_text_file_lines_stream,
28			cmds::open_write_file_stream,
29			cmds::close_all_file_streams,
30		])
31		.js_init_script(format!(
32            "window.__TAURI_FS_STREAM_PLUGIN_INTERNALS__ = {{ supportsRawIpcRequestBody: {} }};",
33            // https://github.com/tauri-apps/tauri/issues/10573
34			cfg!(not(any(target_os = "android", target_os = "linux")))
35        ))
36		.build()
37}