Change Lifecycle callback for open class

This commit is contained in:
Adolfo Santiago 2022-06-25 11:35:12 +02:00
parent d4a55dbdcf
commit 1d9ac485b5
No known key found for this signature in database
GPG Key ID: 244D6F9A317B4A65
1 changed files with 31 additions and 44 deletions

View File

@ -1,80 +1,67 @@
/* Copyright 2018 charlag /*
* Husky -- A Pleroma client for Android
* *
* This file is a part of Tusky. * Copyright (C) 2022 The Husky Developers
* Copyright (C) 2018 charlag
* *
* This program is free software; you can redistribute it and/or modify it under the terms of the * This program is free software: you can redistribute it and/or modify
* GNU General Public License as published by the Free Software Foundation; either version 3 of the * it under the terms of the GNU General Public License as published by
* License, or (at your option) any later version. * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* *
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * This program is distributed in the hope that it will be useful,
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * but WITHOUT ANY WARRANTY; without even the implied warranty of
* Public License for more details. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along with Tusky; if not, * You should have received a copy of the GNU General Public License
* see <http://www.gnu.org/licenses>. */ * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.keylesspalace.tusky.di package com.keylesspalace.tusky.di
import android.app.Activity import android.app.Activity
import android.app.Application
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.keylesspalace.tusky.TuskyApplication import com.keylesspalace.tusky.TuskyApplication
import com.keylesspalace.tusky.core.ui.callbacks.ActivityCallback
import dagger.android.AndroidInjection import dagger.android.AndroidInjection
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import dagger.android.support.AndroidSupportInjection import dagger.android.support.AndroidSupportInjection
/**
* Created by charlag on 3/24/18.
*/
object AppInjector { object AppInjector {
fun init(app: TuskyApplication) { fun init(app: TuskyApplication) {
DaggerAppComponent.builder().application(app) DaggerAppComponent.builder().application(app)
.build().inject(app) .build().inject(app)
app.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { app.registerActivityLifecycleCallbacks(object : ActivityCallback() {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity) handleActivity(activity)
} }
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityDestroyed(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityStopped(activity: Activity) {
}
}) })
} }
private fun handleActivity(activity: Activity) { private fun handleActivity(activity: Activity) {
if (activity is HasAndroidInjector || activity is Injectable) { if(activity is HasAndroidInjector || activity is Injectable) {
AndroidInjection.inject(activity) AndroidInjection.inject(activity)
} }
if (activity is FragmentActivity) { if(activity is FragmentActivity) {
activity.supportFragmentManager.registerFragmentLifecycleCallbacks( activity.supportFragmentManager.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() { object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentPreAttached(fm: FragmentManager, f: Fragment, context: Context) { override fun onFragmentPreAttached(
if (f is Injectable) { fm: FragmentManager,
AndroidSupportInjection.inject(f) f: Fragment,
} context: Context
) {
if(f is Injectable) {
AndroidSupportInjection.inject(f)
} }
}, true) }
}, true
)
} }
} }
} }