|
1 | 1 | package com.sameerasw.airsync |
2 | 2 |
|
| 3 | +import android.app.Activity |
3 | 4 | import android.app.Application |
| 5 | +import android.os.Bundle |
4 | 6 | import com.sameerasw.airsync.data.local.DataStoreManager |
5 | 7 | import io.sentry.android.core.SentryAndroid |
6 | 8 | import kotlinx.coroutines.flow.first |
7 | 9 | import kotlinx.coroutines.runBlocking |
8 | 10 |
|
9 | 11 | class AirSyncApp : Application() { |
| 12 | + private var activityCount = 0 |
| 13 | + |
| 14 | + companion object { |
| 15 | + private var instance: AirSyncApp? = null |
| 16 | + fun isAppForeground(): Boolean = instance?.isForeground() ?: false |
| 17 | + } |
| 18 | + |
10 | 19 | override fun onCreate() { |
11 | 20 | super.onCreate() |
| 21 | + instance = this |
12 | 22 | initSentry() |
| 23 | + registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks { |
| 24 | + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {} |
| 25 | + override fun onActivityStarted(activity: Activity) { |
| 26 | + activityCount++ |
| 27 | + } |
| 28 | + override fun onActivityResumed(activity: Activity) {} |
| 29 | + override fun onActivityPaused(activity: Activity) {} |
| 30 | + override fun onActivityStopped(activity: Activity) { |
| 31 | + activityCount-- |
| 32 | + } |
| 33 | + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} |
| 34 | + override fun onActivityDestroyed(activity: Activity) {} |
| 35 | + }) |
13 | 36 | } |
14 | 37 |
|
| 38 | + private fun isForeground(): Boolean = activityCount > 0 |
| 39 | + |
15 | 40 | private fun initSentry() { |
16 | 41 | val dataStoreManager = DataStoreManager.getInstance(this) |
17 | 42 | val isEnabled = runBlocking { dataStoreManager.getSentryReportingEnabled().first() } |
|
0 commit comments