mirror of
https://github.com/lingble/twenty.git
synced 2025-11-01 05:07:56 +00:00
Test revert crm integration (#6321)
PR to test revert integration in production
This commit is contained in:
@@ -55,6 +55,7 @@ import { SettingsAccounts } from '~/pages/settings/accounts/SettingsAccounts';
|
|||||||
import { SettingsAccountsCalendars } from '~/pages/settings/accounts/SettingsAccountsCalendars';
|
import { SettingsAccountsCalendars } from '~/pages/settings/accounts/SettingsAccountsCalendars';
|
||||||
import { SettingsAccountsEmails } from '~/pages/settings/accounts/SettingsAccountsEmails';
|
import { SettingsAccountsEmails } from '~/pages/settings/accounts/SettingsAccountsEmails';
|
||||||
import { SettingsNewAccount } from '~/pages/settings/accounts/SettingsNewAccount';
|
import { SettingsNewAccount } from '~/pages/settings/accounts/SettingsNewAccount';
|
||||||
|
import { SettingsCRMMigration } from '~/pages/settings/crm-migration/SettingsCRMMigration';
|
||||||
import { SettingsNewObject } from '~/pages/settings/data-model/SettingsNewObject';
|
import { SettingsNewObject } from '~/pages/settings/data-model/SettingsNewObject';
|
||||||
import { SettingsObjectDetail } from '~/pages/settings/data-model/SettingsObjectDetail';
|
import { SettingsObjectDetail } from '~/pages/settings/data-model/SettingsObjectDetail';
|
||||||
import { SettingsObjectEdit } from '~/pages/settings/data-model/SettingsObjectEdit';
|
import { SettingsObjectEdit } from '~/pages/settings/data-model/SettingsObjectEdit';
|
||||||
@@ -81,6 +82,7 @@ import { SettingsWorkspace } from '~/pages/settings/SettingsWorkspace';
|
|||||||
import { SettingsWorkspaceMembers } from '~/pages/settings/SettingsWorkspaceMembers';
|
import { SettingsWorkspaceMembers } from '~/pages/settings/SettingsWorkspaceMembers';
|
||||||
import { Tasks } from '~/pages/tasks/Tasks';
|
import { Tasks } from '~/pages/tasks/Tasks';
|
||||||
import { getPageTitleFromPath } from '~/utils/title-utils';
|
import { getPageTitleFromPath } from '~/utils/title-utils';
|
||||||
|
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||||
|
|
||||||
const ProvidersThatNeedRouterContext = () => {
|
const ProvidersThatNeedRouterContext = () => {
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
@@ -125,7 +127,10 @@ const ProvidersThatNeedRouterContext = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const createRouter = (isBillingEnabled?: boolean) =>
|
const createRouter = (
|
||||||
|
isBillingEnabled?: boolean,
|
||||||
|
isCRMMigrationEnabled?: boolean,
|
||||||
|
) =>
|
||||||
createBrowserRouter(
|
createBrowserRouter(
|
||||||
createRoutesFromElements(
|
createRoutesFromElements(
|
||||||
<Route
|
<Route
|
||||||
@@ -222,6 +227,12 @@ const createRouter = (isBillingEnabled?: boolean) =>
|
|||||||
path={SettingsPath.Developers}
|
path={SettingsPath.Developers}
|
||||||
element={<SettingsDevelopers />}
|
element={<SettingsDevelopers />}
|
||||||
/>
|
/>
|
||||||
|
{isCRMMigrationEnabled && (
|
||||||
|
<Route
|
||||||
|
path={SettingsPath.CRMMigration}
|
||||||
|
element={<SettingsCRMMigration />}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<Route
|
<Route
|
||||||
path={AppPath.DevelopersCatchAll}
|
path={AppPath.DevelopersCatchAll}
|
||||||
element={
|
element={
|
||||||
@@ -292,6 +303,11 @@ const createRouter = (isBillingEnabled?: boolean) =>
|
|||||||
|
|
||||||
export const App = () => {
|
export const App = () => {
|
||||||
const billing = useRecoilValue(billingState);
|
const billing = useRecoilValue(billingState);
|
||||||
|
const isCRMMigrationEnabled = useIsFeatureEnabled('IS_CRM_MIGRATION_ENABLED');
|
||||||
|
|
||||||
return <RouterProvider router={createRouter(billing?.isBillingEnabled)} />;
|
return (
|
||||||
|
<RouterProvider
|
||||||
|
router={createRouter(billing?.isBillingEnabled, isCRMMigrationEnabled)}
|
||||||
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,11 +23,13 @@ import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/componen
|
|||||||
import { NavigationDrawerItemGroup } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItemGroup';
|
import { NavigationDrawerItemGroup } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItemGroup';
|
||||||
import { NavigationDrawerSection } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSection';
|
import { NavigationDrawerSection } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSection';
|
||||||
import { NavigationDrawerSectionTitle } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSectionTitle';
|
import { NavigationDrawerSectionTitle } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSectionTitle';
|
||||||
|
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||||
|
|
||||||
export const SettingsNavigationDrawerItems = () => {
|
export const SettingsNavigationDrawerItems = () => {
|
||||||
const { signOut } = useAuth();
|
const { signOut } = useAuth();
|
||||||
|
|
||||||
const billing = useRecoilValue(billingState);
|
const billing = useRecoilValue(billingState);
|
||||||
|
const isCRMMigrationEnabled = useIsFeatureEnabled('IS_CRM_MIGRATION_ENABLED');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -102,6 +104,13 @@ export const SettingsNavigationDrawerItems = () => {
|
|||||||
path={SettingsPath.Integrations}
|
path={SettingsPath.Integrations}
|
||||||
Icon={IconApps}
|
Icon={IconApps}
|
||||||
/>
|
/>
|
||||||
|
{isCRMMigrationEnabled && (
|
||||||
|
<SettingsNavigationDrawerItem
|
||||||
|
label="CRM Migration"
|
||||||
|
path={SettingsPath.CRMMigration}
|
||||||
|
Icon={IconCode}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</NavigationDrawerSection>
|
</NavigationDrawerSection>
|
||||||
|
|
||||||
<NavigationDrawerSection>
|
<NavigationDrawerSection>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export enum SettingsPath {
|
|||||||
NewObject = 'objects/new',
|
NewObject = 'objects/new',
|
||||||
WorkspaceMembersPage = 'workspace-members',
|
WorkspaceMembersPage = 'workspace-members',
|
||||||
Workspace = 'workspace',
|
Workspace = 'workspace',
|
||||||
|
CRMMigration = 'crm-migration',
|
||||||
Developers = 'developers',
|
Developers = 'developers',
|
||||||
DevelopersNewApiKey = 'api-keys/new',
|
DevelopersNewApiKey = 'api-keys/new',
|
||||||
DevelopersApiKeyDetail = 'api-keys/:apiKeyId',
|
DevelopersApiKeyDetail = 'api-keys/:apiKeyId',
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ export type FeatureFlagKey =
|
|||||||
| 'IS_AIRTABLE_INTEGRATION_ENABLED'
|
| 'IS_AIRTABLE_INTEGRATION_ENABLED'
|
||||||
| 'IS_POSTGRESQL_INTEGRATION_ENABLED'
|
| 'IS_POSTGRESQL_INTEGRATION_ENABLED'
|
||||||
| 'IS_STRIPE_INTEGRATION_ENABLED'
|
| 'IS_STRIPE_INTEGRATION_ENABLED'
|
||||||
| 'IS_COPILOT_ENABLED';
|
| 'IS_COPILOT_ENABLED'
|
||||||
|
| 'IS_CRM_MIGRATION_ENABLED';
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import React from 'react';
|
||||||
|
// @ts-expect-error external library has a typing issue
|
||||||
|
import { RevertConnect } from '@revertdotdev/revert-react';
|
||||||
|
import { IconSettings } from 'twenty-ui';
|
||||||
|
|
||||||
|
import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer';
|
||||||
|
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
||||||
|
import { SettingsReadDocumentationButton } from '@/settings/developers/components/SettingsReadDocumentationButton';
|
||||||
|
import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer';
|
||||||
|
import { Section } from '@/ui/layout/section/components/Section';
|
||||||
|
import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
|
||||||
|
import { useRecoilValue } from 'recoil';
|
||||||
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
||||||
|
|
||||||
|
const REVERT_PUBLIC_KEY = 'pk_live_a87fee8c-28c7-494f-99a3-996ff89f9918';
|
||||||
|
|
||||||
|
export const SettingsCRMMigration = () => {
|
||||||
|
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||||
|
return (
|
||||||
|
<SubMenuTopBarContainer Icon={IconSettings} title="Settings">
|
||||||
|
<SettingsPageContainer>
|
||||||
|
<SettingsHeaderContainer>
|
||||||
|
<Breadcrumb links={[{ children: 'Migrate' }]} />
|
||||||
|
<SettingsReadDocumentationButton />
|
||||||
|
</SettingsHeaderContainer>
|
||||||
|
<Section>
|
||||||
|
<RevertConnect
|
||||||
|
config={{
|
||||||
|
revertToken: REVERT_PUBLIC_KEY,
|
||||||
|
tenantId: currentWorkspace?.id,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Section>
|
||||||
|
</SettingsPageContainer>
|
||||||
|
</SubMenuTopBarContainer>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
"@nestjs/devtools-integration": "^0.1.6",
|
"@nestjs/devtools-integration": "^0.1.6",
|
||||||
"@nestjs/graphql": "patch:@nestjs/graphql@12.1.1#./patches/@nestjs+graphql+12.1.1.patch",
|
"@nestjs/graphql": "patch:@nestjs/graphql@12.1.1#./patches/@nestjs+graphql+12.1.1.patch",
|
||||||
"@ptc-org/nestjs-query-graphql": "patch:@ptc-org/nestjs-query-graphql@4.2.0#./patches/@ptc-org+nestjs-query-graphql+4.2.0.patch",
|
"@ptc-org/nestjs-query-graphql": "patch:@ptc-org/nestjs-query-graphql@4.2.0#./patches/@ptc-org+nestjs-query-graphql+4.2.0.patch",
|
||||||
|
"@revertdotdev/revert-react": "^0.0.21",
|
||||||
"cache-manager": "^5.4.0",
|
"cache-manager": "^5.4.0",
|
||||||
"cache-manager-redis-yet": "^4.1.2",
|
"cache-manager-redis-yet": "^4.1.2",
|
||||||
"class-validator": "patch:class-validator@0.14.0#./patches/class-validator+0.14.0.patch",
|
"class-validator": "patch:class-validator@0.14.0#./patches/class-validator+0.14.0.patch",
|
||||||
|
|||||||
11
yarn.lock
11
yarn.lock
@@ -12528,6 +12528,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@revertdotdev/revert-react@npm:^0.0.21":
|
||||||
|
version: 0.0.21
|
||||||
|
resolution: "@revertdotdev/revert-react@npm:0.0.21"
|
||||||
|
peerDependencies:
|
||||||
|
react: ">=16.x"
|
||||||
|
react-dom: ">=16.x"
|
||||||
|
checksum: bd97830487754511e544514e2cec8ca845005ce3a52a0ba7764038fd1d1e39834b3235b5c7e51366dbda4e928f37600ad6ae72df2f4d359e6f17f66db656fec4
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@rollup/pluginutils@npm:^4.1.2":
|
"@rollup/pluginutils@npm:^4.1.2":
|
||||||
version: 4.2.1
|
version: 4.2.1
|
||||||
resolution: "@rollup/pluginutils@npm:4.2.1"
|
resolution: "@rollup/pluginutils@npm:4.2.1"
|
||||||
@@ -49091,6 +49101,7 @@ __metadata:
|
|||||||
"@nestjs/graphql": "patch:@nestjs/graphql@12.1.1#./patches/@nestjs+graphql+12.1.1.patch"
|
"@nestjs/graphql": "patch:@nestjs/graphql@12.1.1#./patches/@nestjs+graphql+12.1.1.patch"
|
||||||
"@nx/js": "npm:18.3.3"
|
"@nx/js": "npm:18.3.3"
|
||||||
"@ptc-org/nestjs-query-graphql": "patch:@ptc-org/nestjs-query-graphql@4.2.0#./patches/@ptc-org+nestjs-query-graphql+4.2.0.patch"
|
"@ptc-org/nestjs-query-graphql": "patch:@ptc-org/nestjs-query-graphql@4.2.0#./patches/@ptc-org+nestjs-query-graphql+4.2.0.patch"
|
||||||
|
"@revertdotdev/revert-react": "npm:^0.0.21"
|
||||||
"@types/lodash.differencewith": "npm:^4.5.9"
|
"@types/lodash.differencewith": "npm:^4.5.9"
|
||||||
"@types/lodash.isempty": "npm:^4.4.7"
|
"@types/lodash.isempty": "npm:^4.4.7"
|
||||||
"@types/lodash.isequal": "npm:^4.5.8"
|
"@types/lodash.isequal": "npm:^4.5.8"
|
||||||
|
|||||||
Reference in New Issue
Block a user