From 55eb73cf08dfab2d718cf8a3980967a71f72cfab Mon Sep 17 00:00:00 2001 From: Jaanus Sellin Date: Tue, 25 Feb 2025 12:45:24 +0200 Subject: [PATCH] feat: now project moving is split into two events (#9358) When project is moved, then Unleash creates only one event, which is for target project. We also need one for source project, to know that project was moved out of it. Test will be in enterprise repo. --- .../delta/client-feature-toggle-delta.ts | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.ts b/src/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.ts index 4b743f30e5..9148907e88 100644 --- a/src/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.ts +++ b/src/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.ts @@ -1,10 +1,11 @@ -import type { - IEventStore, - IFeatureToggleDeltaQuery, - IFeatureToggleQuery, - IFlagResolver, - ISegmentReadModel, - IUnleashConfig, +import { + FEATURE_PROJECT_CHANGE, + type IEventStore, + type IFeatureToggleDeltaQuery, + type IFeatureToggleQuery, + type IFlagResolver, + type ISegmentReadModel, + type IUnleashConfig, } from '../../../types'; import type ConfigurationRevisionService from '../../feature-toggle/configuration-revision-service'; import { UPDATE_REVISION } from '../../feature-toggle/configuration-revision-service'; @@ -238,6 +239,16 @@ export class ClientFeatureToggleDelta extends EventEmitter { latestRevision, ); + const featuresMovedEvents = changeEvents + .filter((event) => event.featureName) + .filter((event) => event.type === FEATURE_PROJECT_CHANGE) + .map((event) => ({ + eventId: latestRevision, + type: DELTA_EVENT_TYPES.FEATURE_REMOVED, + featureName: event.featureName!, + project: event.data.oldProject, + })); + const featuresUpdated = [ ...new Set( changeEvents @@ -299,6 +310,7 @@ export class ClientFeatureToggleDelta extends EventEmitter { }), ); this.delta[environment].addEvents([ + ...featuresMovedEvents, ...featuresUpdatedEvents, ...featuresRemovedEvents, ...segmentsUpdatedEvents,