Skip to content

Commit 55eb73c

Browse files
authored
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.
1 parent 42a05ef commit 55eb73c

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

src/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.ts

+19-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import type {
2-
IEventStore,
3-
IFeatureToggleDeltaQuery,
4-
IFeatureToggleQuery,
5-
IFlagResolver,
6-
ISegmentReadModel,
7-
IUnleashConfig,
1+
import {
2+
FEATURE_PROJECT_CHANGE,
3+
type IEventStore,
4+
type IFeatureToggleDeltaQuery,
5+
type IFeatureToggleQuery,
6+
type IFlagResolver,
7+
type ISegmentReadModel,
8+
type IUnleashConfig,
89
} from '../../../types';
910
import type ConfigurationRevisionService from '../../feature-toggle/configuration-revision-service';
1011
import { UPDATE_REVISION } from '../../feature-toggle/configuration-revision-service';
@@ -238,6 +239,16 @@ export class ClientFeatureToggleDelta extends EventEmitter {
238239
latestRevision,
239240
);
240241

242+
const featuresMovedEvents = changeEvents
243+
.filter((event) => event.featureName)
244+
.filter((event) => event.type === FEATURE_PROJECT_CHANGE)
245+
.map((event) => ({
246+
eventId: latestRevision,
247+
type: DELTA_EVENT_TYPES.FEATURE_REMOVED,
248+
featureName: event.featureName!,
249+
project: event.data.oldProject,
250+
}));
251+
241252
const featuresUpdated = [
242253
...new Set(
243254
changeEvents
@@ -299,6 +310,7 @@ export class ClientFeatureToggleDelta extends EventEmitter {
299310
}),
300311
);
301312
this.delta[environment].addEvents([
313+
...featuresMovedEvents,
302314
...featuresUpdatedEvents,
303315
...featuresRemovedEvents,
304316
...segmentsUpdatedEvents,

0 commit comments

Comments
 (0)