Skip to content

03-08-2025

Compare
Choose a tag to compare
@fulleni fulleni released this 03 Aug 08:14
· 39 commits to main since this release
bb79b70

🚀 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.