Use BaseActivity to inject the database and api

This commit is contained in:
Matthieu 2020-12-16 22:11:45 +01:00
parent ba5fd1c1cf
commit 60ba840421
10 changed files with 18 additions and 87 deletions

View File

@ -4,13 +4,26 @@ import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.di.PixelfedAPIHolder
import java.util.*
import javax.inject.Inject
open class BaseActivity : AppCompatActivity() {
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
(this.application as Pixeldroid).getAppComponent().inject(this)
}
override fun attachBaseContext(base: Context) {
super.attachBaseContext(updateBaseContextLocale(base))
}

View File

@ -1,24 +1,19 @@
package com.h.pixeldroid
import android.os.Bundle
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists.AccountListFragment
import com.h.pixeldroid.objects.Account
import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_ID_TAG
import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_TAG
import com.h.pixeldroid.objects.Account.Companion.FOLLOWERS_TAG
import javax.inject.Inject
class FollowsActivity : BaseActivity() {
private var followsFragment = AccountListFragment()
@Inject
lateinit var db: AppDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_followers)
(this.application as Pixeldroid).getAppComponent().inject(this)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

View File

@ -12,8 +12,6 @@ import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.browser.customtabs.CustomTabsIntent
import com.h.pixeldroid.api.PixelfedAPI
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.objects.*
import com.h.pixeldroid.utils.DBUtils
import com.h.pixeldroid.utils.Utils
@ -29,7 +27,6 @@ import okhttp3.HttpUrl
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import javax.inject.Inject
/**
Overview of the flow of the login process: (boxes are requests done in parallel,
@ -57,11 +54,6 @@ class LoginActivity : BaseActivity() {
private lateinit var oauthScheme: String
private lateinit var appName: String
private lateinit var preferences: SharedPreferences
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
private lateinit var pixelfedAPI: PixelfedAPI
private var inputVisibility: Int = View.GONE
@ -70,7 +62,6 @@ class LoginActivity : BaseActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
(application as Pixeldroid).getAppComponent().inject(this)
loadingAnimation(true)
appName = getString(R.string.app_name)
oauthScheme = getString(R.string.auth_scheme)

View File

@ -16,15 +16,13 @@ import androidx.paging.ExperimentalPagingApi
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.bumptech.glide.Glide
import com.google.android.material.tabs.TabLayoutMediator
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.db.entities.HomeStatusDatabaseEntity
import com.h.pixeldroid.db.entities.PublicFeedStatusDatabaseEntity
import com.h.pixeldroid.db.entities.UserDatabaseEntity
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.fragments.CameraFragment
import com.h.pixeldroid.fragments.SearchDiscoverFragment
import com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds.PostFeedFragment
import com.h.pixeldroid.fragments.feeds.cachedFeeds.notifications.NotificationsFragment
import com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds.PostFeedFragment
import com.h.pixeldroid.objects.Account
import com.h.pixeldroid.utils.DBUtils
import com.h.pixeldroid.utils.Utils.Companion.hasInternet
@ -42,16 +40,9 @@ import org.ligi.tracedroid.sending.TraceDroidEmailSender
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.lang.IllegalArgumentException
import javax.inject.Inject
class MainActivity : BaseActivity() {
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
private lateinit var header: AccountHeaderView
private var user: UserDatabaseEntity? = null
@ -65,11 +56,8 @@ class MainActivity : BaseActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
TraceDroidEmailSender.sendStackTraces("contact@pixeldroid.org", this)
(this.application as Pixeldroid).getAppComponent().inject(this)
//get the currently active user
user = db.userDao().getActiveUser()

View File

@ -3,8 +3,6 @@ package com.h.pixeldroid
import android.os.Bundle
import android.util.Log
import android.view.View
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.fragments.PostFragment
import com.h.pixeldroid.objects.DiscoverPost
import com.h.pixeldroid.objects.Status
@ -15,26 +13,17 @@ import kotlinx.android.synthetic.main.activity_post.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import javax.inject.Inject
class PostActivity : BaseActivity() {
private lateinit var postFragment : PostFragment
lateinit var domain : String
private lateinit var accessToken : String
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_post)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
(this.application as Pixeldroid).getAppComponent().inject(this)
val status = intent.getSerializableExtra(POST_TAG) as Status?
val discoverPost: DiscoverPost? = intent.getSerializableExtra(DISCOVER_TAG) as DiscoverPost?

View File

@ -17,9 +17,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.google.android.material.textfield.TextInputLayout
import com.h.pixeldroid.api.PixelfedAPI
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.db.entities.UserDatabaseEntity
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.interfaces.PostCreationListener
import com.h.pixeldroid.objects.Attachment
import com.h.pixeldroid.objects.Instance
@ -34,7 +32,6 @@ import okhttp3.MultipartBody
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import javax.inject.Inject
private val TAG = "Post Creation Activity"
private val MORE_PICTURES_REQUEST_CODE = 0xffff
@ -57,19 +54,10 @@ class PostCreationActivity : BaseActivity(), PostCreationListener {
private var posts: ArrayList<String> = ArrayList()
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_post_creation)
(this.application as Pixeldroid).getAppComponent().inject(this)
// get image URIs
if(intent.clipData != null) {
val count = intent.clipData!!.itemCount

View File

@ -15,9 +15,7 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.h.pixeldroid.adapters.ProfilePostsRecyclerViewAdapter
import com.h.pixeldroid.api.PixelfedAPI
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.db.entities.UserDatabaseEntity
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.objects.Account
import com.h.pixeldroid.objects.Relationship
import com.h.pixeldroid.objects.Status
@ -26,7 +24,6 @@ import com.h.pixeldroid.utils.ImageConverter
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import javax.inject.Inject
class ProfileActivity : BaseActivity() {
private lateinit var pixelfedAPI : PixelfedAPI
@ -37,20 +34,12 @@ class ProfileActivity : BaseActivity() {
private lateinit var domain : String
private var user: UserDatabaseEntity? = null
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_profile)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
(this.application as Pixeldroid).getAppComponent().inject(this)
user = db.userDao().getActiveUser()
domain = user?.instance_uri.orEmpty()

View File

@ -3,24 +3,15 @@ package com.h.pixeldroid
import android.os.Bundle
import android.util.Log
import android.view.View
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.di.PixelfedAPIHolder
import com.h.pixeldroid.objects.Report
import com.h.pixeldroid.objects.Status
import kotlinx.android.synthetic.main.activity_report.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import javax.inject.Inject
class ReportActivity : BaseActivity() {
@Inject
lateinit var db: AppDatabase
@Inject
lateinit var apiHolder: PixelfedAPIHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_report)
@ -29,7 +20,6 @@ class ReportActivity : BaseActivity() {
val status = intent.getSerializableExtra(Status.POST_TAG) as Status?
(this.application as Pixeldroid).getAppComponent().inject(this)
//get the currently active user
val user = db.userDao().getActiveUser()

View File

@ -3,7 +3,6 @@ package com.h.pixeldroid
import android.app.SearchManager
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2

View File

@ -2,14 +2,11 @@ package com.h.pixeldroid.di
import android.app.Application
import android.content.Context
import com.h.pixeldroid.*
import com.h.pixeldroid.BaseActivity
import com.h.pixeldroid.Pixeldroid
import com.h.pixeldroid.db.AppDatabase
import com.h.pixeldroid.fragments.BaseFragment
import com.h.pixeldroid.fragments.PostFragment
import com.h.pixeldroid.fragments.SearchDiscoverFragment
import com.h.pixeldroid.fragments.feeds.cachedFeeds.notifications.NotificationsFragment
import dagger.Component
import javax.inject.Singleton
@ -17,16 +14,8 @@ import javax.inject.Singleton
@Component(modules = [ApplicationModule::class, DatabaseModule::class, APIModule::class])
interface ApplicationComponent {
fun inject(application: Pixeldroid?)
fun inject(activity: LoginActivity?)
fun inject(activity: PostActivity?)
fun inject(activity: PostCreationActivity?)
fun inject(activity: ProfileActivity?)
fun inject(mainActivity: MainActivity?)
fun inject(activity: ReportActivity?)
fun inject(activity: BaseActivity?)
fun inject(feedFragment: BaseFragment)
fun inject(followsActivity: FollowsActivity)
val context: Context?
val application: Application?