| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { v4 as uuid } from 'uuid'
- import { sendMB } from '../../../infrastructure/event-tracking'
- import { trackPdfDownloadEnabled } from './pdf-caching-flags'
- import { debugConsole } from '@/utils/debugging'
- // VERSION should get incremented when making changes to caching behavior or
- // adjusting metrics collection.
- const VERSION = 9
- // editing session id
- const EDITOR_SESSION_ID = uuid()
- const pdfCachingMetrics = {
- viewerId: EDITOR_SESSION_ID,
- }
- export function getPdfCachingMetrics() {
- return pdfCachingMetrics
- }
- export function trackPdfDownload(response, compileTimeClientE2E, t0) {
- const { timings, pdfCachingMinChunkSize } = response
- const deliveryLatencies = {
- compileTimeClientE2E,
- compileTimeServerE2E: timings?.compileE2E,
- }
- // There can be multiple "first" renderings with two pdf viewers.
- // E.g. two pdf detach tabs or pdf detacher plus pdf detach.
- // Let the pdfCachingMetrics round trip to account for pdf-detach.
- let isFirstRender = true
- function firstRenderDone({ latencyFetch, latencyRender, pdfCachingMetrics }) {
- if (!isFirstRender) return
- isFirstRender = false
- deliveryLatencies.totalDeliveryTime = Math.ceil(performance.now() - t0)
- deliveryLatencies.latencyFetch = latencyFetch
- if (latencyRender) {
- deliveryLatencies.latencyRender = latencyRender
- }
- if (trackPdfDownloadEnabled) {
- // Submit latency along with compile context.
- submitCompileMetrics({
- pdfCachingMinChunkSize,
- ...deliveryLatencies,
- ...pdfCachingMetrics,
- })
- }
- }
- return {
- deliveryLatencies,
- firstRenderDone,
- }
- }
- function submitCompileMetrics(metrics) {
- const leanMetrics = {
- version: VERSION,
- ...metrics,
- id: EDITOR_SESSION_ID,
- }
- debugConsole.log('/event/compile-metrics', JSON.stringify(leanMetrics))
- sendMB('compile-metrics-v6', leanMetrics)
- }
|