-
+
@@ -79,7 +82,8 @@ export const IdpOrgSyncPage: FC = () => {
{
try {
@@ -94,7 +98,10 @@ export const IdpOrgSyncPage: FC = () => {
);
}
}}
- error={error || patchOrganizationSyncSettingsMutation.error}
+ error={
+ settingsQuery.error ||
+ patchOrganizationSyncSettingsMutation.error
+ }
/>
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx
index ff65a634ec61b..576c887a1a3bc 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx
@@ -5,12 +5,19 @@ import {
MockOrganization2,
MockOrganizationSyncSettings,
MockOrganizationSyncSettings2,
+ MockOrganizationSyncSettingsEmpty,
} from "testHelpers/entities";
import { IdpOrgSyncPageView } from "./IdpOrgSyncPageView";
const meta: Meta = {
title: "pages/IdpOrgSyncPageView",
component: IdpOrgSyncPageView,
+ args: {
+ organizationSyncSettings: MockOrganizationSyncSettings2,
+ fieldValues: Object.keys(MockOrganizationSyncSettings2.mapping),
+ organizations: [MockOrganization, MockOrganization2],
+ error: undefined,
+ },
};
export default meta;
@@ -18,42 +25,29 @@ type Story = StoryObj;
export const Empty: Story = {
args: {
- organizationSyncSettings: {
- field: "",
- mapping: {},
- organization_assign_default: true,
- },
- organizations: [MockOrganization, MockOrganization2],
- error: undefined,
+ organizationSyncSettings: MockOrganizationSyncSettingsEmpty,
},
};
-export const Default: Story = {
- args: {
- organizationSyncSettings: MockOrganizationSyncSettings2,
- organizations: [MockOrganization, MockOrganization2],
- error: undefined,
- },
-};
+export const Default: Story = {};
export const HasError: Story = {
args: {
- ...Default.args,
error: "This is a test error",
},
};
export const MissingGroups: Story = {
args: {
- ...Default.args,
organizationSyncSettings: MockOrganizationSyncSettings,
+ fieldValues: Object.keys(MockOrganizationSyncSettings.mapping),
+ organizations: [],
},
};
export const MissingClaim: Story = {
args: {
- ...Default.args,
- organizationSyncSettings: MockOrganizationSyncSettings,
+ fieldValues: [],
},
};
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index 9b7528dfc1250..ee5a2399faaff 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -46,6 +46,7 @@ import { Stack } from "components/Stack/Stack";
interface IdpSyncPageViewProps {
organizationSyncSettings: OrganizationSyncSettings | undefined;
+ fieldValues: readonly string[] | undefined;
organizations: readonly Organization[];
onSubmit: (data: OrganizationSyncSettings) => void;
error?: unknown;
@@ -75,6 +76,7 @@ const validationSchema = Yup.object({
export const IdpOrgSyncPageView: FC = ({
organizationSyncSettings,
+ fieldValues,
organizations,
onSubmit,
error,
@@ -268,6 +270,7 @@ export const IdpOrgSyncPageView: FC = ({
idpOrg={idpOrg}
coderOrgs={getOrgNames(organizations)}
onDelete={handleDelete}
+ exists={fieldValues?.includes(idpOrg)}
/>
))}
@@ -355,14 +358,14 @@ const IdpMappingTable: FC = ({ isEmpty, children }) => {
interface OrganizationRowProps {
idpOrg: string;
- doesIdpOrgEvenExistLol: boolean;
+ exists: boolean | undefined;
coderOrgs: readonly string[];
onDelete: (idpOrg: string) => void;
}
const OrganizationRow: FC = ({
idpOrg,
- doesIdpOrgEvenExistLol,
+ exists = true,
coderOrgs,
onDelete,
}) => {
@@ -371,7 +374,7 @@ const OrganizationRow: FC = ({
{idpOrg}{" "}
- {!doesIdpOrgEvenExistLol && (
+ {!exists && (
)}
diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts
index c522457a63c1d..d8ce878bdef6e 100644
--- a/site/src/testHelpers/entities.ts
+++ b/site/src/testHelpers/entities.ts
@@ -2720,6 +2720,13 @@ export const MockOrganizationSyncSettings2: TypesGen.OrganizationSyncSettings =
organization_assign_default: true,
};
+export const MockOrganizationSyncSettingsEmpty: TypesGen.OrganizationSyncSettings =
+ {
+ field: "",
+ mapping: {},
+ organization_assign_default: true,
+ };
+
export const MockGroup: TypesGen.Group = {
id: "fbd2116a-8961-4954-87ae-e4575bd29ce0",
name: "Front-End",
From 63ca7630cbc5c949485c2b68d2bf89851d990d65 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 19:14:51 +0000
Subject: [PATCH 03/14] =?UTF-8?q?=F0=9F=A7=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
site/src/api/api.ts | 15 +++++----------
site/src/api/queries/organizations.ts | 13 +++++--------
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 2 +-
3 files changed, 11 insertions(+), 19 deletions(-)
diff --git a/site/src/api/api.ts b/site/src/api/api.ts
index 310e4e6b3798f..cbde6cd022924 100644
--- a/site/src/api/api.ts
+++ b/site/src/api/api.ts
@@ -798,19 +798,14 @@ class ApiMethods {
return response.data;
};
- getIdpSyncClaimFieldValues = async (claimField: string) => {
- const response = await this.axios.get(
- `/api/v2/settings/idpsync/field-values?claimField=${claimField}`,
- );
- return response.data;
- };
-
- getIdpSyncClaimFieldValuesByOrganization = async (
+ getOrganizationIdpSyncClaimFieldValues = async (
organization: string,
- claimField: string,
+ field: string,
) => {
+ const params = new URLSearchParams();
+ params.set("claimField", field);
const response = await this.axios.get(
- `/api/v2/organizations/${organization}/settings/idpsync/field-values?claimField=${claimField}`,
+ `/api/v2/organizations/${organization}/settings/idpsync/field-values?${params.toString()}`,
);
return response.data;
};
diff --git a/site/src/api/queries/organizations.ts b/site/src/api/queries/organizations.ts
index 4dad5d2af51e6..6246664e6ecf0 100644
--- a/site/src/api/queries/organizations.ts
+++ b/site/src/api/queries/organizations.ts
@@ -341,19 +341,16 @@ export const organizationsPermissions = (
export const getOrganizationIdpSyncClaimFieldValuesKey = (
organization: string,
- claimField: string,
-) => [organization, claimField, "organizationIdpSyncClaimFieldValues"];
+ field: string,
+) => [organization, "idpSync", "fieldValues", field];
export const organizationIdpSyncClaimFieldValues = (
organization: string,
- claimField: string,
+ field: string,
) => {
return {
- queryKey: getOrganizationIdpSyncClaimFieldValuesKey(
- organization,
- claimField,
- ),
+ queryKey: getOrganizationIdpSyncClaimFieldValuesKey(organization, field),
queryFn: () =>
- API.getIdpSyncClaimFieldValuesByOrganization(organization, claimField),
+ API.getOrganizationIdpSyncClaimFieldValues(organization, field),
};
};
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index 144beb7501bf6..a08395985b938 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -414,7 +414,7 @@ const OrganizationRow: FC = ({
- {idpOrg}{" "}
+ {idpOrg}
{!exists && (
)}
From e55e0a8446e8323b993306678f4b09177be61c60 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 19:23:44 +0000
Subject: [PATCH 04/14] add warning description
---
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index a08395985b938..061a4ad4b1ba6 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -416,7 +416,16 @@ const OrganizationRow: FC = ({
{idpOrg}
{!exists && (
-
+
+
+
+
+
+ This value has not be seen in the specified claim field before.
+ You might want to check your IdP configuration and ensure that
+ this value is not misspelled.
+
+
)}
From 72a7986188cd139a9bc1c916c30f5c2fa92c27ab Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 20:07:31 +0000
Subject: [PATCH 05/14] toolptipp
---
.../components/Tooltip/Tooltip.stories.tsx | 16 ++++------
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 31 ++++++++++---------
2 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/site/src/components/Tooltip/Tooltip.stories.tsx b/site/src/components/Tooltip/Tooltip.stories.tsx
index 68561b6a189e3..9af79ca76c099 100644
--- a/site/src/components/Tooltip/Tooltip.stories.tsx
+++ b/site/src/components/Tooltip/Tooltip.stories.tsx
@@ -12,16 +12,12 @@ const meta: Meta = {
component: TooltipProvider,
args: {
children: (
- <>
-
-
-
-
-
- Add to library
-
-
- >
+
+
+
+
+ Add to library
+
),
},
};
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index 061a4ad4b1ba6..ebd9742f94688 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -29,10 +29,10 @@ import {
type Option,
} from "components/MultiSelectCombobox/MultiSelectCombobox";
import {
- Popover,
- PopoverContent,
- PopoverTrigger,
-} from "components/Popover/Popover";
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "components/Tooltip/Tooltip";
import { Spinner } from "components/Spinner/Spinner";
import { Switch } from "components/Switch/Switch";
import {
@@ -50,6 +50,7 @@ import { isUUID } from "utils/uuid";
import * as Yup from "yup";
import { OrganizationPills } from "./OrganizationPills";
import { Stack } from "components/Stack/Stack";
+import { TooltipProvider } from "@radix-ui/react-tooltip";
interface IdpSyncPageViewProps {
organizationSyncSettings: OrganizationSyncSettings | undefined;
@@ -416,16 +417,18 @@ const OrganizationRow: FC = ({
{idpOrg}
{!exists && (
-
-
-
-
-
- This value has not be seen in the specified claim field before.
- You might want to check your IdP configuration and ensure that
- this value is not misspelled.
-
-
+
+
+
+
+
+
+ This value has not be seen in the specified claim field
+ before. You might want to check your IdP configuration and
+ ensure that this value is not misspelled.
+
+
+
)}
From eedf797b1c32729e0993fca8126e20a7dcd9c741 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 20:10:26 +0000
Subject: [PATCH 06/14] tweak text colors
---
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index ebd9742f94688..979b1830d7d38 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -414,7 +414,12 @@ const OrganizationRow: FC = ({
return (
-
+
{idpOrg}
{!exists && (
From 06ba32deefe1e4ff24ef16df32b3394e67b0206d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=82=B1=E3=82=A4=E3=83=A9?=
Date: Thu, 6 Feb 2025 15:17:32 -0700
Subject: [PATCH 07/14] Update
site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
Co-authored-by: Jaayden Halko
---
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index 979b1830d7d38..fb64dbde04955 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -425,7 +425,7 @@ const OrganizationRow: FC = ({
-
+
This value has not be seen in the specified claim field
From 6ffcc94c9decc1a229948115e366866ab4283a29 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 22:23:48 +0000
Subject: [PATCH 08/14] - `toString()`
---
site/src/api/api.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/site/src/api/api.ts b/site/src/api/api.ts
index cbde6cd022924..5a314ddde151a 100644
--- a/site/src/api/api.ts
+++ b/site/src/api/api.ts
@@ -698,7 +698,7 @@ class ApiMethods {
}
const response = await this.axios.get(
- `/api/v2/organizations/${organization}/provisionerdaemons?${params.toString()}`,
+ `/api/v2/organizations/${organization}/provisionerdaemons?${params}`,
);
return response.data;
};
@@ -793,7 +793,7 @@ class ApiMethods {
const params = new URLSearchParams();
params.set("claimField", field);
const response = await this.axios.get(
- `/api/v2/settings/idpsync/field-values?${params.toString}`,
+ `/api/v2/settings/idpsync/field-values?${params}`,
);
return response.data;
};
@@ -805,7 +805,7 @@ class ApiMethods {
const params = new URLSearchParams();
params.set("claimField", field);
const response = await this.axios.get(
- `/api/v2/organizations/${organization}/settings/idpsync/field-values?${params.toString()}`,
+ `/api/v2/organizations/${organization}/settings/idpsync/field-values?${params}`,
);
return response.data;
};
From 506cca107cdde33dc90da80de45f854c19670641 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Thu, 6 Feb 2025 22:35:56 +0000
Subject: [PATCH 09/14] polish
---
.../IdpOrgSyncPage/IdpOrgSyncPageView.tsx | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
index fb64dbde04955..e0ce569b36592 100644
--- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.tsx
@@ -414,12 +414,7 @@ const OrganizationRow: FC = ({
return (
-
+
{idpOrg}
{!exists && (
@@ -427,7 +422,12 @@ const OrganizationRow: FC = ({
-
+
This value has not be seen in the specified claim field
before. You might want to check your IdP configuration and
ensure that this value is not misspelled.
@@ -435,7 +435,7 @@ const OrganizationRow: FC = ({
)}
-
+