diff --git a/packages/twenty-front/src/App.tsx b/packages/twenty-front/src/App.tsx index 1725a277c..8abb8f973 100644 --- a/packages/twenty-front/src/App.tsx +++ b/packages/twenty-front/src/App.tsx @@ -20,7 +20,6 @@ import { ImpersonateEffect } from '~/pages/impersonate/ImpersonateEffect'; import { NotFound } from '~/pages/not-found/NotFound'; import { RecordIndexPage } from '~/pages/object-record/RecordIndexPage'; import { RecordShowPage } from '~/pages/object-record/RecordShowPage'; -import { Opportunities } from '~/pages/opportunities/Opportunities'; import { SettingsAccounts } from '~/pages/settings/accounts/SettingsAccounts'; import { SettingsAccountsCalendars } from '~/pages/settings/accounts/SettingsAccountsCalendars'; import { SettingsAccountsCalendarsSettings } from '~/pages/settings/accounts/SettingsAccountsCalendarsSettings'; @@ -47,9 +46,6 @@ import { SettingsWorkspaceMembers } from '~/pages/settings/SettingsWorkspaceMemb import { Tasks } from '~/pages/tasks/Tasks'; export const App = () => { - const isNewRecordBoardEnabled = useIsFeatureEnabled( - 'IS_NEW_RECORD_BOARD_ENABLED', - ); const isSelfBillingEnabled = useIsFeatureEnabled('IS_SELF_BILLING_ENABLED'); return ( @@ -79,13 +75,6 @@ export const App = () => { } /> } /> } /> - - {!isNewRecordBoardEnabled && ( - } - /> - )} } /> } /> diff --git a/packages/twenty-front/src/modules/settings/components/SettingsNavigationDrawerItems.tsx b/packages/twenty-front/src/modules/settings/components/SettingsNavigationDrawerItems.tsx index ef2ce10fb..90888ac86 100644 --- a/packages/twenty-front/src/modules/settings/components/SettingsNavigationDrawerItems.tsx +++ b/packages/twenty-front/src/modules/settings/components/SettingsNavigationDrawerItems.tsx @@ -34,7 +34,6 @@ export const SettingsNavigationDrawerItems = () => { }, [signOut, navigate]); const isCalendarEnabled = useIsFeatureEnabled('IS_CALENDAR_ENABLED'); - const isMessagingEnabled = useIsFeatureEnabled('IS_MESSAGING_ENABLED'); return ( <> @@ -51,30 +50,28 @@ export const SettingsNavigationDrawerItems = () => { Icon={IconColorSwatch} /> - {isMessagingEnabled && ( - - - - - - )} + + + + + diff --git a/packages/twenty-front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx b/packages/twenty-front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx index 0934aa7cd..883896744 100644 --- a/packages/twenty-front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx +++ b/packages/twenty-front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx @@ -20,7 +20,6 @@ import { import { TabList } from '@/ui/layout/tab/components/TabList'; import { useTabList } from '@/ui/layout/tab/hooks/useTabList'; import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; -import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; const StyledShowPageRightContainer = styled.div` display: flex; @@ -60,8 +59,6 @@ export const ShowPageRightContainer = ({ notes, emails, }: ShowPageRightContainerProps) => { - const isMessagingEnabled = useIsFeatureEnabled('IS_MESSAGING_ENABLED'); - const { getActiveTabIdState } = useTabList(TAB_LIST_COMPONENT_ID); const activeTabId = useRecoilValue(getActiveTabIdState()); @@ -107,7 +104,6 @@ export const ShowPageRightContainer = ({ title: 'Emails', Icon: IconMail, hide: !shouldDisplayEmailsTab, - disabled: !isMessagingEnabled, hasBetaPill: true, }, ]; diff --git a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts index 31e49745b..ad15dba8d 100644 --- a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts +++ b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts @@ -1,7 +1,5 @@ export type FeatureFlagKey = | 'IS_BLOCKLIST_ENABLED' | 'IS_CALENDAR_ENABLED' - | 'IS_MESSAGING_ENABLED' - | 'IS_NEW_RECORD_BOARD_ENABLED' | 'IS_QUICK_ACTIONS_ENABLED' | 'IS_SELF_BILLING_ENABLED'; diff --git a/packages/twenty-server/src/core/auth/controllers/google-gmail-auth.controller.ts b/packages/twenty-server/src/core/auth/controllers/google-gmail-auth.controller.ts index 5d489ed78..7fcfde1a7 100644 --- a/packages/twenty-server/src/core/auth/controllers/google-gmail-auth.controller.ts +++ b/packages/twenty-server/src/core/auth/controllers/google-gmail-auth.controller.ts @@ -37,14 +37,25 @@ export class GoogleGmailAuthController { const { workspaceMemberId, workspaceId } = await this.tokenService.verifyTransientToken(transientToken); - await this.googleGmailService.saveConnectedAccount({ - handle: email, - workspaceMemberId: workspaceMemberId, - workspaceId: workspaceId, - provider: 'gmail', - accessToken, - refreshToken, - }); + const demoWorkspaceIds = this.environmentService.getDemoWorkspaceIds(); + + if (demoWorkspaceIds.includes(workspaceId)) { + throw new Error('Cannot connect Gmail account to demo workspace'); + } + + if (!workspaceId) { + throw new Error('Workspace not found'); + } + + if (workspaceId) + await this.googleGmailService.saveConnectedAccount({ + handle: email, + workspaceMemberId: workspaceMemberId, + workspaceId: workspaceId, + provider: 'gmail', + accessToken, + refreshToken, + }); return res.redirect( `${this.environmentService.getFrontBaseUrl()}/settings/accounts`, diff --git a/packages/twenty-server/src/core/feature-flag/feature-flag.entity.ts b/packages/twenty-server/src/core/feature-flag/feature-flag.entity.ts index bfd042483..ac0eeee18 100644 --- a/packages/twenty-server/src/core/feature-flag/feature-flag.entity.ts +++ b/packages/twenty-server/src/core/feature-flag/feature-flag.entity.ts @@ -16,10 +16,7 @@ import { Workspace } from 'src/core/workspace/workspace.entity'; export enum FeatureFlagKeys { IsBlocklistEnabled = 'IS_BLOCKLIST_ENABLED', IsCalendarEnabled = 'IS_CALENDAR_ENABLED', - IsMessagingEnabled = 'IS_MESSAGING_ENABLED', - IsNewRecordBoardEnabled = 'IS_NEW_RECORD_BOARD_ENABLED', IsSelfBillingEnabled = 'IS_SELF_BILLING_ENABLED', - IsWorkspaceCleanable = 'IS_WORKSPACE_CLEANABLE', } @Entity({ name: 'featureFlag', schema: 'core' }) diff --git a/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts b/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts index b0bffd176..8b6e51cd5 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts @@ -1,28 +1,20 @@ import { DataSource } from 'typeorm'; -import { FeatureFlagKeys } from 'src/core/feature-flag/feature-flag.entity'; - const tableName = 'featureFlag'; -export const seedFeatureFlags = async ( - workspaceDataSource: DataSource, - schemaName: string, - workspaceId: string, -) => { - await workspaceDataSource - .createQueryBuilder() - .insert() - .into(`${schemaName}.${tableName}`, ['key', 'workspaceId', 'value']) - .orIgnore() - .values([ - { - key: FeatureFlagKeys.IsNewRecordBoardEnabled, - workspaceId: workspaceId, - value: false, - }, - ]) - .execute(); -}; +// export const seedFeatureFlags = async ( +// workspaceDataSource: DataSource, +// schemaName: string, +// workspaceId: string, +// ) => { +// await workspaceDataSource +// .createQueryBuilder() +// .insert() +// .into(`${schemaName}.${tableName}`, ['key', 'workspaceId', 'value']) +// .orIgnore() +// .values([]) +// .execute(); +// }; export const deleteFeatureFlags = async ( workspaceDataSource: DataSource, diff --git a/packages/twenty-server/src/database/typeorm-seeds/core/demo/index.ts b/packages/twenty-server/src/database/typeorm-seeds/core/demo/index.ts index 9494324e0..b99c71bea 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/core/demo/index.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/core/demo/index.ts @@ -8,10 +8,7 @@ import { seedWorkspaces, deleteWorkspaces, } from 'src/database/typeorm-seeds/core/demo/workspaces'; -import { - seedFeatureFlags, - deleteFeatureFlags, -} from 'src/database/typeorm-seeds/core/demo/feature-flags'; +import { deleteFeatureFlags } from 'src/database/typeorm-seeds/core/demo/feature-flags'; export const seedCoreSchema = async ( workspaceDataSource: DataSource, @@ -21,7 +18,6 @@ export const seedCoreSchema = async ( await seedWorkspaces(workspaceDataSource, schemaName, workspaceId); await seedUsers(workspaceDataSource, schemaName, workspaceId); - await seedFeatureFlags(workspaceDataSource, schemaName, workspaceId); }; export const deleteCoreSchema = async ( diff --git a/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts b/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts index 63e07708f..80a6ce941 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts @@ -20,26 +20,11 @@ export const seedFeatureFlags = async ( workspaceId: workspaceId, value: true, }, - { - key: FeatureFlagKeys.IsMessagingEnabled, - workspaceId: workspaceId, - value: true, - }, { key: FeatureFlagKeys.IsBlocklistEnabled, workspaceId: workspaceId, value: true, }, - { - key: FeatureFlagKeys.IsWorkspaceCleanable, - workspaceId: workspaceId, - value: true, - }, - { - key: FeatureFlagKeys.IsNewRecordBoardEnabled, - workspaceId: workspaceId, - value: true, - }, ]) .execute(); }; diff --git a/packages/twenty-server/src/integrations/message-queue/jobs.module.ts b/packages/twenty-server/src/integrations/message-queue/jobs.module.ts index 036f41a50..c59b21eaf 100644 --- a/packages/twenty-server/src/integrations/message-queue/jobs.module.ts +++ b/packages/twenty-server/src/integrations/message-queue/jobs.module.ts @@ -16,7 +16,6 @@ import { GmailPartialSyncJob } from 'src/workspace/messaging/jobs/gmail-partial- import { EmailSenderJob } from 'src/integrations/email/email-sender.job'; import { UserModule } from 'src/core/user/user.module'; import { EnvironmentModule } from 'src/integrations/environment/environment.module'; -import { FeatureFlagEntity } from 'src/core/feature-flag/feature-flag.entity'; import { FetchAllWorkspacesMessagesJob } from 'src/workspace/messaging/commands/crons/fetch-all-workspaces-messages.job'; import { ConnectedAccountModule } from 'src/workspace/messaging/repositories/connected-account/connected-account.module'; import { MatchMessageParticipantJob } from 'src/workspace/messaging/jobs/match-message-participant.job'; @@ -28,6 +27,7 @@ import { DataSeedDemoWorkspaceModule } from 'src/database/commands/data-seed-dem import { DataSeedDemoWorkspaceJob } from 'src/database/commands/data-seed-demo-workspace/jobs/data-seed-demo-workspace.job'; import { DeleteConnectedAccountAssociatedDataJob } from 'src/workspace/messaging/jobs/delete-connected-acount-associated-data.job'; import { ThreadCleanerModule } from 'src/workspace/messaging/services/thread-cleaner/thread-cleaner.module'; +import { Workspace } from 'src/core/workspace/workspace.entity'; @Module({ imports: [ @@ -40,7 +40,7 @@ import { ThreadCleanerModule } from 'src/workspace/messaging/services/thread-cle UserModule, EnvironmentModule, TypeORMModule, - TypeOrmModule.forFeature([FeatureFlagEntity], 'core'), + TypeOrmModule.forFeature([Workspace], 'core'), ConnectedAccountModule, MessageParticipantModule, CreateCompaniesAndContactsModule, diff --git a/packages/twenty-server/src/workspace/messaging/commands/crons/fetch-all-workspaces-messages.job.ts b/packages/twenty-server/src/workspace/messaging/commands/crons/fetch-all-workspaces-messages.job.ts index 50b1c1820..407095009 100644 --- a/packages/twenty-server/src/workspace/messaging/commands/crons/fetch-all-workspaces-messages.job.ts +++ b/packages/twenty-server/src/workspace/messaging/commands/crons/fetch-all-workspaces-messages.job.ts @@ -5,10 +5,6 @@ import { Repository } from 'typeorm'; import { MessageQueueJob } from 'src/integrations/message-queue/interfaces/message-queue-job.interface'; -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service'; import { ConnectedAccountService } from 'src/workspace/messaging/repositories/connected-account/connected-account.service'; @@ -16,29 +12,29 @@ import { GmailPartialSyncJobData, GmailPartialSyncJob, } from 'src/workspace/messaging/jobs/gmail-partial-sync.job'; +import { Workspace } from 'src/core/workspace/workspace.entity'; @Injectable() export class FetchAllWorkspacesMessagesJob implements MessageQueueJob { constructor( - @InjectRepository(FeatureFlagEntity, 'core') - private readonly featureFlagRepository: Repository, + @InjectRepository(Workspace, 'core') + private readonly workspaceRepository: Repository, @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, private readonly connectedAccountService: ConnectedAccountService, ) {} async handle(): Promise { - const featureFlagsWithMessagingEnabled = - await this.featureFlagRepository.findBy({ - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - }); - - const workspaceIds = featureFlagsWithMessagingEnabled.map( - (featureFlag) => featureFlag.workspaceId, - ); + const workspaceIds = ( + await this.workspaceRepository.find({ + where: { + subscriptionStatus: 'active', + }, + select: ['id'], + }) + ).map((workspace) => workspace.id); for (const workspaceId of workspaceIds) { await this.fetchWorkspaceMessages(workspaceId); diff --git a/packages/twenty-server/src/workspace/messaging/commands/gmail-full-sync.command.ts b/packages/twenty-server/src/workspace/messaging/commands/gmail-full-sync.command.ts index eec592563..586570070 100644 --- a/packages/twenty-server/src/workspace/messaging/commands/gmail-full-sync.command.ts +++ b/packages/twenty-server/src/workspace/messaging/commands/gmail-full-sync.command.ts @@ -1,13 +1,7 @@ -import { InjectRepository } from '@nestjs/typeorm'; import { Inject } from '@nestjs/common'; import { Command, CommandRunner, Option } from 'nest-commander'; -import { Repository } from 'typeorm'; -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service'; import { @@ -26,8 +20,6 @@ interface GmailFullSyncOptions { }) export class GmailFullSyncCommand extends CommandRunner { constructor( - @InjectRepository(FeatureFlagEntity, 'core') - private readonly featureFlagRepository: Repository, @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, private readonly connectedAccountService: ConnectedAccountService, @@ -39,16 +31,6 @@ export class GmailFullSyncCommand extends CommandRunner { _passedParam: string[], options: GmailFullSyncOptions, ): Promise { - const isMessagingEnabled = await this.featureFlagRepository.findOneBy({ - workspaceId: options.workspaceId, - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - }); - - if (!isMessagingEnabled) { - throw new Error('Messaging is not enabled for this workspace'); - } - await this.fetchWorkspaceMessages(options.workspaceId); return; diff --git a/packages/twenty-server/src/workspace/messaging/commands/gmail-partial-sync.command.ts b/packages/twenty-server/src/workspace/messaging/commands/gmail-partial-sync.command.ts index cdf7e4ef3..b911f6122 100644 --- a/packages/twenty-server/src/workspace/messaging/commands/gmail-partial-sync.command.ts +++ b/packages/twenty-server/src/workspace/messaging/commands/gmail-partial-sync.command.ts @@ -1,13 +1,7 @@ -import { InjectRepository } from '@nestjs/typeorm'; import { Inject } from '@nestjs/common'; import { Command, CommandRunner, Option } from 'nest-commander'; -import { Repository } from 'typeorm'; -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service'; import { @@ -26,8 +20,6 @@ interface GmailPartialSyncOptions { }) export class GmailPartialSyncCommand extends CommandRunner { constructor( - @InjectRepository(FeatureFlagEntity, 'core') - private readonly featureFlagRepository: Repository, @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, private readonly connectedAccountService: ConnectedAccountService, @@ -39,16 +31,6 @@ export class GmailPartialSyncCommand extends CommandRunner { _passedParam: string[], options: GmailPartialSyncOptions, ): Promise { - const isMessagingEnabled = await this.featureFlagRepository.findOneBy({ - workspaceId: options.workspaceId, - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - }); - - if (!isMessagingEnabled) { - throw new Error('Messaging is not enabled for this workspace'); - } - await this.fetchWorkspaceMessages(options.workspaceId); return; diff --git a/packages/twenty-server/src/workspace/messaging/listeners/messaging-person.listener.ts b/packages/twenty-server/src/workspace/messaging/listeners/messaging-person.listener.ts index afb37a290..43c7fe3c0 100644 --- a/packages/twenty-server/src/workspace/messaging/listeners/messaging-person.listener.ts +++ b/packages/twenty-server/src/workspace/messaging/listeners/messaging-person.listener.ts @@ -1,13 +1,6 @@ import { Inject, Injectable } from '@nestjs/common'; import { OnEvent } from '@nestjs/event-emitter'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; - -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; import { ObjectRecordCreateEvent } from 'src/integrations/event-emitter/types/object-record-create.event'; import { ObjectRecordUpdateEvent } from 'src/integrations/event-emitter/types/object-record-update.event'; import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/integrations/event-emitter/utils/object-record-changed-properties.util'; @@ -24,8 +17,6 @@ export class MessagingPersonListener { constructor( @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, - @InjectRepository(FeatureFlagEntity, 'core') - private readonly featureFlagRepository: Repository, ) {} @OnEvent('person.created') @@ -36,16 +27,6 @@ export class MessagingPersonListener { return; } - const messagingFeatureFlag = await this.featureFlagRepository.findOneBy({ - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - workspaceId: payload.workspaceId, - }); - - if (!messagingFeatureFlag || !messagingFeatureFlag.value) { - return; - } - this.messageQueueService.add( MatchMessageParticipantJob.name, { @@ -60,21 +41,11 @@ export class MessagingPersonListener { async handleUpdatedEvent( payload: ObjectRecordUpdateEvent, ) { - const messagingFeatureFlag = await this.featureFlagRepository.findOneBy({ - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - workspaceId: payload.workspaceId, - }); - - const isMessagingEnabled = - messagingFeatureFlag && messagingFeatureFlag.value; - if ( objectRecordUpdateEventChangedProperties( payload.previousRecord, payload.updatedRecord, - ).includes('email') && - isMessagingEnabled + ).includes('email') ) { this.messageQueueService.add( MatchMessageParticipantJob.name, diff --git a/packages/twenty-server/src/workspace/messaging/listeners/messaging-workspace-member.listener.ts b/packages/twenty-server/src/workspace/messaging/listeners/messaging-workspace-member.listener.ts index d8e8d3f83..78cfbc83c 100644 --- a/packages/twenty-server/src/workspace/messaging/listeners/messaging-workspace-member.listener.ts +++ b/packages/twenty-server/src/workspace/messaging/listeners/messaging-workspace-member.listener.ts @@ -4,10 +4,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; +import { FeatureFlagEntity } from 'src/core/feature-flag/feature-flag.entity'; import { ObjectRecordCreateEvent } from 'src/integrations/event-emitter/types/object-record-create.event'; import { ObjectRecordUpdateEvent } from 'src/integrations/event-emitter/types/object-record-update.event'; import { objectRecordChangedProperties as objectRecordUpdateEventChangedProperties } from 'src/integrations/event-emitter/utils/object-record-changed-properties.util'; @@ -36,16 +33,6 @@ export class MessagingWorkspaceMemberListener { return; } - const messagingFeatureFlag = await this.featureFlagRepository.findOneBy({ - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - workspaceId: payload.workspaceId, - }); - - if (!messagingFeatureFlag || !messagingFeatureFlag.value) { - return; - } - this.messageQueueService.add( MatchMessageParticipantJob.name, { @@ -60,21 +47,11 @@ export class MessagingWorkspaceMemberListener { async handleUpdatedEvent( payload: ObjectRecordUpdateEvent, ) { - const messagingFeatureFlag = await this.featureFlagRepository.findOneBy({ - key: FeatureFlagKeys.IsMessagingEnabled, - value: true, - workspaceId: payload.workspaceId, - }); - - const isMessagingEnabled = - messagingFeatureFlag && messagingFeatureFlag.value; - if ( objectRecordUpdateEventChangedProperties( payload.previousRecord, payload.updatedRecord, - ).includes('userEmail') && - isMessagingEnabled + ).includes('userEmail') ) { this.messageQueueService.add( MatchMessageParticipantJob.name, diff --git a/packages/twenty-server/src/workspace/workspace-cleaner/crons/clean-inactive-workspace.job.ts b/packages/twenty-server/src/workspace/workspace-cleaner/crons/clean-inactive-workspace.job.ts index 023ce97b6..026d16c8e 100644 --- a/packages/twenty-server/src/workspace/workspace-cleaner/crons/clean-inactive-workspace.job.ts +++ b/packages/twenty-server/src/workspace/workspace-cleaner/crons/clean-inactive-workspace.job.ts @@ -1,8 +1,7 @@ import { Injectable, Logger } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; import { render } from '@react-email/render'; -import { In, Repository } from 'typeorm'; +import { In } from 'typeorm'; import { CleanInactiveWorkspaceEmail, DeleteInactiveWorkspaceEmail, @@ -17,10 +16,6 @@ import { DataSourceEntity } from 'src/metadata/data-source/data-source.entity'; import { UserService } from 'src/core/user/services/user.service'; import { EmailService } from 'src/integrations/email/email.service'; import { EnvironmentService } from 'src/integrations/environment/environment.service'; -import { - FeatureFlagEntity, - FeatureFlagKeys, -} from 'src/core/feature-flag/feature-flag.entity'; import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util'; import { CleanInactiveWorkspacesCommandOptions } from 'src/workspace/workspace-cleaner/commands/clean-inactive-workspaces.command'; @@ -48,8 +43,6 @@ export class CleanInactiveWorkspaceJob private readonly userService: UserService, private readonly emailService: EmailService, private readonly environmentService: EnvironmentService, - @InjectRepository(FeatureFlagEntity, 'core') - private readonly featureFlagRepository: Repository, ) { this.inactiveDaysBeforeDelete = this.environmentService.getInactiveDaysBeforeDelete(); @@ -149,20 +142,6 @@ export class CleanInactiveWorkspaceJob }); } - async isWorkspaceCleanable(dataSource: DataSourceEntity): Promise { - const workspaceFeatureFlags = await this.featureFlagRepository.find({ - where: { workspaceId: dataSource.workspaceId }, - }); - - return ( - workspaceFeatureFlags.filter( - (workspaceFeatureFlag) => - workspaceFeatureFlag.key === FeatureFlagKeys.IsWorkspaceCleanable && - workspaceFeatureFlag.value, - ).length > 0 - ); - } - chunkArray(array: any[], chunkSize = 6): any[][] { const chunkedArray: any[][] = []; let index = 0; @@ -241,15 +220,6 @@ export class CleanInactiveWorkspaceJob }); for (const dataSource of dataSourcesChunk) { - if (!(await this.isWorkspaceCleanable(dataSource))) { - this.logger.log( - `${getDryRunLogHeader(isDryRun)}Workspace ${ - dataSource.workspaceId - } not cleanable`, - ); - continue; - } - this.logger.log( `${getDryRunLogHeader(isDryRun)}Cleaning Workspace ${ dataSource.workspaceId