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

113 lines
4.5 KiB
Kotlin
Raw Normal View History

2021-05-15 20:03:05 +00:00
package com.bugsnag.android
import android.content.Context
import java.io.File
2022-02-03 17:36:29 +00:00
internal class ConfigInternal(
var apiKey: String
) : CallbackAware, MetadataAware, UserAware, FeatureFlagAware {
2021-05-15 20:03:05 +00:00
private var user = User()
@JvmField
internal val callbackState: CallbackState = CallbackState()
@JvmField
internal val metadataState: MetadataState = MetadataState()
2022-02-03 17:36:29 +00:00
@JvmField
internal val featureFlagState: FeatureFlagState = FeatureFlagState()
2021-05-15 20:03:05 +00:00
var appVersion: String? = null
var versionCode: Int? = 0
var releaseStage: String? = null
var sendThreads: ThreadSendPolicy = ThreadSendPolicy.ALWAYS
var persistUser: Boolean = false
var launchDurationMillis: Long = DEFAULT_LAUNCH_CRASH_THRESHOLD_MS
var autoTrackSessions: Boolean = true
var sendLaunchCrashesSynchronously: Boolean = true
var enabledErrorTypes: ErrorTypes = ErrorTypes()
var autoDetectErrors: Boolean = true
var appType: String? = "android"
var logger: Logger? = DebugLogger
set(value) {
field = value ?: NoopLogger
}
var delivery: Delivery? = null
var endpoints: EndpointConfiguration = EndpointConfiguration()
var maxBreadcrumbs: Int = DEFAULT_MAX_BREADCRUMBS
var maxPersistedEvents: Int = DEFAULT_MAX_PERSISTED_EVENTS
var maxPersistedSessions: Int = DEFAULT_MAX_PERSISTED_SESSIONS
var context: String? = null
2021-07-29 19:08:19 +00:00
var redactedKeys: Set<String>
get() = metadataState.metadata.redactedKeys
2021-05-15 20:03:05 +00:00
set(value) {
metadataState.metadata.redactedKeys = value
}
var discardClasses: Set<String> = emptySet()
var enabledReleaseStages: Set<String>? = null
2021-07-29 19:08:19 +00:00
var enabledBreadcrumbTypes: Set<BreadcrumbType>? = null
2021-05-15 20:03:05 +00:00
var projectPackages: Set<String> = emptySet()
var persistenceDirectory: File? = null
2021-10-12 06:52:09 +00:00
val notifier: Notifier = Notifier()
2021-07-29 19:08:19 +00:00
protected val plugins = HashSet<Plugin>()
2021-05-15 20:03:05 +00:00
override fun addOnError(onError: OnErrorCallback) = callbackState.addOnError(onError)
override fun removeOnError(onError: OnErrorCallback) = callbackState.removeOnError(onError)
override fun addOnBreadcrumb(onBreadcrumb: OnBreadcrumbCallback) =
callbackState.addOnBreadcrumb(onBreadcrumb)
override fun removeOnBreadcrumb(onBreadcrumb: OnBreadcrumbCallback) =
callbackState.removeOnBreadcrumb(onBreadcrumb)
override fun addOnSession(onSession: OnSessionCallback) = callbackState.addOnSession(onSession)
override fun removeOnSession(onSession: OnSessionCallback) = callbackState.removeOnSession(onSession)
2022-02-03 17:36:29 +00:00
fun addOnSend(onSend: OnSendCallback) = callbackState.addOnSend(onSend)
fun removeOnSend(onSend: OnSendCallback) = callbackState.removeOnSend(onSend)
2021-05-15 20:03:05 +00:00
override fun addMetadata(section: String, value: Map<String, Any?>) =
metadataState.addMetadata(section, value)
override fun addMetadata(section: String, key: String, value: Any?) =
metadataState.addMetadata(section, key, value)
override fun clearMetadata(section: String) = metadataState.clearMetadata(section)
override fun clearMetadata(section: String, key: String) = metadataState.clearMetadata(section, key)
override fun getMetadata(section: String) = metadataState.getMetadata(section)
override fun getMetadata(section: String, key: String) = metadataState.getMetadata(section, key)
2022-02-03 17:36:29 +00:00
override fun addFeatureFlag(name: String) = featureFlagState.addFeatureFlag(name)
override fun addFeatureFlag(name: String, variant: String?) =
featureFlagState.addFeatureFlag(name, variant)
override fun addFeatureFlags(featureFlags: Iterable<FeatureFlag>) =
featureFlagState.addFeatureFlags(featureFlags)
override fun clearFeatureFlag(name: String) = featureFlagState.clearFeatureFlag(name)
override fun clearFeatureFlags() = featureFlagState.clearFeatureFlags()
2021-05-15 20:03:05 +00:00
override fun getUser(): User = user
override fun setUser(id: String?, email: String?, name: String?) {
user = User(id, email, name)
}
fun addPlugin(plugin: Plugin) {
plugins.add(plugin)
}
companion object {
2021-10-12 06:52:09 +00:00
private const val DEFAULT_MAX_BREADCRUMBS = 50
2021-05-15 20:03:05 +00:00
private const val DEFAULT_MAX_PERSISTED_SESSIONS = 128
private const val DEFAULT_MAX_PERSISTED_EVENTS = 32
private const val DEFAULT_LAUNCH_CRASH_THRESHOLD_MS: Long = 5000
@JvmStatic
fun load(context: Context): Configuration = load(context, null)
@JvmStatic
protected fun load(context: Context, apiKey: String?): Configuration {
return ManifestConfigLoader().load(context, apiKey)
}
}
}