Skip to content

Commit d95d8fb

Browse files
committed
fix: Update copyNodeEnabled type and ensure proper handling in thunks
1 parent 24623ee commit d95d8fb

5 files changed

Lines changed: 24 additions & 18 deletions

File tree

src/flowTypes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export interface Endpoints {
5353
validateMedia: string;
5454
interactives: string;
5555
sheets: string;
56-
copyNodeEnabled?: string | boolean;
56+
copyNodeEnabled?: string;
5757
}
5858

5959
export interface FlowEditorConfig {

src/store/__snapshots__/thunks.test.ts.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ Array [
369369
"segments": Object {},
370370
},
371371
"activityInterval": 60000,
372+
"copyNodeEnabled": false,
372373
"currentRevision": null,
373374
"debug": null,
374375
"dragActive": false,
@@ -409,6 +410,7 @@ Array [
409410
"segments": Object {},
410411
},
411412
"activityInterval": 60000,
413+
"copyNodeEnabled": false,
412414
"currentRevision": null,
413415
"debug": null,
414416
"dragActive": false,
@@ -1135,6 +1137,7 @@ Array [
11351137
"segments": Object {},
11361138
},
11371139
"activityInterval": 60000,
1140+
"copyNodeEnabled": false,
11381141
"currentRevision": null,
11391142
"debug": null,
11401143
"dragActive": false,

src/store/editor.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export interface EditorState {
8383
scrollToNode: string;
8484
scrollToAction: string;
8585
toast: ToastMessage | null;
86-
copyNodeEnabled?: boolean;
86+
copyNodeEnabled: boolean;
8787
}
8888

8989
export interface ModalMessage {
@@ -126,7 +126,8 @@ export const initialState: EditorState = {
126126

127127
scrollToNode: null,
128128
scrollToAction: null,
129-
toast: null
129+
toast: null,
130+
copyNodeEnabled: false
130131
};
131132

132133
// Action Creator

src/store/helpers.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -820,20 +820,20 @@ export const remapLocalization = (
820820
localization: LocalizationMap,
821821
uuidMap: Record<string, string>
822822
): LocalizationMap => {
823-
let changed = false;
824823
const result: LocalizationMap = {};
825824
Object.keys(localization).forEach(lang => {
826825
const langMap = localization[lang];
827-
const newLangMap: { [uuid: string]: any } = { ...langMap };
826+
const newLangMap: { [uuid: string]: any } = {};
828827
Object.keys(uuidMap).forEach(oldUUID => {
829828
if (langMap[oldUUID]) {
830829
newLangMap[uuidMap[oldUUID]] = langMap[oldUUID];
831-
changed = true;
832830
}
833831
});
834-
result[lang] = newLangMap;
832+
if (Object.keys(newLangMap).length > 0) {
833+
result[lang] = newLangMap;
834+
}
835835
});
836-
return changed ? result : localization;
836+
return result;
837837
};
838838

839839
export const extractLocalizationForNode = (

src/store/thunks.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -437,13 +437,15 @@ export const fetchFlow = (endpoints: Endpoints, uuid: string, forceSave = false)
437437

438438
if (endpoints.copyNodeEnabled) {
439439
axios
440-
.get(endpoints.copyNodeEnabled as string)
440+
.get(endpoints.copyNodeEnabled)
441441
.then((response: any) => {
442442
dispatch(mergeEditorState({ copyNodeEnabled: !!response.data?.is_enabled }));
443443
})
444444
.catch(() => {
445445
dispatch(mergeEditorState({ copyNodeEnabled: false }));
446446
});
447+
} else {
448+
dispatch(mergeEditorState({ copyNodeEnabled: false }));
447449
}
448450

449451
getFlowDetails(assetStore.revisions)
@@ -1257,7 +1259,8 @@ export const copyNode = (nodeUUID: string) => (
12571259
const primary = nodes[nodeUUID];
12581260
if (!primary) return;
12591261

1260-
let sourceLocalization = extractLocalizationForNode(definition.localization, primary);
1262+
const localization = definition?.localization || {};
1263+
let sourceLocalization = extractLocalizationForNode(localization, primary);
12611264

12621265
const payload: ClipboardPayload = {
12631266
primary,
@@ -1276,7 +1279,7 @@ export const copyNode = (nodeUUID: string) => (
12761279
};
12771280
sourceLocalization = mergeLocalizations(
12781281
sourceLocalization,
1279-
extractLocalizationForNode(definition.localization, paired)
1282+
extractLocalizationForNode(localization, paired)
12801283
);
12811284
payload.sourceLocalization = sourceLocalization;
12821285
}
@@ -1322,16 +1325,15 @@ export const pasteNode = (position: FlowPosition) => (
13221325
flowContext: { nodes, assetStore, definition }
13231326
} = getState();
13241327

1328+
const localization = definition?.localization || {};
1329+
13251330
const cloned = cloneNodeWithNewUUIDs(primary);
13261331
cloned.node = resolveResultNames(cloned.node, nodes);
13271332
cloned.ui = { ...cloned.ui, position };
13281333

13291334
const primaryUUIDMap = buildUUIDMap(primary, cloned);
1330-
const remappedPrimary = remapLocalization(
1331-
sourceLocalization || definition.localization,
1332-
primaryUUIDMap
1333-
);
1334-
let updatedLocalization = mergeLocalizations(definition.localization, remappedPrimary);
1335+
const remappedPrimary = remapLocalization(sourceLocalization || localization, primaryUUIDMap);
1336+
let updatedLocalization = mergeLocalizations(localization, remappedPrimary);
13351337

13361338
let updatedNodes = nodes;
13371339

@@ -1351,7 +1353,7 @@ export const pasteNode = (position: FlowPosition) => (
13511353
clonedPaired.inboundConnections = { [cloned.node.exits[0].uuid]: cloned.node.uuid };
13521354

13531355
const remappedPaired = remapLocalization(
1354-
sourceLocalization || definition.localization,
1356+
sourceLocalization || localization,
13551357
buildUUIDMap(paired, clonedPaired)
13561358
);
13571359
updatedLocalization = mergeLocalizations(updatedLocalization, remappedPaired);
@@ -1371,7 +1373,7 @@ export const pasteNode = (position: FlowPosition) => (
13711373
dispatch(updateAssets(mutators.addFlowResult(assetStore, cloned.node)));
13721374
}
13731375

1374-
if (updatedLocalization !== definition.localization) {
1376+
if (updatedLocalization !== localization) {
13751377
dispatch(updateDefinition({ ...definition, localization: updatedLocalization }));
13761378
}
13771379

0 commit comments

Comments
 (0)