n8n/packages/editor-ui/src/modules/settings.ts

76 lines
3.1 KiB
TypeScript
Raw Normal View History

:sparkles: Introduce telemetry (#2099) * introduce analytics * add user survey backend * add user survey backend * set answers on survey submit Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> * change name to personalization * lint Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> * N8n 2495 add personalization modal (#2280) * update modals * add onboarding modal * implement questions * introduce analytics * simplify impl * implement survey handling * add personalized cateogry * update modal behavior * add thank you view * handle empty cases * rename modal * standarize modal names * update image, add tags to headings * remove unused file * remove unused interfaces * clean up footer spacing * introduce analytics * refactor to fix bug * update endpoint * set min height * update stories * update naming from questions to survey * remove spacing after core categories * fix bug in logic * sort nodes * rename types * merge with be * rename userSurvey * clean up rest api * use constants for keys * use survey keys * clean up types * move personalization to its own file Co-authored-by: ahsan-virani <ahsan.virani@gmail.com> * Survey new options (#2300) * split up options * fix quotes * remove unused import * add user created workflow event (#2301) * simplify env vars * fix versionCli on FE * update personalization env * fix event User opened Credentials panel * fix select modal spacing * fix nodes panel event * fix workflow id in workflow execute event * improve telemetry error logging * fix config and stop process events * add flush call on n8n stop * ready for release * improve telemetry process exit * fix merge * improve n8n stop events Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Co-authored-by: Mutasem <mutdmour@gmail.com> Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-10-18 20:57:49 -07:00
import { ActionContext, Module } from 'vuex';
import {
IN8nUISettings,
IPersonalizationSurveyAnswers,
IRootState,
ISettingsState,
} from '../Interface';
import { getSettings, submitPersonalizationSurvey } from '../api/settings';
import Vue from 'vue';
import { getPersonalizedNodeTypes } from './helper';
import { PERSONALIZATION_MODAL_KEY } from '@/constants';
const module: Module<ISettingsState, IRootState> = {
namespaced: true,
state: {
settings: {} as IN8nUISettings,
},
getters: {
personalizedNodeTypes(state: ISettingsState): string[] {
const answers = state.settings.personalizationSurvey && state.settings.personalizationSurvey.answers;
if (!answers) {
return [];
}
return getPersonalizedNodeTypes(answers);
},
},
mutations: {
setSettings(state: ISettingsState, settings: IN8nUISettings) {
state.settings = settings;
},
setPersonalizationAnswers(state: ISettingsState, answers: IPersonalizationSurveyAnswers) {
Vue.set(state.settings, 'personalizationSurvey', {
answers,
shouldShow: false,
});
},
},
actions: {
async getSettings(context: ActionContext<ISettingsState, IRootState>) {
const settings = await getSettings(context.rootGetters.getRestApiContext);
context.commit('setSettings', settings);
// todo refactor to this store
context.commit('setUrlBaseWebhook', settings.urlBaseWebhook, {root: true});
context.commit('setEndpointWebhook', settings.endpointWebhook, {root: true});
context.commit('setEndpointWebhookTest', settings.endpointWebhookTest, {root: true});
context.commit('setSaveDataErrorExecution', settings.saveDataErrorExecution, {root: true});
context.commit('setSaveDataSuccessExecution', settings.saveDataSuccessExecution, {root: true});
context.commit('setSaveManualExecutions', settings.saveManualExecutions, {root: true});
context.commit('setTimezone', settings.timezone, {root: true});
context.commit('setExecutionTimeout', settings.executionTimeout, {root: true});
context.commit('setMaxExecutionTimeout', settings.maxExecutionTimeout, {root: true});
context.commit('setVersionCli', settings.versionCli, {root: true});
context.commit('setInstanceId', settings.instanceId, {root: true});
context.commit('setOauthCallbackUrls', settings.oauthCallbackUrls, {root: true});
context.commit('setN8nMetadata', settings.n8nMetadata || {}, {root: true});
context.commit('versions/setVersionNotificationSettings', settings.versionNotifications, {root: true});
context.commit('setTelemetry', settings.telemetry, {root: true});
const showPersonalizationsModal = settings.personalizationSurvey && settings.personalizationSurvey.shouldShow && !settings.personalizationSurvey.answers;
if (showPersonalizationsModal) {
context.commit('ui/openModal', PERSONALIZATION_MODAL_KEY, {root: true});
}
return settings;
},
async submitPersonalizationSurvey(context: ActionContext<ISettingsState, IRootState>, results: IPersonalizationSurveyAnswers) {
await submitPersonalizationSurvey(context.rootGetters.getRestApiContext, results);
context.commit('setPersonalizationAnswers', results);
},
},
};
export default module;