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 (
);
case 'oauth':
return (
);
case 'distribution':
return (
);
case 'general':
default:
return (
);
}
};
return (
{renderActiveTabContent()}
);
};