feat: add feature flag to activate Links field creation (#5535)
Related issue: #3607
This commit is contained in:
@ -4,4 +4,5 @@ export type FeatureFlagKey =
|
|||||||
| 'IS_EVENT_OBJECT_ENABLED'
|
| 'IS_EVENT_OBJECT_ENABLED'
|
||||||
| '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_LINKS_FIELD_ENABLED';
|
||||||
|
|||||||
@ -31,7 +31,9 @@ import { Section } from '@/ui/layout/section/components/Section';
|
|||||||
import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
|
import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
|
||||||
import { View } from '@/views/types/View';
|
import { View } from '@/views/types/View';
|
||||||
import { ViewType } from '@/views/types/ViewType';
|
import { ViewType } from '@/views/types/ViewType';
|
||||||
|
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
import { isDefined } from '~/utils/isDefined';
|
||||||
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
||||||
|
|
||||||
type SettingsDataModelNewFieldFormValues = z.infer<
|
type SettingsDataModelNewFieldFormValues = z.infer<
|
||||||
@ -109,6 +111,8 @@ export const SettingsObjectNewFieldStep2 = () => {
|
|||||||
const { createOneRelationMetadataItem: createOneRelationMetadata } =
|
const { createOneRelationMetadataItem: createOneRelationMetadata } =
|
||||||
useCreateOneRelationMetadataItem();
|
useCreateOneRelationMetadataItem();
|
||||||
|
|
||||||
|
const isLinksFieldEnabled = useIsFeatureEnabled('IS_LINKS_FIELD_ENABLED');
|
||||||
|
|
||||||
if (!activeObjectMetadataItem) return null;
|
if (!activeObjectMetadataItem) return null;
|
||||||
|
|
||||||
const canSave =
|
const canSave =
|
||||||
@ -263,16 +267,18 @@ export const SettingsObjectNewFieldStep2 = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const excludedFieldTypes: SettingsSupportedFieldType[] = [
|
const excludedFieldTypes: SettingsSupportedFieldType[] = (
|
||||||
FieldMetadataType.Email,
|
[
|
||||||
FieldMetadataType.FullName,
|
FieldMetadataType.Email,
|
||||||
FieldMetadataType.Link,
|
FieldMetadataType.FullName,
|
||||||
FieldMetadataType.Links,
|
FieldMetadataType.Link,
|
||||||
FieldMetadataType.Numeric,
|
isLinksFieldEnabled ? undefined : FieldMetadataType.Links,
|
||||||
FieldMetadataType.Probability,
|
FieldMetadataType.Numeric,
|
||||||
FieldMetadataType.Uuid,
|
FieldMetadataType.Probability,
|
||||||
FieldMetadataType.Phone,
|
FieldMetadataType.Uuid,
|
||||||
];
|
FieldMetadataType.Phone,
|
||||||
|
] as const
|
||||||
|
).filter(isDefined);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
// eslint-disable-next-line react/jsx-props-no-spreading
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
||||||
|
|||||||
@ -50,6 +50,12 @@ export const mockDefaultWorkspace: Workspace = {
|
|||||||
value: true,
|
value: true,
|
||||||
workspaceId: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6w',
|
workspaceId: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6w',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: '1492de61-5018-4368-8923-4f1eeaf988c7',
|
||||||
|
key: 'IS_LINKS_FIELD_ENABLED',
|
||||||
|
value: true,
|
||||||
|
workspaceId: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6w',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
createdAt: '2023-04-26T10:23:42.33625+00:00',
|
createdAt: '2023-04-26T10:23:42.33625+00:00',
|
||||||
updatedAt: '2023-04-26T10:23:42.33625+00:00',
|
updatedAt: '2023-04-26T10:23:42.33625+00:00',
|
||||||
|
|||||||
@ -45,6 +45,11 @@ export const seedFeatureFlags = async (
|
|||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: FeatureFlagKeys.IsLinksFieldEnabled,
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
])
|
])
|
||||||
.execute();
|
.execute();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -22,6 +22,7 @@ export enum FeatureFlagKeys {
|
|||||||
IsPostgreSQLIntegrationEnabled = 'IS_POSTGRESQL_INTEGRATION_ENABLED',
|
IsPostgreSQLIntegrationEnabled = 'IS_POSTGRESQL_INTEGRATION_ENABLED',
|
||||||
IsStripeIntegrationEnabled = 'IS_STRIPE_INTEGRATION_ENABLED',
|
IsStripeIntegrationEnabled = 'IS_STRIPE_INTEGRATION_ENABLED',
|
||||||
IsGmailSyncV2Enabled = 'IS_GMAIL_SYNC_V2_ENABLED',
|
IsGmailSyncV2Enabled = 'IS_GMAIL_SYNC_V2_ENABLED',
|
||||||
|
IsLinksFieldEnabled = 'IS_LINKS_FIELD_ENABLED',
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity({ name: 'featureFlag', schema: 'core' })
|
@Entity({ name: 'featureFlag', schema: 'core' })
|
||||||
|
|||||||
@ -59,6 +59,7 @@ export class AddStandardIdCommand extends CommandRunner {
|
|||||||
IS_POSTGRESQL_INTEGRATION_ENABLED: true,
|
IS_POSTGRESQL_INTEGRATION_ENABLED: true,
|
||||||
IS_STRIPE_INTEGRATION_ENABLED: false,
|
IS_STRIPE_INTEGRATION_ENABLED: false,
|
||||||
IS_GMAIL_SYNC_V2_ENABLED: true,
|
IS_GMAIL_SYNC_V2_ENABLED: true,
|
||||||
|
IS_LINKS_FIELD_ENABLED: true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
const standardFieldMetadataCollection = this.standardFieldFactory.create(
|
const standardFieldMetadataCollection = this.standardFieldFactory.create(
|
||||||
@ -74,6 +75,7 @@ export class AddStandardIdCommand extends CommandRunner {
|
|||||||
IS_POSTGRESQL_INTEGRATION_ENABLED: true,
|
IS_POSTGRESQL_INTEGRATION_ENABLED: true,
|
||||||
IS_STRIPE_INTEGRATION_ENABLED: false,
|
IS_STRIPE_INTEGRATION_ENABLED: false,
|
||||||
IS_GMAIL_SYNC_V2_ENABLED: true,
|
IS_GMAIL_SYNC_V2_ENABLED: true,
|
||||||
|
IS_LINKS_FIELD_ENABLED: true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user