User Engagement, App Reviews & Action Integrity
This release expands the API's capabilities to support interactive User Generated Content (UGC), enabling features like user reactions, content reporting, and application reviews. To support this interactivity, we have refactored the limit enforcement logic into a centralized service and introduced strict validation rules to maintain data integrity and prevent abuse.
💬 Interactive User Features
We have laid the backend foundation for social interactivity and user feedback. This includes generic models for engagement and reporting, as well as a dedicated system for managing app reviews.
- 👍 UGC Foundation: Introduced
EngagementandReportmodels, along with their associated permissions, to support features like user reactions, comments, and content moderation flagging. #105 - ⭐ App Review System: Implemented a dedicated
AppReviewdata model and repository, complete with optimized database indexing (userId_index) and secure permission logic (app_review.create_owned) to allow users to rate and review the application. #106 - 🧱 Registry Enhancements: Refactored the
model_registry.dartto seamlessly integrate these new interactive models into the application's core data access and authorization framework. #106
🛡️ Logic Enforcement & Limits
With the introduction of user interactions, we have hardened the logic that governs frequency and uniqueness to ensure a balanced and spam-free environment.
- 🛑 Unique Interaction Logic: Implemented a strict business rule ensuring users can only create a single engagement per entity (e.g., one reaction per article), preventing duplicate submissions and data inconsistencies. #107
- ⚖️ Centralized Limit Service: Refactored and renamed
UserPreferenceLimitServicetoUserActionLimitService, expanding its scope to enforce limits on new engagements and reports based on user roles and remote configuration. #105 - 🎯 Precise Limit Counting: Refined the daily reaction limit mechanism to ensuring quotas are only deducted when a valid reaction is successfully created. #107