mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 16:02:26 +00:00
Deleting a video removes the Nostr note(s) but cleanup of the underlying R2/S3 object was silently skipped when storage was locked — leaving the file publicly downloadable with no indication to the user. Now the delete flow surfaces a clear heads-up when that happens, telling the user to unlock storage and delete again (or remove the object from their bucket manually). To make the signal accurate, deleteVideoStorage now resolves the affected object keys BEFORE the credentials check (publicBaseUrl is available even while locked). So "storage-locked" is reported only when there are genuinely hosted objects to remove; an external-URL video (nothing on the user's bucket) returns "no-matching-objects" and never triggers a false warning. Tests (deleteVideoStorage via injected credentials/deleteObject): locked + hosted object -> storage-locked; locked + external URL -> no-matching-objects (no false alarm); unlocked -> actually deletes the object. Mutation-verified — restoring the old credentials-first ordering misreports the external-URL case. Build + full lint green. Co-Authored-By: Claude Opus 4.8 <[email protected]>