Skip to content

Add unified dashboard with dual icons, sub-filters, and organization repository management#337

Open
manana2520 wants to merge 1 commit intoAIDotNet:mainfrom
keboola:upstream/unified-dashboard
Open

Add unified dashboard with dual icons, sub-filters, and organization repository management#337
manana2520 wants to merge 1 commit intoAIDotNet:mainfrom
keboola:upstream/unified-dashboard

Conversation

@manana2520
Copy link
Contributor

Summary

Replaces the separate public/private repository pages with a unified dashboard featuring organization-level repository management.

New features

  • 4 view tabs: All, Public, Organization, My Repos -- unified single-page dashboard
  • Dual icons: repos that are both public AND in a department show Globe + Building2 icons side-by-side
  • Sub-filter chips: contextual filters within each view:
    • Public: All / Public only (excludes org repos)
    • Organization: All / Private only (excludes public repos)
    • My Repos: Not shared (default) / Shared with org / All
  • Organization sharing: users can share personal repos with their departments
  • Admin restrict/unrestrict: admins can toggle repo visibility for non-admin users
  • Race condition protection: loadIdRef counter prevents stale async responses from overwriting newer data
  • Stale state clearing: view switches immediately clear previous view's data (no flash)

Backend changes

  • New OrganizationEndpoints: share, unshare, restrict, unrestrict endpoints
  • New OrganizationService with department-based repository access control
  • DepartmentRepositoryInfo DTO with IsPublic and IsRestricted fields
  • Admin-only authorization policy for restrict/unrestrict

Frontend changes

  • Unified PublicRepositoryList component with 4 views + sub-filters + client/server-side pagination
  • PublicRepositoryCard with dual icons and context-aware share/restrict toggles
  • Organization API client (organization-api.ts) with authenticated requests
  • i18n keys for all new UI text (en, zh, ko, ja)

Architecture decisions (documented in code)

  • Public API doesn't include departmentName, so public view enriches results from dept data
  • GitHub App imports set OwnerUserId to importing admin; Mine view subtracts dept repos by default
  • Sub-filters applied client-side after fetching; Public default uses server-side pagination

…ub-filters (AIDotNet#17)

Replaces the separate public/private repository pages with a unified dashboard featuring:

- **4 view tabs**: All, Public, Organization, My Repos
- **Dual icons**: Globe + Building2 for repos that are both public and in a department
- **Sub-filter chips**: contextual filters within each view (Public only, Private only, Shared/Not shared)
- **Admin restrict/unrestrict**: toggle visibility of repos for non-admin users
- **Share toggle**: users can share personal repos with their organization
- **Race condition protection**: loadIdRef counter prevents stale async responses
- **Stale state clearing**: view switches immediately clear previous data

- Organization endpoints: share, unshare, restrict, unrestrict
- OrganizationService with department-based repository access
- DepartmentRepositoryInfo DTO with IsPublic, IsRestricted fields

- Unified PublicRepositoryList with 4 views + sub-filters
- PublicRepositoryCard with dual icons and context-aware toggles
- Organization API client with fetchWithAuth for admin endpoints
- i18n keys for all new UI text (en, zh, ko, ja)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant