()
| 248 | * This should only be called once, after the trust dialog has been accepted. |
| 249 | */ |
| 250 | export function initializeTelemetryAfterTrust(): void { |
| 251 | if (isEligibleForRemoteManagedSettings()) { |
| 252 | // For SDK/headless mode with beta tracing, initialize eagerly first |
| 253 | // to ensure the tracer is ready before the first query runs. |
| 254 | // The async path below will still run but doInitializeTelemetry() guards against double init. |
| 255 | if (getIsNonInteractiveSession() && isBetaTracingEnabled()) { |
| 256 | void doInitializeTelemetry().catch(error => { |
| 257 | logForDebugging( |
| 258 | `[3P telemetry] Eager telemetry init failed (beta tracing): ${errorMessage(error)}`, |
| 259 | { level: 'error' }, |
| 260 | ) |
| 261 | }) |
| 262 | } |
| 263 | logForDebugging( |
| 264 | '[3P telemetry] Waiting for remote managed settings before telemetry init', |
| 265 | ) |
| 266 | void waitForRemoteManagedSettingsToLoad() |
| 267 | .then(async () => { |
| 268 | logForDebugging( |
| 269 | '[3P telemetry] Remote managed settings loaded, initializing telemetry', |
| 270 | ) |
| 271 | // Re-apply env vars to pick up remote settings before initializing telemetry. |
| 272 | applyConfigEnvironmentVariables() |
| 273 | await doInitializeTelemetry() |
| 274 | }) |
| 275 | .catch(error => { |
| 276 | logForDebugging( |
| 277 | `[3P telemetry] Telemetry init failed (remote settings path): ${errorMessage(error)}`, |
| 278 | { level: 'error' }, |
| 279 | ) |
| 280 | }) |
| 281 | } else { |
| 282 | void doInitializeTelemetry().catch(error => { |
| 283 | logForDebugging( |
| 284 | `[3P telemetry] Telemetry init failed: ${errorMessage(error)}`, |
| 285 | { level: 'error' }, |
| 286 | ) |
| 287 | }) |
| 288 | } |
| 289 | } |
| 290 | |
| 291 | async function doInitializeTelemetry(): Promise<void> { |
| 292 | if (telemetryInitialized) { |
no test coverage detected