From 92c44507f9b98dc0b70ac052d2a39e3f04693b3d Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 25 Jun 2024 17:26:26 -0700 Subject: [PATCH] feat/dotcom: show subscription UUID in Enterprise Portal format (#63482) The current "name" thing is not used anywhere for subscriptions - all internal capabilities and APIs depend use the UUID, and Enterprise Portal will use the UUID as well. This change replaces all name/IDs with the UUID, prefixed in Enterprise Portal format, as we prepare to launch Enterprise Portal in more places (such as Cody Analytics: https://linear.app/sourcegraph/issue/CORE-101). This is particularly relevant for Cody Analytics so I can document how to find the UUID in a way that isn't "get it from the URL". It's not super beautiful in the subscriptions list, but as we progress on the migration to Enterprise Portal I plan to replace the ID in the list with "Display name", which is a first-class citizen in Enterprise Portal. ## Test plan image ![image](https://github.com/sourcegraph/sourcegraph/assets/23356519/cca8e6d1-2e20-4954-8f72-7694ad1d8bfa) --- .../SiteAdminProductSubscriptionNode.tsx | 6 ++++-- .../SiteAdminProductSubscriptionPage.tsx | 6 +++--- .../site-admin/dotcom/productSubscriptions/utils.ts | 8 ++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionNode.tsx b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionNode.tsx index 501998c90e1..42ba4b9702b 100644 --- a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionNode.tsx +++ b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionNode.tsx @@ -8,6 +8,8 @@ import { AccountName } from '../../../dotcom/productSubscriptions/AccountName' import { ProductSubscriptionLabel } from '../../../dotcom/productSubscriptions/ProductSubscriptionLabel' import { ProductLicenseTags } from '../../../productSubscription/ProductLicenseTags' +import { enterprisePortalID } from './utils' + export const SiteAdminProductSubscriptionNodeHeader: React.FunctionComponent> = () => ( @@ -31,9 +33,9 @@ export const SiteAdminProductSubscriptionNode: React.FunctionComponent< React.PropsWithChildren > = ({ node }) => ( - + - {node.name} + {enterprisePortalID(node.uuid)} diff --git a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionPage.tsx b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionPage.tsx index 65a0f042771..67562ffa268 100644 --- a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionPage.tsx +++ b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/SiteAdminProductSubscriptionPage.tsx @@ -38,7 +38,7 @@ import { import { CodyServicesSection } from './CodyServicesSection' import { SiteAdminGenerateProductLicenseForSubscriptionForm } from './SiteAdminGenerateProductLicenseForSubscriptionForm' import { SiteAdminProductLicenseNode } from './SiteAdminProductLicenseNode' -import { accessTokenPath, errorForPath } from './utils' +import { accessTokenPath, errorForPath, enterprisePortalID } from './utils' interface Props extends TelemetryV2Props {} @@ -130,7 +130,7 @@ export const SiteAdminProductSubscriptionPage: React.FunctionComponent @@ -152,7 +152,7 @@ export const SiteAdminProductSubscriptionPage: React.FunctionComponent ID - {productSubscription.name} + {enterprisePortalID(subscriptionUUID)} Current Plan diff --git a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/utils.ts b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/utils.ts index 45238e34bad..6402a82da3e 100644 --- a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/utils.ts +++ b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/utils.ts @@ -42,3 +42,11 @@ export function errorForPath(error: ApolloError | undefined, path: (string | num export const accessTokenPath = ['dotcom', 'productSubscription', 'currentSourcegraphAccessToken'] export const numberFormatter = new Intl.NumberFormat() + +/** + * Prefixes the ID with subscriptionsv1.EnterpriseSubscriptionIDPrefix to get + * the Enterprise Portal external subscription UUID format. + */ +export function enterprisePortalID(id: string): string { + return `es_${id}` +}