Files
Automata/packages/editor-ui/src/stores/workflows.ee.store.ts
Csaba Tuncsik 596c472ecc feat: RBAC (#8922)
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Val <68596159+valya@users.noreply.github.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Danny Martini <despair.blue@gmail.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: oleg <me@olegivaniv.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
Co-authored-by: Elias Meire <elias@meire.dev>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Ayato Hayashi <go12limchangyong@gmail.com>
2024-05-17 10:53:15 +02:00

65 lines
2.1 KiB
TypeScript

import { setWorkflowSharedWith } from '@/api/workflows.ee';
import { EnterpriseEditionFeature, STORES } from '@/constants';
import { useRootStore } from '@/stores/n8nRoot.store';
import { useSettingsStore } from '@/stores/settings.store';
import { defineStore } from 'pinia';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { i18n } from '@/plugins/i18n';
import type { ProjectSharingData } from '@/features/projects/projects.types';
import { splitName } from '@/features/projects/projects.utils';
export const useWorkflowsEEStore = defineStore(STORES.WORKFLOWS_EE, {
state() {
return {};
},
getters: {
getWorkflowOwnerName() {
return (
workflowId: string,
fallback = i18n.baseText('workflows.shareModal.info.sharee.fallback'),
): string => {
const workflow = useWorkflowsStore().getWorkflowById(workflowId);
const { firstName, lastName, email } = splitName(workflow?.homeProject?.name ?? '');
return workflow?.homeProject?.name
? `${firstName} ${lastName ?? ''} ${email ? `(${email})` : ''}`
: fallback;
};
},
},
actions: {
setWorkflowSharedWith(payload: {
workflowId: string;
sharedWithProjects: ProjectSharingData[];
}): void {
const workflowsStore = useWorkflowsStore();
workflowsStore.workflowsById[payload.workflowId] = {
...workflowsStore.workflowsById[payload.workflowId],
sharedWithProjects: payload.sharedWithProjects,
};
workflowsStore.workflow = {
...workflowsStore.workflow,
sharedWithProjects: payload.sharedWithProjects,
};
},
async saveWorkflowSharedWith(payload: {
sharedWithProjects: ProjectSharingData[];
workflowId: string;
}): Promise<void> {
const rootStore = useRootStore();
const settingsStore = useSettingsStore();
if (settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.Sharing)) {
await setWorkflowSharedWith(rootStore.getRestApiContext, payload.workflowId, {
shareWithIds: payload.sharedWithProjects.map((p) => p.id),
});
this.setWorkflowSharedWith(payload);
}
},
},
});
export default useWorkflowsEEStore;