refactor: telemetry

* only works with frappe v15.96+
This commit is contained in:
Saqib Ansari
2026-01-14 14:48:05 +05:30
parent 4ace8b2ec0
commit 0aeada4549
15 changed files with 40 additions and 115 deletions

View File

@@ -292,8 +292,7 @@ import {
} from 'frappe-ui'
import { useRouter } from 'vue-router'
import { Image, Trash2 } from 'lucide-vue-next'
import { capture } from '@/telemetry'
import { useOnboarding } from 'frappe-ui/frappe'
import { useOnboarding, useTelemetry } from 'frappe-ui/frappe'
import { sessionStore } from '../stores/session'
import MultiSelect from '@/components/Controls/MultiSelect.vue'
import Link from '@/components/Controls/Link.vue'
@@ -312,6 +311,7 @@ const { brand } = sessionStore()
const { updateOnboardingStep } = useOnboarding('learning')
const instructors = ref([])
const app = getCurrentInstance()
const { capture } = useTelemetry()
const { $dialog } = app.appContext.config.globalProperties
const props = defineProps({

View File

@@ -234,10 +234,12 @@ import { sessionStore } from '../stores/session'
import Link from '@/components/Controls/Link.vue'
import NotPermitted from '@/components/NotPermitted.vue'
import { X } from 'lucide-vue-next'
import { useTelemetry } from 'frappe-ui/frappe'
const user = inject('$user')
const { brand } = sessionStore()
const showConsentWarning = ref(false)
const { capture } = useTelemetry()
onMounted(() => {
const script = document.createElement('script')
@@ -339,6 +341,7 @@ const generatePaymentLink = () => {
return validateAddress()
},
onSuccess(data) {
capture('checkout_initiated', { type: props.type })
window.location.href = data
},
onError(err) {

View File

@@ -349,8 +349,7 @@ import {
} from 'vue'
import { Image, Trash2, X } from 'lucide-vue-next'
import { useRouter } from 'vue-router'
import { capture, startRecording, stopRecording } from '@/telemetry'
import { useOnboarding } from 'frappe-ui/frappe'
import { useOnboarding, useTelemetry } from 'frappe-ui/frappe'
import { sessionStore } from '../stores/session'
import {
escapeHTML,
@@ -372,6 +371,7 @@ const router = useRouter()
const instructors = ref([])
const related_courses = ref([])
const app = getCurrentInstance()
const { capture } = useTelemetry()
const { updateOnboardingStep } = useOnboarding('learning')
const { $dialog } = app.appContext.config.globalProperties
@@ -418,7 +418,6 @@ onMounted(() => {
fetchCourseInfo()
} else {
capture('course_form_opened')
startRecording()
}
window.addEventListener('keydown', keyboardShortcut)
})
@@ -441,7 +440,6 @@ const keyboardShortcut = (e) => {
onBeforeUnmount(() => {
window.removeEventListener('keydown', keyboardShortcut)
stopRecording()
})
const courseCreationResource = createResource({
@@ -582,12 +580,16 @@ const createCourse = () => {
}
const editCourse = () => {
let was_published = courseResource.data.published
courseEditResource.submit(
{
course: courseResource.data.name,
},
{
onSuccess() {
if (!was_published && course.published) {
capture('publish_course')
}
updateMetaInfo('courses', props.courseName, meta)
toast.success(__('Course updated successfully'))
},

View File

@@ -99,14 +99,14 @@ import EditorJS from '@editorjs/editorjs'
import LessonHelp from '@/components/LessonHelp.vue'
import { ChevronRight } from 'lucide-vue-next'
import { getEditorTools, enablePlyr } from '@/utils'
import { capture, startRecording, stopRecording } from '@/telemetry'
import { useOnboarding } from 'frappe-ui/frappe'
import { useOnboarding, useTelemetry } from 'frappe-ui/frappe'
const { brand } = sessionStore()
const editor = ref(null)
const instructorEditor = ref(null)
const user = inject('$user')
const openInstructorEditor = ref(false)
const { capture } = useTelemetry()
const { updateOnboardingStep } = useOnboarding('learning')
let autoSaveInterval
let showSuccessMessage = false
@@ -131,7 +131,6 @@ onMounted(() => {
window.location.href = '/login'
}
capture('lesson_form_opened')
startRecording()
editor.value = renderEditor('content')
instructorEditor.value = renderEditor('instructor-notes')
window.addEventListener('keydown', keyboardShortcut)
@@ -226,7 +225,6 @@ const keyboardShortcut = (e) => {
onBeforeUnmount(() => {
clearInterval(autoSaveInterval)
window.removeEventListener('keydown', keyboardShortcut)
stopRecording()
})
const newLessonResource = createResource({

View File

@@ -233,6 +233,7 @@ import { ClipboardList, ListChecks, Plus, Trash2 } from 'lucide-vue-next'
import { useRouter } from 'vue-router'
import { escapeHTML } from '@/utils'
import Question from '@/components/Modals/Question.vue'
import { useTelemetry } from 'frappe-ui/frappe'
const { brand } = sessionStore()
const showQuestionModal = ref(false)
@@ -241,6 +242,7 @@ const currentQuestion = reactive({
marks: 0,
name: '',
})
const { capture } = useTelemetry()
const user = inject('$user')
const router = useRouter()
const readOnlyMode = window.read_only_mode
@@ -308,6 +310,9 @@ const submitQuiz = () => {
},
{
onSuccess(data) {
if (props.quizID === 'new') {
capture('quiz_created')
}
quizDetails.doc.total_marks = data.total_marks
toast.success(__('Quiz updated successfully'))
},