mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 21:47:38 +00:00
115 lines
3.9 KiB
TypeScript
115 lines
3.9 KiB
TypeScript
import { useParams } from 'react-router-dom';
|
|
import { useQuery } from '@apollo/client/react';
|
|
import { FindOneAdminApplicationRegistrationDocument } from '~/generated-metadata/graphql';
|
|
import { getSettingsPath, isDefined } from 'twenty-shared/utils';
|
|
import { SettingsPath } from 'twenty-shared/types';
|
|
import { useLingui } from '@lingui/react/macro';
|
|
import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer';
|
|
import { APPLICATION_REGISTRATION_ADMIN_PATH } from '@/settings/admin-panel/apps/constants/ApplicationRegistrationAdminPath';
|
|
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
|
import {
|
|
IconInfoCircle,
|
|
IconKey,
|
|
IconSettings,
|
|
IconWorld,
|
|
} from 'twenty-ui/display';
|
|
import { SettingsApplicationRegistrationConfigTab } from '~/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab';
|
|
import { SettingsApplicationRegistrationOAuthTab } from '~/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab';
|
|
import { SettingsApplicationRegistrationDistributionTab } from '~/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab';
|
|
import { SettingsApplicationRegistrationGeneralTab } from '~/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab';
|
|
import { TabList } from '@/ui/layout/tab-list/components/TabList';
|
|
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
|
|
import { activeTabIdComponentState } from '@/ui/layout/tab-list/states/activeTabIdComponentState';
|
|
|
|
const REGISTRATION_DETAIL_TAB_LIST_ID =
|
|
'admin-application-registration-detail-tab-list';
|
|
|
|
export const SettingsAdminApplicationRegistrationDetail = () => {
|
|
const { t } = useLingui();
|
|
|
|
const activeTabId = useAtomComponentStateValue(
|
|
activeTabIdComponentState,
|
|
REGISTRATION_DETAIL_TAB_LIST_ID,
|
|
);
|
|
|
|
const { applicationUniversalIdentifier = '' } = useParams<{
|
|
applicationUniversalIdentifier: string;
|
|
}>();
|
|
|
|
const { data, loading } = useQuery(
|
|
FindOneAdminApplicationRegistrationDocument,
|
|
{
|
|
variables: { id: applicationUniversalIdentifier },
|
|
skip: !applicationUniversalIdentifier,
|
|
},
|
|
);
|
|
|
|
const registration = data?.findOneAdminApplicationRegistration;
|
|
|
|
if (loading || !isDefined(registration)) {
|
|
return null;
|
|
}
|
|
|
|
const tabs = [
|
|
{ id: 'general', title: t`General`, Icon: IconInfoCircle },
|
|
{ id: 'oauth', title: t`OAuth`, Icon: IconKey },
|
|
{ id: 'distribution', title: t`Distribution`, Icon: IconWorld },
|
|
{ id: 'config', title: t`Config`, Icon: IconSettings },
|
|
];
|
|
|
|
const renderActiveTabContent = () => {
|
|
switch (activeTabId) {
|
|
case 'config':
|
|
return (
|
|
<SettingsApplicationRegistrationConfigTab
|
|
registration={registration}
|
|
/>
|
|
);
|
|
case 'oauth':
|
|
return (
|
|
<SettingsApplicationRegistrationOAuthTab
|
|
registration={registration}
|
|
/>
|
|
);
|
|
case 'distribution':
|
|
return (
|
|
<SettingsApplicationRegistrationDistributionTab
|
|
registration={registration}
|
|
/>
|
|
);
|
|
case 'general':
|
|
default:
|
|
return (
|
|
<SettingsApplicationRegistrationGeneralTab
|
|
registration={registration}
|
|
displayAdminToggles
|
|
/>
|
|
);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<SubMenuTopBarContainer
|
|
title={registration.name}
|
|
links={[
|
|
{
|
|
children: t`Other`,
|
|
href: getSettingsPath(SettingsPath.AdminPanel),
|
|
},
|
|
{
|
|
children: t`Admin Panel - Apps`,
|
|
href: APPLICATION_REGISTRATION_ADMIN_PATH,
|
|
},
|
|
{ children: registration.name },
|
|
]}
|
|
>
|
|
<SettingsPageContainer>
|
|
<TabList
|
|
tabs={tabs}
|
|
componentInstanceId={REGISTRATION_DETAIL_TAB_LIST_ID}
|
|
/>
|
|
{renderActiveTabContent()}
|
|
</SettingsPageContainer>
|
|
</SubMenuTopBarContainer>
|
|
);
|
|
};
|