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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions