Skip to content

Commit 0819ae7

Browse files
committed
Engine version error for waitpoint token list
1 parent 8d4b842 commit 0819ae7

File tree

2 files changed

+58
-21
lines changed

2 files changed

+58
-21
lines changed

apps/webapp/app/presenters/v3/WaitpointTokenListPresenter.server.ts

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { sqlDatabaseSchema } from "~/db.server";
55
import { type AuthenticatedEnvironment } from "~/services/apiAuth.server";
66
import { BasePresenter } from "./basePresenter.server";
77
import { type WaitpointFilterStatus } from "~/components/runs/v3/WaitpointTokenFilters";
8+
import { determineEngineVersion } from "~/v3/engineVersion.server";
89

910
const DEFAULT_PAGE_SIZE = 25;
1011

@@ -24,6 +25,40 @@ export type WaitpointTokenListOptions = {
2425
pageSize?: number;
2526
};
2627

28+
type WaitpointToken = {
29+
friendlyId: string;
30+
status: WaitpointStatus;
31+
completedAt: Date | null;
32+
completedAfter: Date | null;
33+
idempotencyKey: string | null;
34+
idempotencyKeyExpiresAt: Date | null;
35+
tags: string[];
36+
isTimeout: boolean;
37+
createdAt: Date;
38+
};
39+
40+
type Result =
41+
| {
42+
success: true;
43+
tokens: WaitpointToken[];
44+
pagination: {
45+
next: string | undefined;
46+
previous: string | undefined;
47+
};
48+
hasFilters: boolean;
49+
}
50+
| {
51+
success: false;
52+
code: "ENGINE_VERSION_MISMATCH" | "UNKNOWN";
53+
error: string;
54+
tokens: [];
55+
pagination: {
56+
next: undefined;
57+
previous: undefined;
58+
};
59+
hasFilters: false;
60+
};
61+
2762
export class WaitpointTokenListPresenter extends BasePresenter {
2863
public async call({
2964
environment,
@@ -37,7 +72,22 @@ export class WaitpointTokenListPresenter extends BasePresenter {
3772
direction = "forward",
3873
cursor,
3974
pageSize = DEFAULT_PAGE_SIZE,
40-
}: WaitpointTokenListOptions) {
75+
}: WaitpointTokenListOptions): Promise<Result> {
76+
const engineVersion = await determineEngineVersion({ environment });
77+
if (engineVersion === "V1") {
78+
return {
79+
success: false,
80+
code: "ENGINE_VERSION_MISMATCH",
81+
error: "Upgrade to SDK version 4+ to use Waitpoint tokens.",
82+
tokens: [],
83+
pagination: {
84+
next: undefined,
85+
previous: undefined,
86+
},
87+
hasFilters: false,
88+
};
89+
}
90+
4191
const hasStatusFilters = statuses && statuses.length > 0;
4292

4393
const hasFilters =
@@ -190,6 +240,7 @@ export class WaitpointTokenListPresenter extends BasePresenter {
190240
: tokens.slice(0, pageSize);
191241

192242
return {
243+
success: true,
193244
tokens: tokensToReturn.map((token) => ({
194245
friendlyId: token.friendlyId,
195246
status: token.status,
@@ -208,13 +259,6 @@ export class WaitpointTokenListPresenter extends BasePresenter {
208259
next,
209260
previous,
210261
},
211-
filters: {
212-
id: id || undefined,
213-
statuses: statuses || [],
214-
idempotencyKey: idempotencyKey || undefined,
215-
from,
216-
to,
217-
},
218262
hasFilters,
219263
};
220264
}

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens/route.tsx

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1+
import upgradeForWaitpointsPath from "~/assets/images/waitpoints-dashboard.png";
12
import { BookOpenIcon } from "@heroicons/react/20/solid";
2-
import { useParams, type MetaFunction, Outlet } from "@remix-run/react";
3+
import { Outlet, useParams, type MetaFunction } from "@remix-run/react";
34
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
45
import { typedjson, useTypedLoaderData } from "remix-typedjson";
56
import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
67
import { NoWaitpointTokens } from "~/components/BlankStatePanels";
7-
import {
8-
MainCenteredContainer,
9-
MainHorizontallyCenteredContainer,
10-
PageBody,
11-
PageContainer,
12-
} from "~/components/layout/AppLayout";
8+
import { MainCenteredContainer, PageBody, PageContainer } from "~/components/layout/AppLayout";
139
import { ListPagination } from "~/components/ListPagination";
1410
import { LinkButton } from "~/components/primitives/Buttons";
1511
import { DateTime } from "~/components/primitives/DateTime";
@@ -43,6 +39,7 @@ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
4339
import { WaitpointTokenListPresenter } from "~/presenters/v3/WaitpointTokenListPresenter.server";
4440
import { requireUserId } from "~/services/session.server";
4541
import { docsPath, EnvironmentParamSchema, v3WaitpointTokenPath } from "~/utils/pathBuilder";
42+
import { determineEngineVersion } from "~/v3/engineVersion.server";
4643

4744
export const meta: MetaFunction = () => {
4845
return [
@@ -105,7 +102,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
105102
};
106103

107104
export default function Page() {
108-
const { tokens, pagination, filters, hasFilters } = useTypedLoaderData<typeof loader>();
105+
const { success, tokens, pagination, hasFilters } = useTypedLoaderData<typeof loader>();
109106

110107
const organization = useOrganization();
111108
const project = useProject();
@@ -120,11 +117,7 @@ export default function Page() {
120117
<PageTitle title="Waitpoint Tokens" />
121118
<PageAccessories>
122119
<AdminDebugTooltip />
123-
<LinkButton
124-
variant={"docs/small"}
125-
LeadingIcon={BookOpenIcon}
126-
to={docsPath("/waitpoints")}
127-
>
120+
<LinkButton variant={"docs/small"} LeadingIcon={BookOpenIcon} to={docsPath("/wait")}>
128121
Waitpoints docs
129122
</LinkButton>
130123
</PageAccessories>

0 commit comments

Comments
 (0)