<lambda>null1 package com.android.onboarding.nodes
2 
3 import com.android.onboarding.flags.DefaultOnboardingFlagsProvider
4 
5 /** A Singleton [OnboardingGraphLog] which automatically logs all events to logcat. */
6 object AndroidOnboardingGraphLog : OnboardingGraphLog {
7 
8   const val LOG_TAG = "ZZZOnboardingGraph"
9   private val onboardingFlags = DefaultOnboardingFlagsProvider()
10   private val logcatObserver = LogcatObserver(LOG_TAG) { it.serializeToString() }
11   private val defaultOnboardingGraphLog =
12     DefaultOnboardingGraphLog().also {
13       it.addObserver(logcatObserver)
14 
15       if (onboardingFlags.shouldVisualiseNodeTransitionsInLogcat) {
16         it.addObserver(
17           OnboardingGraphNodeTransitionObserver(
18             LogcatObserver(logTag = "OnboardingGraph") { node ->
19               "${node.nodeName}(${node.nodeId})"
20             }
21           )
22         )
23       }
24     }
25 
26   override fun addObserver(observer: OnboardingGraphLog.Observer) {
27     defaultOnboardingGraphLog.addObserver(observer)
28   }
29 
30   override fun removeObserver(observer: OnboardingGraphLog.Observer) {
31     defaultOnboardingGraphLog.removeObserver(observer)
32   }
33 
34   override fun log(event: OnboardingEvent) {
35     defaultOnboardingGraphLog.log(event)
36   }
37 }
38