feat: ActivityProvider

This commit is contained in:
rushiiMachine 2024-08-04 22:39:16 -07:00
parent 3003e78912
commit 193036f37c
No known key found for this signature in database
GPG key ID: DCBE5952BB3B6420
2 changed files with 38 additions and 0 deletions

View file

@ -29,7 +29,11 @@ class ManagerApplication : Application() {
super.onCreate()
startKoin {
// Android activities & context
androidContext(this@ManagerApplication)
modules(module(createdAtStart = true) {
singleOf(::ActivityProvider)
})
// HTTP
modules(module {

View file

@ -0,0 +1,34 @@
package com.aliucord.manager.di
import android.app.Activity
import android.app.Application
import android.os.Bundle
import java.util.Objects
class ActivityProvider(application: Application) {
private var activeActivity: Activity? = null
/**
* Gets the current active activity as a specific activity or errors otherwise.
*/
@Suppress("UNCHECKED_CAST")
fun <T : Activity> get(): T = Objects.requireNonNull(activeActivity, "No active activity cached!") as T
init {
application.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
override fun onActivityPaused(activity: Activity) {}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityStarted(activity: Activity) {}
override fun onActivityStopped(activity: Activity) {}
override fun onActivityResumed(activity: Activity) {
activeActivity = activity
}
override fun onActivityDestroyed(activity: Activity) {
activeActivity = null
}
})
}
}