refactor: Workflow sharing bug bash fixes (#4888)
* fix: Prevent workflows with only manual trigger from being activated * fix: Fix workflow id when sharing from workflows list * fix: Update sharing modal translations * fix: Allow sharees to disable workflows and fix issue with unique key when removing a user * refactor: Improve error messages and change logging level to be less verbose * fix: Broken user removal transfer issue * feat: Implement workflow sharing BE telemetry * chore: temporarily add sharing env vars * feat: Implement BE telemetry for workflow sharing * fix: Prevent issues with possibly missing workflow id * feat: Replace WorkflowSharing flag references (no-changelog) (#4918) * ci: Block all external network calls in tests (no-changelog) (#4930) * setup nock to prevent tests from making any external requests * mock all calls to posthog sdk * feat: Replace WorkflowSharing flag references (no-changelog) Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com> * refactor: Remove temporary feature flag for workflow sharing * refactor: add sharing_role to both manual and node executions * refactor: Allow changing name, position and disabled of read only nodes * feat: Overhaul dynamic translations for local and cloud (#4943) * feat: Overhaul dynamic translations for local and cloud * fix: remove type casting * chore: remove unused translations * fix: fix workflow sharing translation * test: Fix broken test * refactor: remove unnecessary import * refactor: Minor code improvements * refactor: rename dynamicTranslations to contextBasedTranslationKeys * fix: fix type imports * refactor: Consolidate sharing feature check * feat: update cred sharing unavailable translations * feat: update upgrade message when user management not available * fix: rename plan names to Pro and Power * feat: update translations to no longer contain plan names * wip: subworkflow permissions * feat: add workflowsFromSameOwner caller policy * feat: Fix subworkflow permissions * shared entites should check for role when deleting users * refactor: remove circular dependency * role filter shouldn't be an array * fixed role issue * fix: Corrected behavior when removing users * feat: show instance owner credential sharing message only if isnt sharee * feat: update workflow caller policy caller ids labels * feat: update upgrade plan links to contain instance ids * fix: show check errors below creds message only to owner * fix(editor): Hide usage page on cloud * fix: update credential validation error message for sharee * fix(core): Remove duplicate import * fix(editor): Extending deployment types * feat: Overhaul contextual translations (#4992) feat: update how contextual translations work * refactor: improve messageing for subworkflow permissions * test: Fix issue with user deletion and transfer * fix: Explicitly throw error message so it can be displayed in UI Co-authored-by: Alex Grozav <alex@grozav.com> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com> Co-authored-by: freyamade <freya@n8n.io> Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
This commit is contained in:
@@ -44,6 +44,7 @@ import { defineStore } from 'pinia';
|
||||
import { useRootStore } from './n8nRootStore';
|
||||
import { getCurlToJson } from '@/api/curlHelper';
|
||||
import { useWorkflowsStore } from './workflows';
|
||||
import { useSettingsStore } from './settings';
|
||||
|
||||
export const useUIStore = defineStore(STORES.UI, {
|
||||
state: (): UIState => ({
|
||||
@@ -144,39 +145,7 @@ export const useUIStore = defineStore(STORES.UI, {
|
||||
linkURL: 'https://n8n-community.typeform.com/to/l7QOrERN#f=logging',
|
||||
uiLocations: ['settings'],
|
||||
},
|
||||
{
|
||||
id: FAKE_DOOR_FEATURES.CREDENTIALS_SHARING,
|
||||
featureName: 'fakeDoor.credentialEdit.sharing.name',
|
||||
actionBoxTitle: 'fakeDoor.credentialEdit.sharing.actionBox.title',
|
||||
actionBoxDescription: 'fakeDoor.credentialEdit.sharing.actionBox.description',
|
||||
linkURL: 'https://n8n-community.typeform.com/to/l7QOrERN#f=sharing',
|
||||
uiLocations: ['credentialsModal'],
|
||||
},
|
||||
{
|
||||
id: FAKE_DOOR_FEATURES.WORKFLOWS_SHARING,
|
||||
featureName: 'fakeDoor.workflowsSharing.name',
|
||||
actionBoxTitle: 'workflows.shareModal.title', // Use this translation in modal title when removing fakeDoor
|
||||
actionBoxDescription: 'fakeDoor.workflowsSharing.description',
|
||||
actionBoxButtonLabel: 'fakeDoor.workflowsSharing.button',
|
||||
linkURL: 'https://n8n.cloud',
|
||||
uiLocations: ['workflowShareModal'],
|
||||
},
|
||||
],
|
||||
dynamicTranslations: {
|
||||
workflows: {
|
||||
shareModal: {
|
||||
title: 'dynamic.workflows.shareModal.title',
|
||||
},
|
||||
sharing: {
|
||||
unavailable: {
|
||||
description: 'dynamic.workflows.sharing.unavailable.description',
|
||||
action: 'dynamic.workflows.sharing.unavailable.action',
|
||||
button: 'dynamic.workflows.sharing.unavailable.button',
|
||||
linkURL: 'https://n8n.cloud',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
draggable: {
|
||||
isDragging: false,
|
||||
type: '',
|
||||
@@ -196,6 +165,45 @@ export const useUIStore = defineStore(STORES.UI, {
|
||||
executionSidebarAutoRefresh: true,
|
||||
}),
|
||||
getters: {
|
||||
contextBasedTranslationKeys() {
|
||||
const settingsStore = useSettingsStore();
|
||||
const deploymentType = settingsStore.deploymentType;
|
||||
|
||||
let contextKey = '';
|
||||
if (deploymentType === 'cloud') {
|
||||
contextKey = '.cloud';
|
||||
} else if (deploymentType === 'desktop_mac' || deploymentType === 'desktop_win') {
|
||||
contextKey = '.desktop';
|
||||
}
|
||||
|
||||
return {
|
||||
upgradeLinkUrl: `contextual.upgradeLinkUrl${contextKey}`,
|
||||
credentials: {
|
||||
sharing: {
|
||||
unavailable: {
|
||||
title: `contextual.credentials.sharing.unavailable.title${contextKey}`,
|
||||
description: `contextual.credentials.sharing.unavailable.description${contextKey}`,
|
||||
action: `contextual.credentials.sharing.unavailable.action${contextKey}`,
|
||||
button: `contextual.credentials.sharing.unavailable.button${contextKey}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
workflows: {
|
||||
sharing: {
|
||||
title: 'contextual.workflows.sharing.title',
|
||||
unavailable: {
|
||||
title: `contextual.workflows.sharing.unavailable.title${contextKey}`,
|
||||
description: {
|
||||
modal: `contextual.workflows.sharing.unavailable.description.modal${contextKey}`,
|
||||
tooltip: `contextual.workflows.sharing.unavailable.description.tooltip${contextKey}`,
|
||||
},
|
||||
action: `contextual.workflows.sharing.unavailable.action${contextKey}`,
|
||||
button: `contextual.workflows.sharing.unavailable.button${contextKey}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
getLastSelectedNode(): INodeUi | null {
|
||||
const workflowsStore = useWorkflowsStore();
|
||||
if (this.lastSelectedNode) {
|
||||
|
||||
Reference in New Issue
Block a user