mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
refactor(editor): Migrate part of the vuex store to pinia (#4484)
* ✨ Added pinia support. Migrated community nodes module. * ✨ Added ui pinia store, moved some data from root store to it, updated modals to work with pinia stores * ✨ Added ui pinia store and migrated a part of the root store * ✨ Migrated `settings` store to pinia * ✨ Removing vuex store refs from router * ✨ Migrated `users` module to pinia store * ⚡ Fixing errors after sync with master * ⚡ One more error after merge * ⚡ Created `workflows` pinia store. Moved large part of root store to it. Started updating references. * ✨ Finished migrating workflows store to pinia * ⚡ Renaming some getters and actions to make more sense * ✨ Finished migrating the root store to pinia * ✨ Migrated ndv store to pinia * ⚡ Renaming main panel dimensions getter so it doesn't clash with data prop name * ✔️ Fixing lint errors * ✨ Migrated `templates` store to pinia * ✨ Migrated the `nodeTypes`store * ⚡ Removed unused pieces of code and oold vuex modules * ✨ Adding vuex calls to pinia store, fi xing wrong references * 💄 Removing leftover $store refs * ⚡ Added legacy getters and mutations to store to support webhooks * ⚡ Added missing front-end hooks, updated vuex state subscriptions to pinia * ✔️ Fixing linting errors * ⚡ Removing vue composition api plugin * ⚡ Fixing main sidebar state when loading node view * 🐛 Fixing an error when activating workflows * 🐛 Fixing isses with workflow settings and executions auto-refresh * 🐛 Removing duplicate listeners which cause import error * 🐛 Fixing route authentication * ⚡ Updating freshly pulled $store refs * Adding deleted const * ⚡ Updating store references in ee features. Reseting NodeView credentials update flag when resetting workspace * ⚡ Adding return type to email submission modal * ⚡ Making NodeView only react to paste event when active * 🐛 Fixing signup view errors * 👌 Addressing PR review comments * 👌 Addressing new PR comments * 👌 Updating invite id logic in signup view
This commit is contained in:
committed by
GitHub
parent
c2c7927414
commit
40e413d958
@@ -172,6 +172,12 @@ import { workflowHelpers } from '../mixins/workflowHelpers';
|
||||
import { nodeHelpers } from '../mixins/nodeHelpers';
|
||||
import { getAppNameFromNodeName } from '../helpers';
|
||||
import { isResourceLocatorValue } from '@/typeGuards';
|
||||
import { mapStores } from 'pinia';
|
||||
import { useUIStore } from '@/stores/ui';
|
||||
import { useWorkflowsStore } from '@/stores/workflows';
|
||||
import { useRootStore } from '@/stores/n8nRootStore';
|
||||
import { useNDVStore } from '@/stores/ndv';
|
||||
import { useNodeTypesStore } from '@/stores/nodeTypes';
|
||||
|
||||
interface IResourceLocatorQuery {
|
||||
results: INodeListSearchItems[];
|
||||
@@ -248,7 +254,6 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mainPanelMutationSubscription: () => {},
|
||||
showResourceDropdown: false,
|
||||
searchFilter: '',
|
||||
cachedResponses: {} as { [key: string]: IResourceLocatorQuery },
|
||||
@@ -257,13 +262,20 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapStores(
|
||||
useNodeTypesStore,
|
||||
useNDVStore,
|
||||
useRootStore,
|
||||
useUIStore,
|
||||
useWorkflowsStore,
|
||||
),
|
||||
appName(): string {
|
||||
if (!this.node) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const nodeType = this.$store.getters['nodeTypes/getNodeType'](this.node.type);
|
||||
return getAppNameFromNodeName(nodeType.displayName);
|
||||
const nodeType = this.nodeTypesStore.getNodeType(this.node.type);
|
||||
return getAppNameFromNodeName(nodeType?.displayName || '');
|
||||
},
|
||||
selectedMode(): string {
|
||||
if (typeof this.value !== 'object') { // legacy mode
|
||||
@@ -280,7 +292,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
return this.selectedMode === 'list';
|
||||
},
|
||||
hasCredential(): boolean {
|
||||
const node = this.$store.getters['ndv/activeNode'] as INodeUi | null;
|
||||
const node = this.ndvStore.activeNode;
|
||||
if (!node) {
|
||||
return false;
|
||||
}
|
||||
@@ -425,24 +437,21 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
mounted() {
|
||||
this.$on('refreshList', this.refreshList);
|
||||
window.addEventListener('resize', this.setWidth);
|
||||
this.mainPanelMutationSubscription = this.$store.subscribe(this.setWidthOnMainPanelResize);
|
||||
useNDVStore().$subscribe((mutation, state) => {
|
||||
// Update the width when main panel dimension change
|
||||
this.setWidth();
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.setWidth();
|
||||
}, 0);
|
||||
},
|
||||
beforeDestroy() {
|
||||
// Unsubscribe
|
||||
this.mainPanelMutationSubscription();
|
||||
window.removeEventListener('resize', this.setWidth);
|
||||
},
|
||||
methods: {
|
||||
setWidth() {
|
||||
this.width = (this.$refs.container as HTMLElement).offsetWidth;
|
||||
},
|
||||
setWidthOnMainPanelResize(mutation: { type: string }) {
|
||||
// Update the width when main panel dimension change
|
||||
if(mutation.type === 'ndv/setMainPanelDimensions') this.setWidth();
|
||||
},
|
||||
getLinkAlt(entity: string) {
|
||||
if (this.selectedMode === 'list' && entity) {
|
||||
return this.$locale.baseText('resourceLocator.openSpecificResource', { interpolate: { entity, appName: this.appName } });
|
||||
@@ -480,7 +489,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
return parameter.typeOptions[argumentName];
|
||||
},
|
||||
openCredential(): void {
|
||||
const node = this.$store.getters['ndv/activeNode'] as INodeUi | null;
|
||||
const node = this.ndvStore.activeNode;
|
||||
if (!node || !node.credentials) {
|
||||
return;
|
||||
}
|
||||
@@ -489,7 +498,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
return;
|
||||
}
|
||||
const id = node.credentials[credentialKey].id;
|
||||
this.$store.dispatch('ui/openExistingCredential', { id });
|
||||
this.uiStore.openExistingCredential(id);
|
||||
},
|
||||
findModeByName(name: string): INodePropertyMode | null {
|
||||
if (this.parameter.modes) {
|
||||
@@ -533,8 +542,8 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
},
|
||||
trackEvent(event: string, params?: {[key: string]: string}): void {
|
||||
this.$telemetry.track(event, {
|
||||
instance_id: this.$store.getters.instanceId,
|
||||
workflow_id: this.$store.getters.workflowId,
|
||||
instance_id: this.rootStore.instanceId,
|
||||
workflow_id: this.workflowsStore.workflowId,
|
||||
node_type: this.node && this.node.type,
|
||||
resource: this.node && this.node.parameters && this.node.parameters.resource,
|
||||
operation: this.node && this.node.parameters && this.node.parameters.operation,
|
||||
@@ -618,10 +627,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({
|
||||
...(paginationToken ? { paginationToken } : {}),
|
||||
};
|
||||
|
||||
const response: INodeListSearchResult = await this.$store.dispatch(
|
||||
'nodeTypes/getResourceLocatorResults',
|
||||
requestParams,
|
||||
);
|
||||
const response = await this.nodeTypesStore.getResourceLocatorResults(requestParams);
|
||||
|
||||
this.setResponse(paramsKey, {
|
||||
results: (cachedResponse ? cachedResponse.results : []).concat(response.results),
|
||||
|
||||
Reference in New Issue
Block a user