mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
feat(editor, core): Integrate PostHog (#3865)
* Integrate PostHog - Part 1: Groundwork (#3753) * Integrate PostHog - Part 2: Event capture (#3779) * Integrate PostHog - Part 3: Session recordings (#3789) * Integrate PostHog - Part 4: Experiments (#3825) * Finalize PostHog integration (#3866) * 📦 Update `package-lock.json` * 🐛 Account for absent PH hooks file * ✨ Create new env `EXTERNAL_FRONTEND_HOOKS_FILES` * ⚡ Adjust env used for injecting PostHog * 🐛 Switch to semicolon delimiter * ⚡ Simplify to `externalFrontendHookPath` * Refactor FE hooks flow (#3884) * Add env var for session recordings * inject frontend hooks even when telemetry is off * allow multiple hooks files * cr * 🐛 Handle missing ref errors * 🔥 Remove outdated `continue` * 🎨 Change one-liners to blocks * 📦 Update `package-lock.json` Co-authored-by: Ahsan Virani <ahsan.virani@gmail.com>
This commit is contained in:
@@ -4,20 +4,23 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import mixins from 'vue-typed-mixins';
|
||||
|
||||
import { mapGetters } from 'vuex';
|
||||
import { externalHooks } from './mixins/externalHooks';
|
||||
|
||||
export default Vue.extend({
|
||||
export default mixins(externalHooks).extend({
|
||||
name: 'Telemetry',
|
||||
data() {
|
||||
return {
|
||||
initialised: false,
|
||||
isTelemetryInitialized: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('settings', ['telemetry']),
|
||||
...mapGetters('users', ['currentUserId']),
|
||||
isTelemeteryEnabledOnRoute(): boolean {
|
||||
...mapGetters(['instanceId']),
|
||||
isTelemetryEnabledOnRoute(): boolean {
|
||||
return this.$route.meta && this.$route.meta.telemetry ? !this.$route.meta.telemetry.disabled: true;
|
||||
},
|
||||
},
|
||||
@@ -26,17 +29,24 @@ export default Vue.extend({
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
if (this.initialised || !this.isTelemeteryEnabledOnRoute) {
|
||||
if (this.isTelemetryInitialized || !this.isTelemetryEnabledOnRoute) return;
|
||||
|
||||
const telemetrySettings = this.telemetry;
|
||||
|
||||
if (!telemetrySettings || !telemetrySettings.enabled) {
|
||||
return;
|
||||
}
|
||||
const opts = this.telemetry;
|
||||
if (opts && opts.enabled) {
|
||||
this.initialised = true;
|
||||
const instanceId = this.$store.getters.instanceId;
|
||||
const userId = this.$store.getters['users/currentUserId'];
|
||||
const logLevel = this.$store.getters['settings/logLevel'];
|
||||
this.$telemetry.init(opts, { instanceId, logLevel, userId, store: this.$store });
|
||||
}
|
||||
|
||||
this.$telemetry.init(
|
||||
telemetrySettings,
|
||||
{
|
||||
instanceId: this.instanceId,
|
||||
userId: this.currentUserId,
|
||||
store: this.$store,
|
||||
},
|
||||
);
|
||||
|
||||
this.isTelemetryInitialized = true;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
@@ -44,10 +54,13 @@ export default Vue.extend({
|
||||
this.init();
|
||||
},
|
||||
currentUserId(userId) {
|
||||
const instanceId = this.$store.getters.instanceId;
|
||||
this.$telemetry.identify(instanceId, userId);
|
||||
this.$telemetry.identify(this.instanceId, userId);
|
||||
this.$externalHooks().run('telemetry.currentUserIdChanged', {
|
||||
instanceId: this.instanceId,
|
||||
userId,
|
||||
});
|
||||
},
|
||||
isTelemeteryEnabledOnRoute(enabled) {
|
||||
isTelemetryEnabledOnRoute(enabled) {
|
||||
if (enabled) {
|
||||
this.init();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user