Path: blob/main/components/dashboard/src/data/organizations/org-settings-query.ts
2501 views
/**1* Copyright (c) 2023 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { useQuery, useQueryClient } from "@tanstack/react-query";7import { organizationClient } from "../../service/public-api";8import { OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb";9import { useCallback } from "react";10import { useCurrentOrg } from "./orgs-query";1112export function useOrgSettingsQueryInvalidator() {13const organizationId = useCurrentOrg().data?.id;14const queryClient = useQueryClient();15return useCallback(() => {16queryClient.invalidateQueries(getQueryKey(organizationId));17}, [organizationId, queryClient]);18}1920export function useOrgSettingsQuery() {21const organizationId = useCurrentOrg().data?.id;22return useQuery<OrganizationSettings | null, Error, OrganizationSettings | undefined>(23getQueryKey(organizationId),24async () => {25if (!organizationId) {26return null;27}2829const settings = await organizationClient.getOrganizationSettings({ organizationId });30return settings.settings || new OrganizationSettings();31},32{33select: (data) => data || undefined,34},35);36}3738export function getQueryKey(organizationId?: string) {39return ["getOrganizationSettings", organizationId || "undefined"];40}414243