From 6a7999211b4a0a628711d74ab604a92bd91c6b15 Mon Sep 17 00:00:00 2001 From: Saumya Date: Tue, 7 Oct 2025 23:42:23 +0530 Subject: [PATCH] fix: remove pagination for kortix templates --- backend/core/templates/api.py | 50 +++++++++++++++++++ .../react-query/secure-mcp/use-secure-mcp.ts | 27 ++++++++-- 2 files changed, 73 insertions(+), 4 deletions(-) diff --git a/backend/core/templates/api.py b/backend/core/templates/api.py index de58f66c..b992df02 100644 --- a/backend/core/templates/api.py +++ b/backend/core/templates/api.py @@ -370,6 +370,56 @@ class MarketplaceTemplatesResponse(BaseModel): templates: List[TemplateResponse] pagination: MarketplacePaginationInfo +@router.get("/kortix-all", response_model=MarketplaceTemplatesResponse) +async def get_all_kortix_templates( + request: Request = None +): + try: + from core.templates.services.marketplace_service import MarketplaceService, MarketplaceFilters + + pagination_params = PaginationParams( + page=1, + page_size=1000 + ) + + filters = MarketplaceFilters( + is_kortix_team=True, + sort_by="download_count", + sort_order="desc" + ) + + client = await db.client + marketplace_service = MarketplaceService(client) + paginated_result = await marketplace_service.get_marketplace_templates_paginated( + pagination_params=pagination_params, + filters=filters + ) + + template_responses = [] + for template_data in paginated_result.data: + template_response = TemplateResponse(**template_data) + template_responses.append(template_response) + + return MarketplaceTemplatesResponse( + templates=template_responses, + pagination=MarketplacePaginationInfo( + current_page=1, + page_size=len(template_responses), + total_items=len(template_responses), + total_pages=1, + has_next=False, + has_previous=False + ) + ) + + except Exception as e: + try: + error_str = str(e) + except Exception: + error_str = f"Error of type {type(e).__name__}" + logger.error(f"Error getting all Kortix templates: {error_str}") + raise HTTPException(status_code=500, detail="Internal server error") + @router.get("/marketplace", response_model=MarketplaceTemplatesResponse) async def get_marketplace_templates( page: Optional[int] = Query(1, ge=1, description="Page number (1-based)"), diff --git a/frontend/src/hooks/react-query/secure-mcp/use-secure-mcp.ts b/frontend/src/hooks/react-query/secure-mcp/use-secure-mcp.ts index 97c23008..0ef4a403 100644 --- a/frontend/src/hooks/react-query/secure-mcp/use-secure-mcp.ts +++ b/frontend/src/hooks/react-query/secure-mcp/use-secure-mcp.ts @@ -485,9 +485,29 @@ export function useDeleteTemplate() { } export function useKortixTeamTemplates() { - return useMarketplaceTemplates({ - is_kortix_team: true, - limit: 10 + return useQuery({ + queryKey: ['secure-mcp', 'kortix-templates-all'], + queryFn: async (): Promise => { + const supabase = createClient(); + const { data: { session } } = await supabase.auth.getSession(); + + if (!session) { + throw new Error('You must be logged in to view Kortix templates'); + } + + const response = await fetch(`${API_URL}/templates/kortix-all`, { + headers: { + 'Authorization': `Bearer ${session.access_token}`, + }, + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({ message: 'Unknown error' })); + throw new Error(errorData.message || `HTTP ${response.status}: ${response.statusText}`); + } + + return response.json(); + }, }); } @@ -519,7 +539,6 @@ export function useInstallTemplate() { if (isAgentLimitError) { const { AgentCountLimitError } = await import('@/lib/api'); - // Use the nested detail if it exists, otherwise use the errorData directly const errorDetail = errorData.detail || errorData; throw new AgentCountLimitError(response.status, errorDetail); }