Skip to content

[UI/UX] Implement Global Loading States and Enhanced Feedback for AI-Driven Folders #1057

@AyusKumarPathak

Description

@AyusKumarPathak

Description

Currently, our UI components (especially the Folder and Face Cluster views) lack a granular feedback loop. When a user interacts with AI-intensive features, there is no standardized way to reflect the "Processing" or "Queued" status at the UI level.

I propose enhancing our Redux slices and selectors to support a more reactive and professional user interface.

Proposed UI Improvements

  1. Shimmer/Skeleton Loading: Instead of a blank screen while setClusters is being populated, we should implement a loading state in the slice to trigger "Skeleton" components in the frontend.
  2. AI-Status Overlays: Enhance the FolderDetails type and selectors to track 'Current Task' (e.g., "Indexing", "Clustering"). This allows us to show a progress overlay directly on the folder icon in the sidebar.
  3. Optimized Image Transitions: The selectCurrentViewIndex can be expanded to handle "Pre-fetching" logic, so the next image in the gallery is ready before the user clicks "Next," eliminating the flicker.

Technical Implementation

  • Slice Update: Add a uiStatus: Record<string, 'loading' | 'error' | 'idle'> map to the slices to track the status of individual folders/clusters.
  • Selector Optimization: Create a memoized selectIsProcessing(id) selector to prevent unnecessary re-renders of the entire list when only one item is being updated.

Impact

This will transform PictoPy from a "Static Explorer" into a "Responsive Media Hub," providing the kind of high-quality UX found in apps like Google Photos or Lightroom.

Checklist

  • I have analyzed the current Redux store.
  • I am ready to implement the Slice changes and a sample Skeleton UI component.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions