03-08-2025
🚀 Release: Archiving, Data Loading, and UI Enhancements
This release introduces significant backend and data handling improvements to the dashboard. The changes focus on ensuring data integrity through a new archiving system, intelligently working around UI component limitations for data loading, and refining the overall user experience.
🗑️ Content Archiving for Data Integrity
We've implemented a content archiving workflow to act as a soft-delete mechanism. This was a necessary architectural change driven by how our document-based backend operates.
Technical Rationale: Directly deleting a document (like a 'source') could break data integrity, as other documents (like 'headlines') might still reference it. Archiving preserves these essential links while effectively removing the content from active use.
- New Workflow: Instead of being deleted, content items are now moved to an 'archived' state. New pages have been added to view and manage this archived content.
- Controlled Deletion: To maintain data integrity, only the primary container item—a headline—can be permanently deleted, and only from within the archive page itself.
- Undo Safety Net: A 5-second "Undo" option now appears after a headline is permanently deleted from the archive, providing a buffer to prevent accidental data loss.
⚡ Refactoring Data Loading for UI Consistency
This release changes how we load data into dropdown menus (e.g., country and language lists). This was a deliberate engineering tradeoff to maintain a consistent UI across the app.
- The Challenge: The standard
DropdownButtonFormField
widget we use for UI consistency does not support scroll detection, making it impossible to load more data as a user scrolls (on-demand pagination). - Our Solution: We now pre-fetch the required data. When a form is opened, a
ThrottledFetchingService
intelligently loads the complete list of items in the background. This process is designed to be efficient and not block the UI. - The User Experience: While the data is being loaded, the dropdown is temporarily disabled and shows a "Loading full list..." message. Once the fetch is complete, the dropdown becomes active with the full list of options.
🛠️ Other Notable Improvements
- Authentication Polish:
- A 60-second cooldown has been added to the "Send Code" button to prevent abuse.
- The verification code entry now uses a cleaner
Pinput
widget for a better visual experience.
- Reactive Dashboard: The main dashboard summary now listens for content changes and updates its statistics automatically, eliminating the need for manual refreshes.
- Consistent Data Sorting: Fixed a bug to ensure all content lists are now correctly sorted by their
updatedAt
timestamp, always showing the most recently modified items first. - Active Content Filtering: Data fetches for content management now correctly filter out archived items, ensuring only active content is shown in lists and forms.