Fix: was showing deleted team member dev environments (#1261)

* Env vars: don’t show deleted dev environments

* Concurrency limits: don’t show deleted dev environments

* Create/edit schedule: don’t show deleted dev environments
This commit is contained in:
Matt Aitken
2024-08-20 14:03:24 +01:00
committed by GitHub
parent 0591db5f2b
commit d48eb9bac8
3 changed files with 28 additions and 17 deletions
@@ -7,7 +7,7 @@ import {
} from "~/models/runtimeEnvironment.server";
import { type User } from "~/models/user.server";
import { getLimit } from "~/services/platform.v3.server";
import { sortEnvironments } from "~/utils/environmentSort";
import { filterOrphanedEnvironments, sortEnvironments } from "~/utils/environmentSort";
import { concurrencyTracker } from "~/v3/services/taskRunConcurrencyTracker.server";
import { BasePresenter } from "./basePresenter.server";
@@ -55,7 +55,11 @@ export class ConcurrencyPresenter extends BasePresenter {
}
return {
environments: this.environmentConcurrency(project.id, userId, project.environments),
environments: this.environmentConcurrency(
project.id,
userId,
filterOrphanedEnvironments(project.environments)
),
};
}
@@ -1,6 +1,8 @@
import { RuntimeEnvironmentType } from "@trigger.dev/database";
import { PrismaClient, prisma } from "~/db.server";
import { displayableEnvironment } from "~/models/runtimeEnvironment.server";
import { logger } from "~/services/logger.server";
import { filterOrphanedEnvironments } from "~/utils/environmentSort";
import { getTimezones } from "~/utils/timezones.server";
type EditScheduleOptions = {
@@ -68,9 +70,11 @@ export class EditSchedulePresenter {
},
});
const possibleEnvironments = project.environments.map((environment) => {
return displayableEnvironment(environment, userId);
});
const possibleEnvironments = filterOrphanedEnvironments(project.environments).map(
(environment) => {
return displayableEnvironment(environment, userId);
}
);
return {
possibleTasks: possibleTasks.map((task) => task.slug),
@@ -115,13 +119,16 @@ export class EditSchedulePresenter {
return {
...schedule,
cron: schedule.generatorExpression,
environments: schedule.instances.map((instance) => {
environments: schedule.instances.flatMap((instance) => {
const environment = possibleEnvironments.find((env) => env.id === instance.environmentId);
if (!environment) {
throw new Error(`Environment with id ${instance.environmentId} not found`);
logger.error(
`EditSchedulePresenter: environment with id ${instance.environmentId} not found`
);
return [];
}
return environment;
return [environment];
}),
};
}
@@ -1,7 +1,7 @@
import { PrismaClient, prisma } from "~/db.server";
import { Project } from "~/models/project.server";
import { User } from "~/models/user.server";
import { sortEnvironments } from "~/utils/environmentSort";
import { filterOrphanedEnvironments, sortEnvironments } from "~/utils/environmentSort";
import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server";
type Result = Awaited<ReturnType<EnvironmentVariablesPresenter["call"]>>;
@@ -78,11 +78,11 @@ export class EnvironmentVariablesPresenter {
where: {
project: {
slug: projectSlug,
}
},
},
});
const sortedEnvironments = sortEnvironments(environments);
const sortedEnvironments = sortEnvironments(filterOrphanedEnvironments(environments));
const repository = new EnvironmentVariablesRepository(this.#prismaClient);
const variables = await repository.getProject(project.id);
@@ -104,12 +104,12 @@ export class EnvironmentVariablesPresenter {
}, {} as Record<string, { value: string | undefined; environment: { type: string; id: string } }>),
};
}),
environments: sortedEnvironments.filter(
(e) => e.orgMember?.userId === userId || e.orgMember === null
).map((environment) => ({
id: environment.id,
type: environment.type,
})),
environments: sortedEnvironments
.filter((e) => e.orgMember?.userId === userId || e.orgMember === null)
.map((environment) => ({
id: environment.id,
type: environment.type,
})),
hasStaging: environments.some((environment) => environment.type === "STAGING"),
};
}