mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
feat(editor): Migrate pinData mixin to usePinnedData composable (no-changelog) (#8207)
## Summary Required as part of NodeView refactoring: - Migrates `pinData` mixin to `usePinnedData` composable. - Adds `useActiveNode` and `useNodeType` composables ## Related tickets and issues https://linear.app/n8n/issue/N8N-6355/pindata ## Review / Merge checklist - [x] PR title and summary are descriptive. **Remember, the title automatically goes into the changelog. Use `(no-changelog)` otherwise.** ([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md)) - [x] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up ticket created. - [x] Tests included. > A bug is not considered fixed, unless a test is added to prevent it from happening again. > A feature is not complete without tests.
This commit is contained in:
@@ -193,7 +193,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineAsyncComponent, defineComponent, nextTick } from 'vue';
|
||||
import { mapStores } from 'pinia';
|
||||
import { mapStores, storeToRefs } from 'pinia';
|
||||
|
||||
import type {
|
||||
Endpoint,
|
||||
@@ -255,7 +255,6 @@ import { useMessage } from '@/composables/useMessage';
|
||||
import { useToast } from '@/composables/useToast';
|
||||
import { workflowHelpers } from '@/mixins/workflowHelpers';
|
||||
import { workflowRun } from '@/mixins/workflowRun';
|
||||
import { type PinDataSource, pinData } from '@/mixins/pinData';
|
||||
|
||||
import NodeDetailsView from '@/components/NodeDetailsView.vue';
|
||||
import ContextMenu from '@/components/ContextMenu/ContextMenu.vue';
|
||||
@@ -372,6 +371,7 @@ import { getConnectorPaintStyleData, OVERLAY_ENDPOINT_ARROW_ID } from '@/utils/n
|
||||
import { useViewStacks } from '@/components/Node/NodeCreator/composables/useViewStacks';
|
||||
import { useExternalHooks } from '@/composables/useExternalHooks';
|
||||
import { useClipboard } from '@/composables/useClipboard';
|
||||
import { usePinnedData } from '@/composables/usePinnedData';
|
||||
|
||||
interface AddNodeOptions {
|
||||
position?: XYPosition;
|
||||
@@ -394,7 +394,7 @@ export default defineComponent({
|
||||
CanvasControls,
|
||||
ContextMenu,
|
||||
},
|
||||
mixins: [genericHelpers, moveNodeWorkflow, workflowHelpers, workflowRun, debounceHelper, pinData],
|
||||
mixins: [genericHelpers, moveNodeWorkflow, workflowHelpers, workflowRun, debounceHelper],
|
||||
async beforeRouteLeave(to, from, next) {
|
||||
if (
|
||||
getNodeViewTab(to) === MAIN_HEADER_TABS.EXECUTIONS ||
|
||||
@@ -456,12 +456,15 @@ export default defineComponent({
|
||||
}
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const ndvStore = useNDVStore();
|
||||
const externalHooks = useExternalHooks();
|
||||
const locale = useI18n();
|
||||
const contextMenu = useContextMenu();
|
||||
const dataSchema = useDataSchema();
|
||||
const nodeHelpers = useNodeHelpers();
|
||||
const clipboard = useClipboard();
|
||||
const { activeNode } = storeToRefs(ndvStore);
|
||||
const pinnedData = usePinnedData(activeNode);
|
||||
|
||||
return {
|
||||
locale,
|
||||
@@ -470,6 +473,7 @@ export default defineComponent({
|
||||
nodeHelpers,
|
||||
externalHooks,
|
||||
clipboard,
|
||||
pinnedData,
|
||||
...useCanvasMouseSelect(),
|
||||
...useGlobalLinkActions(),
|
||||
...useTitleChange(),
|
||||
@@ -799,7 +803,7 @@ export default defineComponent({
|
||||
|
||||
setTimeout(() => {
|
||||
void this.usersStore.showPersonalizationSurvey();
|
||||
this.addPinDataConnections(this.workflowsStore.getPinData || ({} as IPinData));
|
||||
this.addPinDataConnections(this.workflowsStore.pinnedWorkflowData || ({} as IPinData));
|
||||
}, 0);
|
||||
});
|
||||
|
||||
@@ -1675,7 +1679,7 @@ export default defineComponent({
|
||||
this.nodeHelpers.disableNodes(nodes, true);
|
||||
},
|
||||
|
||||
togglePinNodes(nodes: INode[], source: PinDataSource) {
|
||||
togglePinNodes(nodes: INode[], source: 'keyboard-shortcut' | 'context-menu') {
|
||||
if (!this.editAllowedCheck()) {
|
||||
return;
|
||||
}
|
||||
@@ -1687,13 +1691,14 @@ export default defineComponent({
|
||||
);
|
||||
|
||||
for (const node of nodes) {
|
||||
const pinnedDataForNode = usePinnedData(node);
|
||||
if (nextStatePinned) {
|
||||
const dataToPin = this.dataSchema.getInputDataWithPinned(node);
|
||||
if (dataToPin.length !== 0) {
|
||||
this.setPinData(node, dataToPin, source);
|
||||
pinnedDataForNode.setData(dataToPin, source);
|
||||
}
|
||||
} else {
|
||||
this.unsetPinData(node, source);
|
||||
pinnedDataForNode.unsetData(source);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3769,7 +3774,7 @@ export default defineComponent({
|
||||
data: ITaskData[] | null;
|
||||
waiting: boolean;
|
||||
}) {
|
||||
const pinData = this.workflowsStore.getPinData;
|
||||
const pinData = this.workflowsStore.pinnedWorkflowData;
|
||||
|
||||
if (pinData?.[name]) return;
|
||||
|
||||
@@ -4394,7 +4399,8 @@ export default defineComponent({
|
||||
|
||||
const node = tempWorkflow.nodes[nodeNameTable[nodeName]];
|
||||
try {
|
||||
this.setPinData(node, data.pinData[nodeName], 'add-nodes');
|
||||
const pinnedDataForNode = usePinnedData(node);
|
||||
pinnedDataForNode.setData(data.pinData[nodeName], 'add-nodes');
|
||||
pinDataSuccess = true;
|
||||
} catch (error) {
|
||||
pinDataSuccess = false;
|
||||
|
||||
Reference in New Issue
Block a user