Fix review findings on bulk delete, share editing, selection
ci / docker (push) Successful in 9s

- expiry editor commits on blur/Enter with explicit clear button — no more
  per-keystroke PATCHes transiently expiring live links
- shift-range walks the filtered view, anchors reset on clear, updaters
  kept pure (StrictMode-safe)
- bulk delete surfaces errors, 404s on zero deletions, and shares one
  delete+cleanup path with single and album delete (s3::photo_prefix is
  the only prefix source)
- expiry end-of-day convention extracted; share rows update from the
  PATCH response instead of reloading the list
- Gallery container always renders, restoring the simple observer effect
This commit is contained in:
2026-07-17 16:42:28 +02:00
parent 5cb00f3ef0
commit 037b68fc9d
10 changed files with 172 additions and 93 deletions
+5 -1
View File
@@ -193,7 +193,11 @@ export default function SharePage() {
photos={visible}
onOpen={lightbox.openAt}
selected={view.allow_download ? selected : undefined}
onToggleSelect={view.allow_download ? toggle : undefined}
// Shift-ranges must walk the filtered view, not the full album
// otherwise hidden photos get swept into the selection.
onToggleSelect={
view.allow_download ? (id, shift) => toggle(id, shift, visible) : undefined
}
overlay={(p) =>
p.my_verdict || p.my_rating || p.my_tags.length > 0 ? (
<div className="g-overlay">