FairEmail/app/src/main/java/com/bugsnag/android/BugsnagStateModule.kt

37 lines
1.2 KiB
Kotlin
Raw Normal View History

2021-08-15 12:40:22 +00:00
package com.bugsnag.android
2022-11-12 20:57:15 +00:00
import com.bugsnag.android.internal.ImmutableConfig
2021-08-15 12:40:22 +00:00
import com.bugsnag.android.internal.dag.DependencyModule
/**
* A dependency module which constructs the objects that track state in Bugsnag. For example, this
* class is responsible for creating classes which track the current breadcrumb/metadata state.
*/
internal class BugsnagStateModule(
2022-11-12 20:57:15 +00:00
cfg: ImmutableConfig,
2021-08-15 12:40:22 +00:00
configuration: Configuration
) : DependencyModule() {
val clientObservable = ClientObservable()
2022-11-12 20:57:15 +00:00
val callbackState = configuration.impl.callbackState
2021-08-15 12:40:22 +00:00
val contextState = ContextState().apply {
if (configuration.context != null) {
setManualContext(configuration.context)
}
}
val breadcrumbState = BreadcrumbState(cfg.maxBreadcrumbs, callbackState, cfg.logger)
val metadataState = copyMetadataState(configuration)
2022-02-03 17:36:29 +00:00
val featureFlagState = configuration.impl.featureFlagState.copy()
2021-08-15 12:40:22 +00:00
private fun copyMetadataState(configuration: Configuration): MetadataState {
// performs deep copy of metadata to preserve immutability of Configuration interface
val orig = configuration.impl.metadataState.metadata
return configuration.impl.metadataState.copy(metadata = orig.copy())
}
}