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:
+8
-2
@@ -2,7 +2,7 @@
|
||||
* { box-sizing: border-box; }
|
||||
body { margin: 0; min-width: 320px; min-height: 100vh; }
|
||||
button { font: inherit; }
|
||||
.app-shell { width: min(100%, 480px); min-height: 100dvh; margin: 0 auto; background: #f8faf7; position: relative; padding-bottom: 94px; box-shadow: 0 0 50px rgba(32, 50, 37, .12); overflow-anchor: none; }
|
||||
.app-shell { width: min(100%, 480px); min-height: 100dvh; margin: 0 auto; background: #f8faf7; position: relative; padding-bottom: calc(94px + env(safe-area-inset-bottom)); box-shadow: 0 0 50px rgba(32, 50, 37, .12); overflow-anchor: none; }
|
||||
header { padding: max(24px, env(safe-area-inset-top)) 24px 18px; display: flex; align-items: center; justify-content: space-between; }
|
||||
h1 { font-size: 34px; letter-spacing: -1.7px; line-height: 1.05; margin: 0 0 6px; font-weight: 800; }
|
||||
header p { margin: 0; font-size: 13px; color: #657068; font-weight: 500; }
|
||||
@@ -110,11 +110,17 @@ h2 { margin: 0; font-size: 21px; letter-spacing: -.6px; }
|
||||
.immich-placeholder { width: 100%; height: 100%; display: grid; place-items: center; color: #78907d; background: var(--sage); }
|
||||
.immich-placeholder svg { width: 28px; }
|
||||
.immich-import { position: sticky; z-index: 4; bottom: max(16px, env(safe-area-inset-bottom)); margin-bottom: 0; box-shadow: 0 10px 30px rgba(20,93,50,.3); }
|
||||
.immich-import-progress { position: sticky; z-index: 4; bottom: max(16px, env(safe-area-inset-bottom)); margin-top: 18px; padding: 13px 15px; border-radius: 17px; color: white; background: var(--green); box-shadow: 0 10px 30px rgba(20,93,50,.3); }
|
||||
.immich-import-progress > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 12px; font-weight: 750; }
|
||||
.immich-import-progress progress { width: 100%; height: 7px; margin-top: 9px; border: 0; border-radius: 99px; overflow: hidden; background: rgba(255,255,255,.28); accent-color: white; }
|
||||
.immich-import-progress progress::-webkit-progress-bar { background: rgba(255,255,255,.28); }
|
||||
.immich-import-progress progress::-webkit-progress-value { border-radius: 99px; background: white; }
|
||||
.immich-import-progress progress::-moz-progress-bar { border-radius: 99px; background: white; }
|
||||
nav { position: fixed; z-index: 10; bottom: 0; left: 50%; transform: translateX(-50%); width: min(100%, 480px); height: calc(76px + env(safe-area-inset-bottom)); padding: 8px 34px env(safe-area-inset-bottom); background: rgba(248,250,247,.96); backdrop-filter: blur(16px); border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
|
||||
nav button { border: 0; color: #657068; background: transparent; border-radius: 18px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 3px; font-size: 11px; font-weight: 650; }
|
||||
nav button.active { color: var(--green); background: var(--sage); }
|
||||
nav svg { width: 21px; }
|
||||
.snackbar { position: fixed; z-index: 20; left: 50%; transform: translateX(-50%); bottom: 92px; max-width: calc(100% - 40px); background: #26312a; color: white; border: 0; border-radius: 12px; padding: 13px 18px; font-size: 12px; box-shadow: 0 8px 26px rgba(0,0,0,.22); }
|
||||
.snackbar { position: fixed; z-index: 20; left: 50%; transform: translateX(-50%); bottom: calc(92px + env(safe-area-inset-bottom)); max-width: calc(100% - 40px); background: #26312a; color: white; border: 0; border-radius: 12px; padding: 13px 18px; font-size: 12px; box-shadow: 0 8px 26px rgba(0,0,0,.22); }
|
||||
.gallery-page { padding-bottom: max(24px, env(safe-area-inset-bottom)); }
|
||||
.selection-toolbar { min-height: 44px; margin: 0 0 11px; padding: 0 4px; display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #6c766e; font-size: 12px; }
|
||||
.selection-toolbar button { min-height: 36px; padding: 0 12px; border: 0; border-radius: 11px; color: var(--green); background: var(--sage); font-size: 12px; font-weight: 800; }
|
||||
|
||||
Reference in New Issue
Block a user