From 767eda424e7957cda20f13711e355292a975f67e Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 15 Dec 2025 14:30:47 -0800 Subject: [PATCH] fix job skills adapter to expect array, add emp_skills method --- src/lib/api/adapters/job.adapter.ts | 17 +++++++++++++---- src/lib/api/queries/job.queries.ts | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/lib/api/adapters/job.adapter.ts b/src/lib/api/adapters/job.adapter.ts index 2d3879e7..a9e05a3f 100644 --- a/src/lib/api/adapters/job.adapter.ts +++ b/src/lib/api/adapters/job.adapter.ts @@ -95,11 +95,10 @@ export class JobAdapter extends BaseAdapter { * Returns skills categorized by type (main, sub, emp, base) */ async getSkills(jobId: string): Promise { - const response = await this.request<{ skills: JobSkill[] }>(`/jobs/${jobId}/skills`, { + return this.request(`/jobs/${jobId}/skills`, { method: 'GET', cacheTTL: 300000 // Cache for 5 minutes }) - return response.skills } /** @@ -179,11 +178,21 @@ export class JobAdapter extends BaseAdapter { * Useful for browsing all skills */ async getAllSkills(): Promise { - const response = await this.request<{ skills: JobSkill[] }>('/jobs/skills', { + return this.request('/jobs/skills', { + method: 'GET', + cacheTTL: 300000 // Cache for 5 minutes + }) + } + + /** + * Gets EMP skills from other jobs (for party skill selection) + * Returns skills that can be used with the specified job + */ + async getEmpSkills(jobId: string): Promise { + return this.request(`/jobs/${jobId}/emp_skills`, { method: 'GET', cacheTTL: 300000 // Cache for 5 minutes }) - return response.skills } /** diff --git a/src/lib/api/queries/job.queries.ts b/src/lib/api/queries/job.queries.ts index fb438513..16e988eb 100644 --- a/src/lib/api/queries/job.queries.ts +++ b/src/lib/api/queries/job.queries.ts @@ -86,6 +86,21 @@ export const jobQueries = { gcTime: 1000 * 60 * 60 // 1 hour }), + /** + * EMP skills from other jobs (for party skill selection) + * + * @param jobId - Current job ID to find compatible EMP skills for + * @returns Query options for fetching EMP skills from other jobs + */ + empSkills: (jobId: string) => + queryOptions({ + queryKey: ['jobs', jobId, 'emp_skills'] as const, + queryFn: () => jobAdapter.getEmpSkills(jobId), + enabled: !!jobId, + staleTime: 1000 * 60 * 30, // 30 minutes + gcTime: 1000 * 60 * 60 // 1 hour + }), + /** * Job skills search infinite query options * @@ -175,6 +190,7 @@ export const jobKeys = { lists: () => [...jobKeys.all] as const, detail: (id: string) => [...jobKeys.all, id] as const, skills: (jobId: string) => [...jobKeys.all, jobId, 'skills'] as const, + empSkills: (jobId: string) => [...jobKeys.all, jobId, 'emp_skills'] as const, skillsSearch: (jobId: string, params?: Omit) => [...jobKeys.skills(jobId), 'search', params] as const, accessories: (jobId: string) => [...jobKeys.all, jobId, 'accessories'] as const,