From b97daadc3e4b9bfccfcfc634b531d53f163eb107 Mon Sep 17 00:00:00 2001 From: "MEGASOL\\simon.adams" Date: Tue, 16 Sep 2025 10:42:54 +0200 Subject: [PATCH] --no folder-- added --- app/app.py | 21 ++++++++++++--------- frontend/menu.html | 11 ++++++----- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/app.py b/app/app.py index 62789ff..0fa6a89 100644 --- a/app/app.py +++ b/app/app.py @@ -579,9 +579,11 @@ async def api_upload( if asset_id: added = False if invite_token: - added = add_asset_to_album(asset_id, request=request, album_id_override=target_album_id, album_name_override=target_album_name) - if added: - status += f" (added to album '{target_album_name or target_album_id}')" + # Only add if invite specified an album; do not fallback to env default + if target_album_id or target_album_name: + added = add_asset_to_album(asset_id, request=request, album_id_override=target_album_id, album_name_override=target_album_name) + if added: + status += f" (added to album '{target_album_name or target_album_id}')" elif SETTINGS.album_name: if add_asset_to_album(asset_id, request=request): status += f" (added to album '{SETTINGS.album_name}')" @@ -893,9 +895,11 @@ async def api_upload_chunk_complete(request: Request) -> JSONResponse: if asset_id: added = False if invite_token: - added = add_asset_to_album(asset_id, request=request, album_id_override=target_album_id, album_name_override=target_album_name) - if added: - status += f" (added to album '{target_album_name or target_album_id}')" + # Only add if invite specified an album; do not fallback to env default + if target_album_id or target_album_name: + added = add_asset_to_album(asset_id, request=request, album_id_override=target_album_id, album_name_override=target_album_name) + if added: + status += f" (added to album '{target_album_name or target_album_id}')" elif SETTINGS.album_name: if add_asset_to_album(asset_id, request=request): status += f" (added to album '{SETTINGS.album_name}')" @@ -1084,9 +1088,8 @@ async def api_invites_create(request: Request) -> JSONResponse: max_uses = int(max_uses) except Exception: max_uses = 1 - if not album_id and not album_name and not SETTINGS.album_name: - return JSONResponse({"error": "missing_album"}, status_code=400) - if not album_name and SETTINGS.album_name: + # Allow blank album for invites (no album association) + if not album_name and SETTINGS.album_name and not album_id and album_name is not None: album_name = SETTINGS.album_name # If only album_name provided, resolve or create now to fix to an ID resolved_album_id = None diff --git a/frontend/menu.html b/frontend/menu.html index ad5b2f5..1055974 100644 --- a/frontend/menu.html +++ b/frontend/menu.html @@ -33,13 +33,13 @@
-
Target album
+
Target album (optional)
@@ -112,16 +112,17 @@ try { const r = await fetch('/api/albums'); if (r.status === 403) { - albumHint.textContent = 'Listing albums is forbidden with current credentials. Using .env IMMICH_ALBUM_NAME if set.'; + albumHint.textContent = 'Listing albums is forbidden with current credentials. You can still type a new album name or leave it blank to upload without an album. If IMMICH_ALBUM_NAME is set in .env, that will be used for non-invite uploads.'; albumInputWrap.classList.remove('hidden'); return; } const list = await r.json(); if (Array.isArray(list)){ - albumSelect.innerHTML = list.map(a => ``).join(''); + const opts = [{id:'', name:'— No album —'}].concat(list.map(a => ({id:a.id, name:(a.albumName || a.title || a.id)}))); + albumSelect.innerHTML = opts.map(a => ``).join(''); albumSelectWrap.classList.remove('hidden'); albumInputWrap.classList.remove('hidden'); - albumHint.textContent = 'Pick an existing album, or type a new name and click Create album.'; + albumHint.textContent = 'Pick an existing album, or type a new name and click Create album. Select “— No album —” or leave the field blank to skip album association.'; } } catch (e) { albumHint.textContent = 'Failed to load albums.';