feat(import-progress): track and expose Immich import progress
This change introduces a cross-language import progress API for Immich imports and exposes a new query command to report live progress. A new ImportProgress model captures active state, totals, and bytes downloaded, allowing consuming code to display import status to users. - Adds ImportProgress data type and progress tracking during import - Exposes get_immich_import_progress command in Android and Rust - Updates permissions and schemas to include allow-get-immich-import-progress
This commit is contained in:
@@ -111,3 +111,8 @@ pub(crate) async fn import_immich_assets<R: Runtime>(
|
||||
) -> Result<WallpaperState> {
|
||||
app.wallpaper().import_immich_assets(ImmichImportRequest { ids })
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn get_immich_import_progress<R: Runtime>(app: AppHandle<R>) -> Result<ImmichImportProgress> {
|
||||
app.wallpaper().get_immich_import_progress()
|
||||
}
|
||||
|
||||
@@ -143,4 +143,7 @@ impl<R: Runtime> Wallpaper<R> {
|
||||
pub fn import_immich_assets(&self, _payload: ImmichImportRequest) -> crate::Result<WallpaperState> {
|
||||
Ok(Self::demo())
|
||||
}
|
||||
pub fn get_immich_import_progress(&self) -> crate::Result<ImmichImportProgress> {
|
||||
Ok(ImmichImportProgress::default())
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -51,7 +51,8 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
||||
commands::disconnect_immich,
|
||||
commands::get_immich_albums,
|
||||
commands::get_immich_assets,
|
||||
commands::import_immich_assets
|
||||
commands::import_immich_assets,
|
||||
commands::get_immich_import_progress
|
||||
])
|
||||
.setup(|app, api| {
|
||||
#[cfg(mobile)]
|
||||
|
||||
@@ -88,4 +88,7 @@ impl<R: Runtime> Wallpaper<R> {
|
||||
pub fn import_immich_assets(&self, payload: ImmichImportRequest) -> crate::Result<WallpaperState> {
|
||||
self.0.run_mobile_plugin("importImmichAssets", payload).map_err(Into::into)
|
||||
}
|
||||
pub fn get_immich_import_progress(&self) -> crate::Result<ImmichImportProgress> {
|
||||
self.0.run_mobile_plugin("getImmichImportProgress", ()).map_err(Into::into)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,3 +139,13 @@ pub struct ImmichAssetsPage {
|
||||
pub struct ImmichImportRequest {
|
||||
pub ids: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ImmichImportProgress {
|
||||
pub active: bool,
|
||||
pub completed: usize,
|
||||
pub total: usize,
|
||||
pub bytes_downloaded: u64,
|
||||
pub bytes_total: u64,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user