Browse Source

doc: refine the emoji plan

master
Trent Larson 1 week ago
parent
commit
1d75ab34ef
  1. 44
      progress/TASK-emojis.md

44
progress/TASK-emojis.md

@ -8,9 +8,9 @@ Allow people to attach an emoji onto a record. The main entity to which emojis w
### 1. Data Structure Design ### 1. Data Structure Design
**Emoji Claim Structure:** **Emoji Claim Structure:**
- [ ] **Type**: `"Comment"` - [ ] **Type**: `"Comment"`
- [ ] **Text**: Contains emoji(s) and only emojis - e.g., `"👍"`, `"❤️🎉"`, or `"🚀"` - [ ] **Text**: Contains one emoji - e.g., `"👍"`, `"❤️"`, or `"🚀"`
- [ ] **ParentItem**: Object with `identifier` field containing the handleId of the target action (e.g., GiveAction) - [ ] **ParentItem**: Object with `identifier` field containing the handleId of the target action (e.g., GiveAction)
- [ ] **Context**: Follow existing claim pattern with `"@context": "https://schema.org"` (optional?) - [ ] **Context**: Follow existing claim pattern with `"@context": "https://schema.org"` (optional)
- [x] The issuer is the "agent" attaching the emojis. - [x] The issuer is the "agent" attaching the emojis.
### 2. Database Schema Design ### 2. Database Schema Design
@ -26,7 +26,8 @@ Allow people to attach an emoji onto a record. The main entity to which emojis w
- [ ] Validate Comment claim structure - [ ] Validate Comment claim structure
- [ ] Store in `comment_claim` table - [ ] Store in `comment_claim` table
- [ ] Return standard claim response with `claimId` and `handleId` - [ ] Return standard claim response with `claimId` and `handleId`
- [ ] Add to emjoi count of the parent if `give_claim`, `offer_claim`, or `plan_claim` - [ ] Add to emoji count of the parent if `give_claim`, `offer_claim`, or `plan_claim`
- [ ] Allow for a removal of a previous emoji: if they sent it before, it gets erased (like in Slack)
**Retrieval Endpoints:** **Retrieval Endpoints:**
- [ ] `GET /api/v2/report/comments?parentItemId=<handleId>` - Get all emojis for an item - [ ] `GET /api/v2/report/comments?parentItemId=<handleId>` - Get all emojis for an item
@ -51,44 +52,31 @@ export interface CommentClaim extends ClaimObject {
### 6. Authentication & Authorization ### 6. Authentication & Authorization
- [ ] Emojis require valid JWT authentication (like other claims) - [ ] Emojis require valid JWT authentication (like other claims)
- [ ] Any authenticated user can add emojis to any public GiveAction - [ ] Any authenticated user can add emojis to any public GiveAction
- [ ] Users can only retrieve emojis they have permission to see (follow existing visibility rules) - [ ] Users can retrieve all emojis
- [ ] Consider rate limiting for emoji submissions
### 7. Performance Considerations
### 7. Validation Rules
**Content Validation:**
- [ ] Text length limit (e.g., 280 characters like Twitter)
- [ ] Unicode emoji validation (optional - could allow any text)
- [ ] Prevent empty or whitespace-only submissions
- [ ] Sanitize text input for security
**Business Rules:**
- [ ] One emoji submission per user per item (or allow multiple?)
- [ ] Prevent self-emoji on own GiveActions (optional business rule)
- [ ] Consider moderation capabilities for inappropriate content
### 8. Performance Considerations
**Counting Strategy:** **Counting Strategy:**
- [ ] Option A: Real-time COUNT queries (simple, always accurate) - [ ] Real-time COUNT queries (simple, always accurate)
- [ ] Option B: Cached counts with periodic updates (faster, eventual consistency)
- [ ] Option C: Trigger-based count maintenance (complex but efficient)
**Indexing:** **Indexing:**
- [ ] Index on `parentItemIdentifier` for emoji retrieval - [ ] Index on `parentItemIdentifier` for emoji retrieval
- [ ] Composite index on `(parentItemIdentifier, issuerDid)` if preventing duplicates
- [ ] Consider pagination for items with many emojis - [ ] Consider pagination for items with many emojis
### 9. Database Migration ### 8. Database Migration
- [ ] Create new `comment_claim` table following existing patterns - [ ] Create new `comment_claim` table following existing patterns
- [ ] Add `emojiCount` column to relevant summary tables (optional optimization) - [ ] Add `emojiCount` column to relevant summary tables
- [ ] Update database service methods - [ ] Update database service methods
- [ ] Test migration with existing data - [ ] Test migration with existing data
### 10. API Documentation ### 9. API Documentation
- [ ] Update Swagger documentation for new endpoints - [ ] Update Swagger documentation for new endpoints
- [ ] Document Comment claim structure - [ ] Document Comment claim structure
- [ ] Provide examples of emoji submission and retrieval - [ ] Provide examples of emoji submission and retrieval
- [ ] Document rate limits and validation rules - [ ] Document rate limits and validation rules
### 10. Performance Considerations
- [ ] Cached counts with periodic updates (faster, eventual consistency)
## Implementation Notes ## Implementation Notes
This design follows the existing Endorser Server patterns: This design follows the existing Endorser Server patterns:
@ -96,7 +84,3 @@ This design follows the existing Endorser Server patterns:
- Follows the established database and API patterns - Follows the established database and API patterns
- Maintains consistency with existing visibility and authentication rules - Maintains consistency with existing visibility and authentication rules
- Supports the distributed/P2P vision by storing emojis as signed claims - Supports the distributed/P2P vision by storing emojis as signed claims
The emoji feature will integrate seamlessly with the existing GiveAction display system, showing emoji counts alongside other give information and providing a separate endpoint for detailed emoji retrieval when users want to see who reacted and with what emojis.

Loading…
Cancel
Save