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:
2026-08-21 21:34:01 +02:00
parent 8e5a53ade8
commit 789b58398a
20 changed files with 218 additions and 21 deletions
+5
View File
@@ -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()
}
+3
View File
@@ -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
View File
@@ -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)]
+3
View File
@@ -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)
}
}
+10
View File
@@ -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,
}