From b46f760247db1b10f300a95e553f9894fc548b60 Mon Sep 17 00:00:00 2001 From: waleed Date: Mon, 19 Jan 2026 16:05:51 -0800 Subject: [PATCH] added new rate limit category, ack PR comments --- apps/sim/app/api/v1/middleware.ts | 2 +- apps/sim/app/api/v1/workflows/[id]/route.ts | 2 +- apps/sim/app/api/v1/workflows/route.ts | 29 ++++++++++--------- .../general/components/api-info-modal.tsx | 9 ++++-- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/apps/sim/app/api/v1/middleware.ts b/apps/sim/app/api/v1/middleware.ts index 4f0eac4ad..06b410943 100644 --- a/apps/sim/app/api/v1/middleware.ts +++ b/apps/sim/app/api/v1/middleware.ts @@ -19,7 +19,7 @@ export interface RateLimitResult { export async function checkRateLimit( request: NextRequest, - endpoint: 'logs' | 'logs-detail' = 'logs' + endpoint: 'logs' | 'logs-detail' | 'workflows' | 'workflow-detail' = 'logs' ): Promise { try { const auth = await authenticateV1Request(request) diff --git a/apps/sim/app/api/v1/workflows/[id]/route.ts b/apps/sim/app/api/v1/workflows/[id]/route.ts index c836e936b..658a0f8ea 100644 --- a/apps/sim/app/api/v1/workflows/[id]/route.ts +++ b/apps/sim/app/api/v1/workflows/[id]/route.ts @@ -15,7 +15,7 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{ const requestId = crypto.randomUUID().slice(0, 8) try { - const rateLimit = await checkRateLimit(request, 'logs-detail') + const rateLimit = await checkRateLimit(request, 'workflow-detail') if (!rateLimit.allowed) { return createRateLimitResponse(rateLimit) } diff --git a/apps/sim/app/api/v1/workflows/route.ts b/apps/sim/app/api/v1/workflows/route.ts index 1dcdcba02..23bb707f1 100644 --- a/apps/sim/app/api/v1/workflows/route.ts +++ b/apps/sim/app/api/v1/workflows/route.ts @@ -42,7 +42,7 @@ export async function GET(request: NextRequest) { const requestId = crypto.randomUUID().slice(0, 8) try { - const rateLimit = await checkRateLimit(request, 'logs') + const rateLimit = await checkRateLimit(request, 'workflows') if (!rateLimit.allowed) { return createRateLimitResponse(rateLimit) } @@ -87,20 +87,21 @@ export async function GET(request: NextRequest) { if (params.cursor) { const cursorData = decodeCursor(params.cursor) if (cursorData) { - conditions.push( - or( - gt(workflow.sortOrder, cursorData.sortOrder), - and( - eq(workflow.sortOrder, cursorData.sortOrder), - gt(workflow.createdAt, new Date(cursorData.createdAt)) - ), - and( - eq(workflow.sortOrder, cursorData.sortOrder), - eq(workflow.createdAt, new Date(cursorData.createdAt)), - gt(workflow.id, cursorData.id) - ) - )! + const cursorCondition = or( + gt(workflow.sortOrder, cursorData.sortOrder), + and( + eq(workflow.sortOrder, cursorData.sortOrder), + gt(workflow.createdAt, new Date(cursorData.createdAt)) + ), + and( + eq(workflow.sortOrder, cursorData.sortOrder), + eq(workflow.createdAt, new Date(cursorData.createdAt)), + gt(workflow.id, cursorData.id) + ) ) + if (cursorCondition) { + conditions.push(cursorCondition) + } } } diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/api-info-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/api-info-modal.tsx index 6935d24a4..b33b40c7f 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/api-info-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/api-info-modal.tsx @@ -137,6 +137,11 @@ export function ApiInfoModal({ open, onOpenChange, workflowId }: ApiInfoModalPro const handleSave = useCallback(async () => { if (!workflowId) return + const activeWorkflowId = useWorkflowRegistry.getState().activeWorkflowId + if (activeWorkflowId !== workflowId) { + return + } + setIsSaving(true) try { if (description.trim() !== (workflowMetadata?.description || '')) { @@ -144,8 +149,7 @@ export function ApiInfoModal({ open, onOpenChange, workflowId }: ApiInfoModalPro } if (starterBlockId) { - const currentValue = subBlockValues[starterBlockId]?.inputFormat || inputFormat - const updatedValue = (currentValue as NormalizedField[]).map((field) => ({ + const updatedValue = inputFormat.map((field) => ({ ...field, description: paramDescriptions[field.name]?.trim() || undefined, })) @@ -162,7 +166,6 @@ export function ApiInfoModal({ open, onOpenChange, workflowId }: ApiInfoModalPro workflowMetadata, updateWorkflow, starterBlockId, - subBlockValues, inputFormat, paramDescriptions, setValue,