Skip to content

Feature: Add chat video attachment upload and sending #26

@mjkatgithub

Description

@mjkatgithub

Goal

Upload and send videos in chat conversations, so users can share short clips
as message attachments.

Scope

  • Add video file selection in the message input (file picker / drag & drop).
  • Validate supported MIME types (e.g. video/mp4, video/webm).
  • Validate maximum file size before upload (show clear error if exceeded).
  • Upload selected video via existing media upload flow/backend endpoint.
  • Send uploaded video as a chat message with media metadata.
  • Render video messages in timeline with playable preview (controls enabled).
  • Show upload/sending states (loading, success, error) in the UI.
  • Ensure video messages are handled in message list ordering/reload.
  • Add/extend tests for upload, send, and render behavior.

Branch

feature/video-messages

Acceptance Criteria

  • User can select a supported video file from message input.
  • Unsupported file types are rejected with a user-friendly error.
  • Files above max size are rejected with a user-friendly error.
  • Valid video uploads successfully and can be sent as a message.
  • Sent video message appears in timeline with working playback controls.
  • Upload/send loading and error states are visible and understandable.
  • Existing text/image message behavior remains unchanged.

Test Checklist

Unit

  • Validate file type and size rules for video selection.
  • Verify message payload creation for video media messages.
  • Verify UI state transitions for upload/sending/error.

Integration

  • Upload service integration returns media URL/metadata for videos.
  • Chat flow sends video message and timeline receives/renders it.
  • Error responses from upload/send are mapped to proper UI feedback.

E2E

  • User uploads and sends a valid video in a room.
  • Receiver sees the video message and can play it.
  • Oversized/invalid video is blocked with clear feedback.

Notes

  • Reuse existing image/media upload architecture where possible.
  • Out of scope for this issue: video transcoding/compression pipeline changes.
  • Confirm product limits (max size, allowed formats) before implementation.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions