n8n/packages/editor-ui/src/stores/n8nRoot.store.ts
कारतोफ्फेलस्क्रिप्ट™ 5c078f1b3d
fix(editor): Fix UI urls when hosted behind a path prefix (#8198)
fixes #8061
2024-01-03 11:37:01 +01:00

133 lines
3.8 KiB
TypeScript

import { CLOUD_BASE_URL_PRODUCTION, CLOUD_BASE_URL_STAGING, STORES } from '@/constants';
import type { IRestApiContext, RootState } from '@/Interface';
import { setGlobalState, type IDataObject } from 'n8n-workflow';
import { defineStore } from 'pinia';
const { VUE_APP_URL_BASE_API } = import.meta.env;
export const useRootStore = defineStore(STORES.ROOT, {
state: (): RootState => ({
baseUrl: VUE_APP_URL_BASE_API ?? window.BASE_PATH,
restEndpoint:
!window.REST_ENDPOINT || window.REST_ENDPOINT === '{{REST_ENDPOINT}}'
? 'rest'
: window.REST_ENDPOINT,
defaultLocale: 'en',
endpointForm: 'form',
endpointFormTest: 'form-test',
endpointFormWaiting: 'form-waiting',
endpointWebhook: 'webhook',
endpointWebhookTest: 'webhook-test',
pushConnectionActive: true,
timezone: 'America/New_York',
executionTimeout: -1,
maxExecutionTimeout: Number.MAX_SAFE_INTEGER,
versionCli: '0.0.0',
oauthCallbackUrls: {},
n8nMetadata: {},
sessionId: Math.random().toString(36).substring(2, 15),
urlBaseWebhook: 'http://localhost:5678/',
urlBaseEditor: 'http://localhost:5678',
isNpmAvailable: false,
instanceId: '',
}),
getters: {
getBaseUrl(): string {
return this.baseUrl;
},
getFormUrl(): string {
return `${this.urlBaseWebhook}${this.endpointForm}`;
},
getFormTestUrl(): string {
return `${this.urlBaseEditor}${this.endpointFormTest}`;
},
getFormWaitingUrl(): string {
return `${this.baseUrl}${this.endpointFormWaiting}`;
},
getWebhookUrl(): string {
return `${this.urlBaseWebhook}${this.endpointWebhook}`;
},
getWebhookTestUrl(): string {
return `${this.urlBaseEditor}${this.endpointWebhookTest}`;
},
getRestUrl(): string {
return `${this.baseUrl}${this.restEndpoint}`;
},
getRestCloudApiContext(): IRestApiContext {
return {
baseUrl: window.location.host.includes('stage-app.n8n.cloud')
? CLOUD_BASE_URL_STAGING
: CLOUD_BASE_URL_PRODUCTION,
sessionId: '',
};
},
getRestApiContext(): IRestApiContext {
return {
baseUrl: this.getRestUrl,
sessionId: this.sessionId,
};
},
},
actions: {
setUrlBaseWebhook(urlBaseWebhook: string): void {
const url = urlBaseWebhook.endsWith('/') ? urlBaseWebhook : `${urlBaseWebhook}/`;
this.urlBaseWebhook = url;
},
setUrlBaseEditor(urlBaseEditor: string): void {
const url = urlBaseEditor.endsWith('/') ? urlBaseEditor : `${urlBaseEditor}/`;
this.urlBaseEditor = url;
},
setEndpointForm(endpointForm: string): void {
this.endpointForm = endpointForm;
},
setEndpointFormTest(endpointFormTest: string): void {
this.endpointFormTest = endpointFormTest;
},
setEndpointFormWaiting(endpointFormWaiting: string): void {
this.endpointFormWaiting = endpointFormWaiting;
},
setEndpointWebhook(endpointWebhook: string): void {
this.endpointWebhook = endpointWebhook;
},
setEndpointWebhookTest(endpointWebhookTest: string): void {
this.endpointWebhookTest = endpointWebhookTest;
},
setTimezone(timezone: string): void {
this.timezone = timezone;
setGlobalState({ defaultTimezone: timezone });
},
setExecutionTimeout(executionTimeout: number): void {
this.executionTimeout = executionTimeout;
},
setMaxExecutionTimeout(maxExecutionTimeout: number): void {
this.maxExecutionTimeout = maxExecutionTimeout;
},
setVersionCli(version: string): void {
this.versionCli = version;
},
setInstanceId(instanceId: string): void {
this.instanceId = instanceId;
},
setOauthCallbackUrls(urls: IDataObject): void {
this.oauthCallbackUrls = urls;
},
setN8nMetadata(metadata: IDataObject): void {
this.n8nMetadata = metadata as RootState['n8nMetadata'];
},
setDefaultLocale(locale: string): void {
this.defaultLocale = locale;
},
setIsNpmAvailable(isNpmAvailable: boolean): void {
this.isNpmAvailable = isNpmAvailable;
},
},
});