Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/dashboard/src/data/organizations/org-envvar-queries.ts
2501 views
1
/**
2
* Copyright (c) 2025 Gitpod GmbH. All rights reserved.
3
* Licensed under the GNU Affero General Public License (AGPL).
4
* See License.AGPL.txt in the project root for license information.
5
*/
6
7
import { OrganizationEnvironmentVariable } from "@gitpod/public-api/lib/gitpod/v1/envvar_pb";
8
import { envVarClient } from "../../service/public-api";
9
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
10
11
const getListOrgEnvVarQueryKey = (orgId: string) => {
12
const key: any[] = ["organization", orgId, "envvar", "list"];
13
14
return key;
15
};
16
17
const getOrgEnvVarQueryKey = (orgId: string, variableId: string) => {
18
const key: any[] = ["organization", orgId, "envvar", { variableId }];
19
20
return key;
21
};
22
23
export const useListOrganizationEnvironmentVariables = (orgId: string) => {
24
return useQuery<OrganizationEnvironmentVariable[]>(getListOrgEnvVarQueryKey(orgId), {
25
queryFn: async () => {
26
const { environmentVariables } = await envVarClient.listOrganizationEnvironmentVariables({
27
organizationId: orgId,
28
});
29
30
return environmentVariables;
31
},
32
cacheTime: 1000 * 60 * 60 * 24, // one day
33
});
34
};
35
36
type DeleteEnvironmentVariableArgs = {
37
variableId: string;
38
organizationId: string;
39
};
40
export const useDeleteOrganizationEnvironmentVariable = () => {
41
const queryClient = useQueryClient();
42
43
return useMutation<void, Error, DeleteEnvironmentVariableArgs>({
44
mutationFn: async ({ variableId }) => {
45
void (await envVarClient.deleteOrganizationEnvironmentVariable({
46
environmentVariableId: variableId,
47
}));
48
},
49
onSuccess: (_, { organizationId, variableId }) => {
50
queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });
51
queryClient.invalidateQueries({ queryKey: getOrgEnvVarQueryKey(organizationId, variableId) });
52
},
53
});
54
};
55
56
type CreateEnvironmentVariableArgs = {
57
organizationId: string;
58
name: string;
59
value: string;
60
};
61
export const useCreateOrganizationEnvironmentVariable = () => {
62
const queryClient = useQueryClient();
63
64
return useMutation<OrganizationEnvironmentVariable, Error, CreateEnvironmentVariableArgs>({
65
mutationFn: async ({ organizationId, name, value }) => {
66
const { environmentVariable } = await envVarClient.createOrganizationEnvironmentVariable({
67
organizationId,
68
name,
69
value,
70
});
71
if (!environmentVariable) {
72
throw new Error("Failed to create environment variable");
73
}
74
75
return environmentVariable;
76
},
77
onSuccess: (_, { organizationId }) => {
78
queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });
79
},
80
});
81
};
82
83
type UpdateEnvironmentVariableArgs = CreateEnvironmentVariableArgs & {
84
variableId: string;
85
};
86
export const useUpdateOrganizationEnvironmentVariable = () => {
87
const queryClient = useQueryClient();
88
89
return useMutation<OrganizationEnvironmentVariable, Error, UpdateEnvironmentVariableArgs>({
90
mutationFn: async ({ variableId, name, value, organizationId }: UpdateEnvironmentVariableArgs) => {
91
const { environmentVariable } = await envVarClient.updateOrganizationEnvironmentVariable({
92
environmentVariableId: variableId,
93
organizationId,
94
name,
95
value,
96
});
97
if (!environmentVariable) {
98
throw new Error("Failed to update environment variable");
99
}
100
101
return environmentVariable;
102
},
103
onSuccess: (_, { organizationId, variableId }) => {
104
queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });
105
queryClient.invalidateQueries({ queryKey: getOrgEnvVarQueryKey(organizationId, variableId) });
106
},
107
});
108
};
109
110