Skip to content

Commit

Permalink
NEOS-510 Fixes table links not working by memoizing getColumns calls (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
nickzelei committed Dec 19, 2023
1 parent bab1a1b commit 726b28c
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 37 deletions.
20 changes: 12 additions & 8 deletions frontend/apps/web/app/[account]/connections/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from '@/components/ui/button';
import { useGetConnections } from '@/libs/hooks/useGetConnections';
import { PlusIcon } from '@radix-ui/react-icons';
import NextLink from 'next/link';
import { ReactElement } from 'react';
import { ReactElement, useMemo } from 'react';
import { getColumns } from './components/ConnectionsTable/columns';
import { DataTable } from './components/ConnectionsTable/data-table';

Expand All @@ -35,19 +35,23 @@ function ConnectionTable(props: ConnectionTableProps): ReactElement {
const { account } = useAccount();
const { isLoading, data, mutate } = useGetConnections(account?.id ?? '');

const columns = useMemo(
() =>
getColumns({
accountName: account?.name ?? '',
onConnectionDeleted() {
mutate();
},
}),
[account?.name ?? '']
);

if (isLoading) {
return <SkeletonTable />;
}

const connections = data?.connections ?? [];

const columns = getColumns({
accountName: account?.name ?? '',
onConnectionDeleted() {
mutate();
},
});

return (
<div>
<DataTable columns={columns} data={connections} />
Expand Down
19 changes: 11 additions & 8 deletions frontend/apps/web/app/[account]/jobs/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { useGetJobs } from '@/libs/hooks/useGetJobs';
import { JobStatus } from '@neosync/sdk';
import { PlusIcon } from '@radix-ui/react-icons';
import NextLink from 'next/link';
import { ReactElement } from 'react';
import { ReactElement, useMemo } from 'react';
import { getColumns } from './components/DataTable/columns';
import { DataTable } from './components/DataTable/data-table';

Expand All @@ -34,6 +34,16 @@ function JobTable(props: JobTableProps): ReactElement {
const { account } = useAccount();
const { isLoading, data, mutate } = useGetJobs(account?.id ?? '');
const { data: statusData } = useGetJobStatuses(account?.id ?? '');
const columns = useMemo(
() =>
getColumns({
accountName: account?.name ?? '',
onDeleted() {
mutate();
},
}),
[account?.name ?? '']
);

if (isLoading) {
return <SkeletonTable />;
Expand All @@ -56,13 +66,6 @@ function JobTable(props: JobTableProps): ReactElement {
};
});

const columns = getColumns({
accountName: account?.name ?? '',
onDeleted() {
mutate();
},
});

return (
<div>
<DataTable columns={columns} data={jobData} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import SkeletonTable from '@/components/skeleton/SkeletonTable';
import { JobRunEvent } from '@neosync/sdk';
import { ReactElement } from 'react';
import { ReactElement, useMemo } from 'react';
import { getColumns } from './JobRunActivityTable/columns';
import { DataTable } from './JobRunActivityTable/data-table';

Expand All @@ -13,10 +13,11 @@ export default function JobRunActivityTable(
): ReactElement {
const { jobRunEvents } = props;

const columns = useMemo(() => getColumns({}), []);

if (!jobRunEvents) {
return <SkeletonTable />;
}
const columns = getColumns({});
const isError = jobRunEvents.some((e) => e.tasks.some((t) => t.error));

return (
Expand Down
22 changes: 13 additions & 9 deletions frontend/apps/web/app/[account]/runs/components/RunsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
onJobRunsPaused,
useGetJobRuns,
} from '@/libs/hooks/useGetJobRuns';
import { ReactElement, useState } from 'react';
import { ReactElement, useMemo, useState } from 'react';
import { getColumns } from './JobRunsTable/columns';
import { DataTable } from './JobRunsTable/data-table';

Expand All @@ -33,20 +33,24 @@ export default function RunsTable(props: RunsTableProps): ReactElement {
}
);

const columns = useMemo(
() =>
getColumns({
onDeleted() {
mutate();
},
accountId: account?.id ?? '',
accountName: account?.name ?? '',
}),
[account?.id ?? '', account?.name ?? '']
);

if (isLoading) {
return <SkeletonTable />;
}

const runs = data?.jobRuns ?? [];

const columns = getColumns({
onDeleted() {
mutate();
},
accountId: account?.id || '',
accountName: account?.name ?? '',
});

function refreshClick(): void {
mutate();
}
Expand Down
20 changes: 12 additions & 8 deletions frontend/apps/web/app/[account]/settings/api-keys/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button';
import { useGetAccountApiKeys } from '@/libs/hooks/useGetAccountApiKeys';
import { PlusIcon } from '@radix-ui/react-icons';
import Link from 'next/link';
import { ReactElement } from 'react';
import { ReactElement, useMemo } from 'react';
import { getColumns } from './components/ApiKeysTable/columns';
import { DataTable } from './components/ApiKeysTable/data-table';

Expand All @@ -30,19 +30,23 @@ function ApiKeyTable(props: ApiKeyTableProps): ReactElement {
const { account } = useAccount();
const { isLoading, data, mutate } = useGetAccountApiKeys(account?.id ?? '');

const columns = useMemo(
() =>
getColumns({
accountName: account?.name ?? '',
onDeleted() {
mutate();
},
}),
[account?.name ?? '']
);

if (isLoading) {
return <SkeletonTable />;
}

const apiKeys = data?.apiKeys ?? [];

const columns = getColumns({
accountName: account?.name ?? '',
onDeleted() {
mutate();
},
});

return (
<div>
<DataTable columns={columns} data={apiKeys} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,10 @@ function DataTable(props: DataTableProps): React.ReactElement {
React.useState<VisibilityState>({});
const [rowSelection, setRowSelection] = React.useState({});

const columns = getColumns({ accountId, onDeleted });
const columns = React.useMemo(
() => getColumns({ accountId, onDeleted }),
[accountId]
);

const table = useReactTable({
data,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,10 @@ function DataTable(props: DataTableProps): React.ReactElement {
React.useState<VisibilityState>({});
const [rowSelection, setRowSelection] = React.useState({});

const columns = getColumns({ accountId, onDeleted });
const columns = React.useMemo(
() => getColumns({ accountId, onDeleted }),
[accountId]
);

const table = useReactTable({
data,
Expand Down

0 comments on commit 726b28c

Please sign in to comment.