Skip to content

Commit 2b1b80f

Browse files
authored
feat(fe): provide default values for deploy to vercel link (#3281)
1 parent 3791fa6 commit 2b1b80f

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

frontend/src/app/dialogs/connect-quick-vercel-frame.tsx

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { faVercel, Icon } from "@rivet-gg/icons";
22
import {
33
useMutation,
44
usePrefetchInfiniteQuery,
5+
useQuery,
56
useSuspenseInfiniteQuery,
67
} from "@tanstack/react-query";
78
import confetti from "canvas-confetti";
@@ -19,7 +20,8 @@ import { type Region, useEngineCompatDataProvider } from "@/components/actors";
1920
import { queryClient } from "@/queries/global";
2021
import { StepperForm } from "../forms/stepper-form";
2122
import { VERCEL_SERVERLESS_MAX_DURATION } from "./connect-vercel-frame";
22-
import { EnvVariablesStep } from "./connect-railway-frame";
23+
import { EnvVariablesStep, useSelectedDatacenter } from "./connect-railway-frame";
24+
import { useMemo } from "react";
2325

2426
const { stepper } = ConnectVercelForm;
2527

@@ -134,15 +136,45 @@ function FormStepper({
134136
);
135137
}
136138

139+
const useVercelTemplateLink = () => {
140+
const dataProvider = useEngineCompatDataProvider();
141+
const { data: token } = useQuery(
142+
dataProvider.engineAdminTokenQueryOptions(),
143+
);
144+
const endpoint = useSelectedDatacenter();
145+
146+
147+
return useMemo(() => {
148+
const repositoryUrl = "https://github.com/rivet-dev/template-vercel";
149+
const env = [
150+
"NEXT_PUBLIC_RIVET_ENDPOINT",
151+
"NEXT_PUBLIC_RIVET_TOKEN",
152+
"NEXT_PUBLIC_RIVET_NAMESPACE",
153+
].join(",");
154+
const projectName = "rivetkit-vercel";
155+
const envDefaults = {
156+
NEXT_PUBLIC_RIVET_ENDPOINT: endpoint,
157+
NEXT_PUBLIC_RIVET_TOKEN: token,
158+
NEXT_PUBLIC_RIVET_NAMESPACE: dataProvider.engineNamespace,
159+
};
160+
161+
return (
162+
`https://vercel.com/new/clone?repository-url=${encodeURIComponent(repositoryUrl)}&env=${env}&project-name=${projectName}&repository-name=${projectName}&envDefaults=${encodeURIComponent(JSON.stringify(envDefaults))}`
163+
);
164+
}, [dataProvider.engineNamespace, endpoint, token]);
165+
166+
};
167+
137168
function StepInitialInfo() {
169+
const vercelTemplateLink = useVercelTemplateLink();
138170
return (
139171
<>
140172
<div className="space-y-4">
141173
<p>
142174
Deploy the Rivet Vercel template to get started quickly.
143175
</p>
144176
<ExternalLinkCard
145-
href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Frivet-dev%2Ftemplate-vercel&env=NEXT_PUBLIC_RIVET_ENDPOINT,NEXT_PUBLIC_RIVET_TOKEN,NEXT_PUBLIC_RIVET_NAMESPACE&project-name=rivetkit-vercel&repository-name=rivetkit-vercel"
177+
href={vercelTemplateLink}
146178
icon={faVercel}
147179
title="Deploy Template to Vercel"
148180
/>

frontend/src/app/dialogs/connect-railway-frame.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ function DeployToRailwayButton() {
355355
);
356356
}
357357

358-
const useSelectedDatacenter = () => {
358+
export const useSelectedDatacenter = () => {
359359
const datacenter = useWatch({ name: "datacenter" });
360360

361361
const { data } = useQuery(

0 commit comments

Comments
 (0)