Fix task poller callback staleness and normalize filings query

This commit is contained in:
2026-02-27 01:03:59 -05:00
parent cff77ce193
commit e7320f3bdb
3 changed files with 23 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
'use client';
import { useEffect, useState } from 'react';
import { useEffect, useRef, useState } from 'react';
import { getTask } from '@/lib/api';
import type { Task } from '@/lib/types';
@@ -12,6 +12,11 @@ type UseTaskPollerInput = {
export function useTaskPoller({ taskId, intervalMs = 2200, onTerminalState }: UseTaskPollerInput) {
const [task, setTask] = useState<Task | null>(null);
const onTerminalStateRef = useRef(onTerminalState);
useEffect(() => {
onTerminalStateRef.current = onTerminalState;
}, [onTerminalState]);
useEffect(() => {
if (!taskId) {
@@ -33,7 +38,7 @@ export function useTaskPoller({ taskId, intervalMs = 2200, onTerminalState }: Us
setTask(latest);
if (latest.status === 'completed' || latest.status === 'failed') {
onTerminalState?.(latest);
onTerminalStateRef.current?.(latest);
return;
}
} catch {
@@ -53,7 +58,7 @@ export function useTaskPoller({ taskId, intervalMs = 2200, onTerminalState }: Us
clearTimeout(timer);
}
};
}, [taskId, intervalMs, onTerminalState]);
}, [taskId, intervalMs]);
return task;
}

View File

@@ -153,11 +153,21 @@ export async function getLatestPortfolioInsight() {
}
export async function listFilings(query?: { ticker?: string; limit?: number }) {
const queryParams: {
ticker?: string;
limit?: number;
} = {};
if (query?.ticker?.trim()) {
queryParams.ticker = query.ticker.trim().toUpperCase();
}
if (query?.limit !== undefined) {
queryParams.limit = query.limit;
}
const result = await client.api.filings.get({
$query: {
ticker: query?.ticker,
limit: query?.limit
}
$query: queryParams
});
return await unwrapData<{ filings: Filing[] }>(result, 'Unable to fetch filings');

2
next-env.d.ts vendored
View File

@@ -1,6 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/dev/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.