The Space screen is rendered outside the bottom tab bar. While you are inside a space, the tab bar is hidden.
Header
The header contains:- Back arrow (yellow, top-left) — tap to leave the space and return to the tab navigator
- Space7 wordmark (
space+7in contrasting colours) — left-aligned next to the back arrow - Sort menu (ellipsis icon, top-right) — tap to change the message sort order
Space details
Below the header, the screen shows the space title, description, and creator avatar and username before the message list begins.Message list
Messages are displayed in aScrollView with pull-to-refresh support. Each message card shows:
- Sender username (
@handle) - Timestamp — localised to the device’s locale, right-aligned
- Text content — if present
- Media — image, video, or audio attachment (see below)
- Appreciation button — thumbs-up with a count
- Delete button — visible only on your own messages
Sorting messages
Tap the ellipsis icon in the header to open the sort modal. Two options are available:| Option | Behaviour |
|---|---|
| Recent | Newest messages first (default) |
| Top | Most appreciated messages first |
Sending a message
Attach media (optional)
Tap the Media button to the left of the text input to open the attachment picker. Choose Image, Video, or Audio.A preview of the selected file appears above the compose bar. Tap Remove in the preview to deselect it before sending.
Media attachments
Image
Displayed inline at 180 px height. Tap the image to toggle between collapsed (180 px, cover crop) and expanded (320 px, contain) views.
Video
Rendered with native playback controls at 220 px height. Videos start paused.
Audio
Shows a Play/Pause button, a
MM:SS / MM:SS progress display, and a progress bar. Tap Play to start, tap Pause to stop. Playback restarts from the beginning if the file has ended.Appreciating a message
Tap the 👍 button on any message to toggle your appreciation. The count updates immediately in your local state and the change is broadcast to all participants via Socket.IO so everyone sees the updated count in real time.Deleting your own message
Tap Delete
The red Delete button appears only on messages you sent. Tap it to open a confirmation modal.
Real-time updates via Socket.IO
When you enter a space, the client:- Connects to the Socket.IO server
- Joins the space room (
joinSpace) - Subscribes to two events:
onReceiveMessage— prepends new messages to the top of the listonMessageAppreciated— updates the appreciation count on the relevant message
Back navigation
Tap the back arrow in the header or press the Android hardware back button to leave the space. This setstopicId to null in TopicContext, which unmounts the Space screen and restores the bottom tab navigator.