2024-07-12 06:03:23 -07:00
|
|
|
<script lang="ts" setup>
|
2024-06-18 10:15:12 -07:00
|
|
|
import { useRootStore } from '@/stores/root.store';
|
2023-05-05 01:41:54 -07:00
|
|
|
import { useSettingsStore } from '@/stores/settings.store';
|
|
|
|
import { useUsersStore } from '@/stores/users.store';
|
2023-04-24 03:18:24 -07:00
|
|
|
import type { ITelemetrySettings } from 'n8n-workflow';
|
2024-06-06 06:30:17 -07:00
|
|
|
import { useProjectsStore } from '@/stores/projects.store';
|
2024-07-12 06:03:23 -07:00
|
|
|
import { computed, onMounted, watch, ref } from 'vue';
|
|
|
|
import { useTelemetry } from '@/composables/useTelemetry';
|
|
|
|
import { useRoute } from 'vue-router';
|
2021-10-18 20:57:49 -07:00
|
|
|
|
2024-07-12 06:03:23 -07:00
|
|
|
const isTelemetryInitialized = ref(false);
|
2022-08-19 06:35:39 -07:00
|
|
|
|
2024-07-12 06:03:23 -07:00
|
|
|
const rootStore = useRootStore();
|
|
|
|
const settingsStore = useSettingsStore();
|
|
|
|
const usersStore = useUsersStore();
|
|
|
|
const projectsStore = useProjectsStore();
|
|
|
|
const telemetryPlugin = useTelemetry();
|
|
|
|
const route = useRoute();
|
2022-08-19 06:35:39 -07:00
|
|
|
|
2024-07-12 06:03:23 -07:00
|
|
|
const currentUserId = computed((): string => {
|
|
|
|
return usersStore.currentUserId ?? '';
|
2021-10-18 20:57:49 -07:00
|
|
|
});
|
2024-07-12 06:03:23 -07:00
|
|
|
|
|
|
|
const isTelemetryEnabledOnRoute = computed((): boolean => {
|
|
|
|
const routeMeta = route.meta as { telemetry?: { disabled?: boolean } } | undefined;
|
|
|
|
return routeMeta?.telemetry ? !routeMeta.telemetry.disabled : true;
|
|
|
|
});
|
|
|
|
|
|
|
|
const telemetry = computed((): ITelemetrySettings => {
|
|
|
|
return settingsStore.telemetry;
|
|
|
|
});
|
|
|
|
|
|
|
|
const isTelemetryEnabled = computed((): boolean => {
|
|
|
|
return !!telemetry.value?.enabled;
|
|
|
|
});
|
|
|
|
|
2024-08-27 07:46:07 -07:00
|
|
|
const selfInstallSrc = computed((): string => {
|
|
|
|
return `https://n8n.io/self-install?instanceId=${rootStore.instanceId}&userId=${currentUserId.value}`;
|
|
|
|
});
|
|
|
|
|
2024-07-12 06:03:23 -07:00
|
|
|
watch(telemetry, () => {
|
|
|
|
init();
|
|
|
|
});
|
|
|
|
|
|
|
|
watch(currentUserId, (userId) => {
|
|
|
|
if (isTelemetryEnabled.value) {
|
|
|
|
telemetryPlugin.identify(rootStore.instanceId, userId);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
watch(isTelemetryEnabledOnRoute, (enabled) => {
|
|
|
|
if (enabled) {
|
|
|
|
init();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
init();
|
|
|
|
});
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
if (isTelemetryInitialized.value || !isTelemetryEnabledOnRoute.value || !isTelemetryEnabled.value)
|
|
|
|
return;
|
|
|
|
|
|
|
|
telemetryPlugin.init(telemetry.value, {
|
|
|
|
instanceId: rootStore.instanceId,
|
|
|
|
userId: currentUserId.value,
|
|
|
|
projectId: projectsStore.personalProject?.id,
|
|
|
|
versionCli: rootStore.versionCli,
|
|
|
|
});
|
|
|
|
|
|
|
|
isTelemetryInitialized.value = true;
|
|
|
|
}
|
2021-10-18 20:57:49 -07:00
|
|
|
</script>
|
2024-07-12 06:03:23 -07:00
|
|
|
|
|
|
|
<template>
|
2024-08-27 07:46:07 -07:00
|
|
|
<iframe v-if="isTelemetryEnabled && currentUserId" v-show="false" :src="selfInstallSrc" />
|
|
|
|
<span v-else v-show="false" />
|
2024-07-12 06:03:23 -07:00
|
|
|
</template>
|