From 900f70fb9e2b1c11fd425db16ee65aefe8dcdda7 Mon Sep 17 00:00:00 2001 From: martmull Date: Thu, 7 May 2026 11:02:04 +0200 Subject: [PATCH] Add description to oAuth_only app created (#20336) ## Before image ## After image image --- .../SettingsApplicationTableRow.tsx | 15 +++++++++- .../components/SettingsApplicationsTable.tsx | 29 ++++++++++++++----- .../application-oauth/oauth.service.ts | 3 +- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationTableRow.tsx b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationTableRow.tsx index 484c741f3f..3da8f46020 100644 --- a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationTableRow.tsx +++ b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationTableRow.tsx @@ -11,6 +11,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants'; import { getApplicationDescriptionSummary } from '~/pages/settings/applications/utils/getApplicationDescriptionSummary'; import { type ApplicationDisplayData } from '@/applications/types/applicationDisplayData.type'; import { StyledNameTableCell } from '@/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents'; +import { ApplicationRegistrationSourceType } from '~/generated-metadata/graphql'; export type SettingsApplicationTableRowProps = { action: ReactNode; @@ -19,16 +20,25 @@ export type SettingsApplicationTableRowProps = { }; hasUpdate?: boolean; link?: string; + sourceType?: ApplicationRegistrationSourceType; }; export const APPLICATION_TABLE_ROW_GRID_TEMPLATE_COLUMNS = - '164px minmax(0, 1fr) 36px'; + '164px 80px minmax(0, 1fr) 36px'; + +const SOURCE_TYPE_LABELS: Record = { + [ApplicationRegistrationSourceType.LOCAL]: 'Local', + [ApplicationRegistrationSourceType.NPM]: 'NPM', + [ApplicationRegistrationSourceType.OAUTH_ONLY]: 'OAuth', + [ApplicationRegistrationSourceType.TARBALL]: 'Tarball', +}; export const SettingsApplicationTableRow = ({ action, application, hasUpdate, link, + sourceType, }: SettingsApplicationTableRowProps) => { const resolvedDescription = useResolvedApplicationDescription(application); const descriptionSummary = @@ -43,6 +53,9 @@ export const SettingsApplicationTableRow = ({ + + {sourceType ? SOURCE_TYPE_LABELS[sourceType] : t`Seeded`} + {hasUpdate === true && ( diff --git a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationsTable.tsx b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationsTable.tsx index b231ef83ea..b8209cc5ab 100644 --- a/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationsTable.tsx +++ b/packages/twenty-front/src/pages/settings/applications/components/SettingsApplicationsTable.tsx @@ -38,13 +38,26 @@ export const SettingsApplicationsTable = ({ const [searchTerm, setSearchTerm] = useState(''); - const filteredApplications = applications.filter( - (application) => - application.name.toLowerCase().includes(searchTerm.toLowerCase()) || - (application.description ?? '') - .toLowerCase() - .includes(searchTerm.toLowerCase()), - ); + const filteredApplications = applications + .filter( + (application) => + application.name.toLowerCase().includes(searchTerm.toLowerCase()) || + (application.description ?? '') + .toLowerCase() + .includes(searchTerm.toLowerCase()), + ) + .sort((a, b) => { + const aIsOAuth = + a.applicationRegistration?.sourceType === + ApplicationRegistrationSourceType.OAUTH_ONLY; + const bIsOAuth = + b.applicationRegistration?.sourceType === + ApplicationRegistrationSourceType.OAUTH_ONLY; + + if (aIsOAuth === bIsOAuth) return 0; + + return aIsOAuth ? 1 : -1; + }); return (
@@ -64,6 +77,7 @@ export const SettingsApplicationsTable = ({ gridTemplateColumns={APPLICATION_TABLE_ROW_GRID_TEMPLATE_COLUMNS} > {t`Name`} + {t`Type`} {t`Description`} {''} @@ -88,6 +102,7 @@ export const SettingsApplicationsTable = ({ key={application.id} application={application} hasUpdate={hasUpdate} + sourceType={application.applicationRegistration?.sourceType} action={