Add description to oAuth_only app created (#20336)

## Before

<img width="1000" height="555" alt="image"
src="https://github.com/user-attachments/assets/bda317c7-93e7-448e-8e65-a9cc1be6df95"
/>

## After
<img width="1010" height="504" alt="image"
src="https://github.com/user-attachments/assets/5cbc5c6c-5cc3-40d8-9545-ba0f3d2675b4"
/>
<img width="980" height="574" alt="image"
src="https://github.com/user-attachments/assets/4386fe56-0614-4a4e-82a0-c9f46af69c85"
/>
This commit is contained in:
martmull
2026-05-07 11:02:04 +02:00
committed by GitHub
parent 027331c893
commit 900f70fb9e
3 changed files with 38 additions and 9 deletions
@@ -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, string> = {
[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 = ({
<StyledNameTableCell minWidth="0" overflow="hidden">
<ApplicationDisplay application={application} />
</StyledNameTableCell>
<TableCell color={themeCssVariables.font.color.tertiary}>
{sourceType ? SOURCE_TYPE_LABELS[sourceType] : t`Seeded`}
</TableCell>
<TableCell gap={themeCssVariables.spacing[2]} minWidth="0">
<OverflowingTextWithTooltip text={descriptionSummary} />
{hasUpdate === true && (
@@ -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 (
<Section>
@@ -64,6 +77,7 @@ export const SettingsApplicationsTable = ({
gridTemplateColumns={APPLICATION_TABLE_ROW_GRID_TEMPLATE_COLUMNS}
>
<TableHeader> {t`Name`}</TableHeader>
<TableHeader> {t`Type`}</TableHeader>
<TableHeader> {t`Description`}</TableHeader>
<TableHeader> {''}</TableHeader>
<TableHeader />
@@ -88,6 +102,7 @@ export const SettingsApplicationsTable = ({
key={application.id}
application={application}
hasUpdate={hasUpdate}
sourceType={application.applicationRegistration?.sourceType}
action={
<IconChevronRight
size={theme.icon.size.md}
@@ -586,7 +586,8 @@ export class OAuthService {
return this.applicationService.create({
universalIdentifier: applicationRegistration.universalIdentifier,
name: applicationRegistration.name,
version: '0.0.0',
description: `OAuth application registered as "${applicationRegistration.name}"`,
version: applicationRegistration.latestAvailableVersion ?? '1.0.0',
sourcePath: 'oauth-install',
applicationRegistrationId: applicationRegistration.id,
workspaceId,