From 3314169af4d47c8eb26f3902db1b1027b32c4434 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:52:56 +0100 Subject: [PATCH] enable v3 projects by default on self-hosted instances --- apps/webapp/app/components/SetupCommands.tsx | 3 -- apps/webapp/app/features.server.ts | 33 ++++++++++++------- apps/webapp/app/models/organization.server.ts | 4 +++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/apps/webapp/app/components/SetupCommands.tsx b/apps/webapp/app/components/SetupCommands.tsx index de141a5e1..ff3b368a6 100644 --- a/apps/webapp/app/components/SetupCommands.tsx +++ b/apps/webapp/app/components/SetupCommands.tsx @@ -143,9 +143,6 @@ function getApiUrlArg() { case "https://cloud.trigger.dev": // don't display the arg, use the CLI default break; - case "https://test-cloud.trigger.dev": - apiUrl = "https://test-api.trigger.dev"; - break; default: apiUrl = appOrigin; break; diff --git a/apps/webapp/app/features.server.ts b/apps/webapp/app/features.server.ts index a5f11e79b..86fddd4ce 100644 --- a/apps/webapp/app/features.server.ts +++ b/apps/webapp/app/features.server.ts @@ -7,20 +7,31 @@ export type TriggerFeatures = { alertsEnabled: boolean; }; -// If the request host is cloud.trigger.dev then we are on the managed cloud -// or if env.NODE_ENV is development -export function featuresForRequest(request: Request): TriggerFeatures { - const url = requestUrl(request); - - const isManagedCloud = - url.host === "cloud.trigger.dev" || - url.host === "test-cloud.trigger.dev" || - url.host === "internal.trigger.dev" || - process.env.CLOUD_ENV === "development"; +function isManagedCloud(host: string): boolean { + return ( + host === "cloud.trigger.dev" || + host === "test-cloud.trigger.dev" || + host === "internal.trigger.dev" || + process.env.CLOUD_ENV === "development" + ); +} +export function featuresForHost(host: string): TriggerFeatures { return { - isManagedCloud, + isManagedCloud: isManagedCloud(host), v3Enabled: env.V3_ENABLED === "true", alertsEnabled: env.ALERT_FROM_EMAIL !== undefined && env.ALERT_RESEND_API_KEY !== undefined, }; } + +export function featuresForRequest(request: Request): TriggerFeatures { + const url = requestUrl(request); + + return featuresForHost(url.host); +} + +export function featuresForUrl(urlString: string): TriggerFeatures { + const url = new URL(urlString); + + return featuresForHost(url.host); +} diff --git a/apps/webapp/app/models/organization.server.ts b/apps/webapp/app/models/organization.server.ts index 814f946f3..7818be2dd 100644 --- a/apps/webapp/app/models/organization.server.ts +++ b/apps/webapp/app/models/organization.server.ts @@ -12,6 +12,7 @@ import { createProject } from "./project.server"; import { generate } from "random-words"; import { createApiKeyForEnv, createPkApiKeyForEnv, envSlug } from "./api-key.server"; import { env } from "~/env.server"; +import { featuresForHost } from "~/features.server"; export type { Organization }; @@ -52,6 +53,8 @@ export async function createOrganization( ); } + const features = featuresForHost(env.APP_ORIGIN); + const organization = await prisma.organization.create({ data: { title, @@ -64,6 +67,7 @@ export async function createOrganization( role: "ADMIN", }, }, + v3Enabled: features.v3Enabled && !features.isManagedCloud, }, include: { members: true,