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