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>
65 lines
2.1 KiB
TypeScript
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;
|