mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
feat(edit): thumbnail + video file upload in Edit modal (steps 2-3/3)
Brings the Edit modal to upload parity with the Upload modal: re-upload a thumbnail or video file instead of only pasting URLs. - Wire storage services (r2/s3/storageService) + pubkey/npub accessors into EditModal via ModalManager/initEditModal; EditModal constructs a shared MediaUploader. - New editModalUpload.js holds all the upload glue (file-picker wiring, progress, storage-unlock checks, field write-back) to keep EditModal under its file-size budget. EditModal calls initEditModalUpload(this, context) in one line. - edit-video-modal.html: "Replace video file…" (under the URL field) and "Replace thumbnail file…" (under the thumbnail field), each with a hidden file input + status line. - On thumbnail upload: writes the new URL into the thumbnail field. On video upload: writes url + magnet (+ ws/xs hints). All written via setFieldUnlocked, which marks the field edited so EditModal.collect actually persists it (gated behind storage being configured + unlocked). setFieldUnlocked is unit-tested (mutation-verified): without the unlock, the re-upload would silently not save. Build + full lint + unit suite green. NOTE: the upload/storage flow itself can't be unit-tested (browser + R2/S3); pending manual verification of editing a video's thumbnail/file. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
7bbf0f08b1
commit
c8a63c57c6
6 files changed
+287
No files matched your search
@@ -672,6 +672,26 @@
|
||||
Edit field
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-wrap">
|
||||
<input type="file" id="editVideoFile" accept="video/*" class="hidden" />
|
||||
<button
|
||||
type="button"
|
||||
id="editVideoFileBtn"
|
||||
class="btn-ghost focus-ring text-xs"
|
||||
>
|
||||
Replace video file…
|
||||
</button>
|
||||
<p
|
||||
id="editVideoUploadStatus"
|
||||
class="text-2xs text-muted empty:hidden"
|
||||
role="status"
|
||||
aria-live="polite"
|
||||
></p>
|
||||
</div>
|
||||
<p class="text-xs text-muted">
|
||||
Uploading a new file replaces the URL, magnet, and torrent hints.
|
||||
Requires unlocked storage.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="space-y-1">
|
||||
@@ -760,6 +780,22 @@
|
||||
Edit field
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 flex-wrap">
|
||||
<input type="file" id="editThumbnailFile" accept="image/*" class="hidden" />
|
||||
<button
|
||||
type="button"
|
||||
id="editThumbnailFileBtn"
|
||||
class="btn-ghost focus-ring text-xs"
|
||||
>
|
||||
Replace thumbnail file…
|
||||
</button>
|
||||
<p
|
||||
id="editThumbnailUploadStatus"
|
||||
class="text-2xs text-muted empty:hidden"
|
||||
role="status"
|
||||
aria-live="polite"
|
||||
></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="space-y-1">
|
||||
|
||||
Reference in new issue
Block a user