From f520457e283265a4b5158f90364825675041f3b2 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 29 Nov 2025 08:52:32 +0000 Subject: [PATCH] feat: migrate components to TanStack Query v6 - Migrate JobSkillSelectionSidebar to use createInfiniteQuery with jobQueries.skills() - Migrate SearchContent to use createInfiniteQuery with searchQueries - Migrate user profile page ([username]/+page.svelte) to use createInfiniteQuery with SSR - Migrate teams explore page to use createInfiniteQuery with partyQueries.list() All components now use: - TanStack Query v6 infinite query pattern - Debounced search (debounce the value, not the query) - IsInViewport from runed for infinite scroll detection - Proper loading, error, and empty states - Type-safe query options from query factories Co-Authored-By: Justin Edmund --- .../sidebar/JobSkillSelectionSidebar.svelte | 181 +++++-------- .../components/sidebar/SearchContent.svelte | 256 +++++++++++------- src/routes/[username]/+page.svelte | 209 ++++++++++---- src/routes/teams/explore/+page.svelte | 158 ++++++++--- 4 files changed, 506 insertions(+), 298 deletions(-) diff --git a/src/lib/components/sidebar/JobSkillSelectionSidebar.svelte b/src/lib/components/sidebar/JobSkillSelectionSidebar.svelte index 6394f3e6..567a49df 100644 --- a/src/lib/components/sidebar/JobSkillSelectionSidebar.svelte +++ b/src/lib/components/sidebar/JobSkillSelectionSidebar.svelte @@ -1,15 +1,16 @@ @@ -82,27 +124,43 @@ - - + {#if partiesQuery.isLoading} +
+ +

Loading {tab}...

+
+ {:else if partiesQuery.isError} +
+ +

Failed to load {tab}: {partiesQuery.error?.message || 'Unknown error'}

+ +
+ {:else if isEmpty} +
+

{tab === 'favorites' ? 'No favorite teams yet' : 'No teams found'}

+
+ {:else} +
+ - {#snippet emptySnippet()} -
-

{tab === 'favorites' ? 'No favorite teams yet' : 'No teams found'}

-
- {/snippet} + {#if showSentinel} +
+ {/if} - {#snippet endSnippet()} -
-

You've seen all {tab === 'favorites' ? 'favorites' : 'teams'}!

-
- {/snippet} + {#if partiesQuery.isFetchingNextPage} +
+ + Loading more... +
+ {/if} - {#snippet errorSnippet(error)} -
-

Failed to load {tab}: {error.message || 'Unknown error'}

-
- {/snippet} - + {#if !partiesQuery.hasNextPage && items().length > 0} +
+

You've seen all {tab === 'favorites' ? 'favorites' : 'teams'}!

+
+ {/if} +
+ {/if} diff --git a/src/routes/teams/explore/+page.svelte b/src/routes/teams/explore/+page.svelte index f59bf34a..31cd93fe 100644 --- a/src/routes/teams/explore/+page.svelte +++ b/src/routes/teams/explore/+page.svelte @@ -1,35 +1,54 @@ @@ -39,27 +58,43 @@

Explore Teams

- - + {#if partiesQuery.isLoading} +
+ +

Loading teams...

+
+ {:else if partiesQuery.isError} +
+ +

Failed to load teams: {partiesQuery.error?.message || 'Unknown error'}

+ +
+ {:else if isEmpty} +
+

No teams found

+
+ {:else} +
+ - {#snippet emptySnippet()} -
-

No teams found

-
- {/snippet} + {#if showSentinel} +
+ {/if} - {#snippet endSnippet()} -
-

You've reached the end of all teams!

-
- {/snippet} + {#if partiesQuery.isFetchingNextPage} +
+ + Loading more... +
+ {/if} - {#snippet errorSnippet(error)} -
-

Failed to load teams: {error.message || 'Unknown error'}

-
- {/snippet} - + {#if !partiesQuery.hasNextPage && items.length > 0} +
+

You've reached the end of all teams!

+
+ {/if} +
+ {/if}