# Activities - Comments and Likes Activities allow users to interact with assets in shared albums through comments and likes. This creates a social layer for collaborative photo sharing. ## Activity Types ### Comment A text-based reaction attached to an album or specific asset: - **id**: Unique identifier - **assetId**: Optional - if set, comment is on specific asset; otherwise on album - **comment**: The text content - **createdAt**: Timestamp when comment was created - **user**: The user who created the comment ### Like A simple thumbs-up reaction: - **id**: Unique identifier - **assetId**: Optional - if set, like is on specific asset; otherwise on album - **createdAt**: Timestamp when like was created - **user**: The user who liked ## Activity Statistics The app can fetch activity statistics for an album: - **comments**: Number of comments on the album ## API Endpoints ### Get All Activities Fetch all activities for an album, optionally filtered to a specific asset. **Request:** ``` GET /activities?albumId={albumId}&assetId={assetId} ``` **Response:** ```json [ { "id": "activity-uuid", "albumId": "album-uuid", "assetId": "asset-uuid", "comment": "Great photo!", "type": "comment", "createdAt": "2024-01-15T10:30:00Z", "user": { "id": "user-uuid", "name": "John Doe", "email": "john@example.com" } } ] ``` ### Create Activity Add a new comment or like. **Request:** ``` POST /activities { "albumId": "album-uuid", "assetId": "asset-uuid", "type": "comment", "comment": "Great photo!" } ``` **Response:** The created activity object ### Delete Activity Remove an activity (comment or like). **Request:** ``` DELETE /activities/{id} ``` ### Get Activity Statistics Get comment count for an album. **Request:** ``` GET /activities/statistics?albumId={albumId}&assetId={assetId} ``` **Response:** ```json { "comments": 5 } ``` ## UI Components ### Activities Page The main activities page displays all activities for an album or asset. **Layout:** ``` +----------------------------------+ | [Back] Album Name | +----------------------------------+ | | | [Avatar] User • 2 hours ago | | Comment text here | | | | [Thumbs Up] User • 1 hour ago | | | | [Avatar] User • 30 min ago | | Another comment | | | | ... (scrollable list) | | | +----------------------------------+ | [Avatar] [Text Input] [Like] | +----------------------------------+ ``` **Behaviors:** - List scrolls to show all activities - New comments auto-scroll to bottom - Activities can be dismissed by swiping (if user has permission) ### Activity Tile Each activity is displayed as a tile: **Comment Tile:** - User avatar on the left - Username and relative time ("2 hours ago") in header - Comment text as subtitle - If viewing from album page: thumbnail of asset on right (tappable) **Like Tile:** - Thumbs up icon on the left (colored with primary theme color) - Username and relative time - If on specific asset: shows asset thumbnail ### Activity Text Field Input area at bottom of activities page: **Components:** - Current user's avatar on the left - Text input field in center - Like/unlike button on the right **States:** - **Enabled**: User can type comments and toggle like - **Disabled**: Shows message "Activities are disabled" (when album owner disables activities) **Like Button States:** - **Not liked**: Outline thumbs up icon - **Liked**: Filled thumbs up icon in primary color **Behaviors:** - Keyboard shows automatically when page opens - Pressing "Send" on keyboard submits comment - Tapping outside unfocuses input - Like button toggles current user's like on/off ### Dismissible Activity Activities can be swiped to delete if user has permission: - Activity author can delete their own activities - Album owner can delete any activity **Swipe Animation:** - Red background appears - Trash icon shown - Activity slides away when dismissed ## Permission Rules | Action | Who Can Perform | |--------|-----------------| | Add comment | Any album member (if activities enabled) | | Add like | Any album member (if activities enabled) | | Delete own activity | Activity author | | Delete any activity | Album owner | | Disable activities | Album owner | ## Localization Strings | Key | Usage | |-----|-------| | `say_something` | Placeholder text in comment input | | `shared_album_activities_input_disable` | Shown when activities are disabled | ## Navigation When viewing activities from album page and tapping an activity with an asset: 1. Build asset viewer route 2. Navigate to full-screen asset viewer 3. Show the specific asset the activity references --- [Previous: Partners](partners.md) | [Next: Background Services](background-services.md)