()
| 287 | * This should only be called once, after the trust dialog has been accepted. |
| 288 | */ |
| 289 | export function initializeTelemetryAfterTrust(): void { |
| 290 | if (isEligibleForRemoteManagedSettings()) { |
| 291 | // For SDK/headless mode with beta tracing, initialize eagerly first |
| 292 | // to ensure the tracer is ready before the first query runs. |
| 293 | // The async path below will still run but doInitializeTelemetry() guards against double init. |
| 294 | if (getIsNonInteractiveSession() && isBetaTracingEnabled()) { |
| 295 | void doInitializeTelemetry().catch(error => { |
| 296 | logForDebugging( |
| 297 | `[3P telemetry] Eager telemetry init failed (beta tracing): ${errorMessage(error)}`, |
| 298 | { level: 'error' }, |
| 299 | ) |
| 300 | }) |
| 301 | } |
| 302 | logForDebugging( |
| 303 | '[3P telemetry] Waiting for remote managed settings before telemetry init', |
| 304 | ) |
| 305 | void waitForRemoteManagedSettingsToLoad() |
| 306 | .then(async () => { |
| 307 | logForDebugging( |
| 308 | '[3P telemetry] Remote managed settings loaded, initializing telemetry', |
| 309 | ) |
| 310 | // Re-apply env vars to pick up remote settings before initializing telemetry. |
| 311 | applyConfigEnvironmentVariables() |
| 312 | await doInitializeTelemetry() |
| 313 | }) |
| 314 | .catch(error => { |
| 315 | logForDebugging( |
| 316 | `[3P telemetry] Telemetry init failed (remote settings path): ${errorMessage(error)}`, |
| 317 | { level: 'error' }, |
| 318 | ) |
| 319 | }) |
| 320 | } else { |
| 321 | void doInitializeTelemetry().catch(error => { |
| 322 | logForDebugging( |
| 323 | `[3P telemetry] Telemetry init failed: ${errorMessage(error)}`, |
| 324 | { level: 'error' }, |
| 325 | ) |
| 326 | }) |
| 327 | } |
| 328 | } |
| 329 | |
| 330 | async function doInitializeTelemetry(): Promise<void> { |
| 331 | if (telemetryInitialized) { |
no test coverage detected