Skip to content

Commit

Permalink
Merge pull request #186 from terrakok/dev
Browse files Browse the repository at this point in the history
Dagger-Hilt -> Kotlin-Inject
  • Loading branch information
Hiebeler authored Feb 4, 2025
2 parents 27f2daf + b56c95d commit 8982f29
Show file tree
Hide file tree
Showing 216 changed files with 716 additions and 1,290 deletions.
8 changes: 3 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
alias(libs.plugins.hilt)
id("org.jetbrains.kotlin.plugin.serialization")
id("com.google.devtools.ksp")
alias(libs.plugins.compose.compiler)
Expand Down Expand Up @@ -138,14 +137,13 @@ dependencies {
implementation(libs.androidx.glance.material3)
// work Manager
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.androidx.hilt.work)

implementation(libs.hilt.naviation)
implementation(libs.dagger.hilt)
implementation(libs.ksoup)
ksp(libs.dagger.hilt.compiler)

implementation(libs.kermit)

implementation(libs.kotlinx.datetime)

ksp(libs.kotlin.inject.compiler.ksp)
implementation(libs.kotlin.inject.runtime)
}
30 changes: 12 additions & 18 deletions app/src/main/java/com/daniebeler/pfpixelix/LoginActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.core.view.WindowCompat
import com.daniebeler.pfpixelix.common.Resource
import com.daniebeler.pfpixelix.di.EntryPointComponent
import com.daniebeler.pfpixelix.di.HostSelectionInterceptorInterface
import com.daniebeler.pfpixelix.di.create
import com.daniebeler.pfpixelix.domain.model.LoginData
import com.daniebeler.pfpixelix.domain.usecase.AddNewLoginUseCase
import com.daniebeler.pfpixelix.domain.usecase.FinishLoginUseCase
Expand All @@ -25,42 +27,34 @@ import com.daniebeler.pfpixelix.domain.usecase.UpdateLoginDataUseCase
import com.daniebeler.pfpixelix.domain.usecase.VerifyTokenUseCase
import com.daniebeler.pfpixelix.ui.composables.LoginComposable
import com.daniebeler.pfpixelix.ui.theme.PixelixTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class LoginActivity : ComponentActivity() {

@Inject
lateinit var obtainTokenUseCase: ObtainTokenUseCase

@Inject
lateinit var verifyTokenUseCase: VerifyTokenUseCase

@Inject
lateinit var updateLoginDataUseCase: UpdateLoginDataUseCase

@Inject
lateinit var finishLoginUseCase: FinishLoginUseCase

@Inject
lateinit var newLoginDataUseCase: AddNewLoginUseCase


@Inject
lateinit var getOngoingLoginUseCase: GetOngoingLoginUseCase

@Inject
lateinit var hostSelectionInterceptorInterface: HostSelectionInterceptorInterface


private var isLoadingAfterRedirect: Boolean by mutableStateOf(false)
private var error: String by mutableStateOf("")

override fun onCreate(savedInstanceState: Bundle?) {
EntryPointComponent::class.create(MyApplication.appComponent).let {
obtainTokenUseCase = it.obtainTokenUseCase
verifyTokenUseCase = it.verifyTokenUseCase
updateLoginDataUseCase = it.updateLoginDataUseCase
finishLoginUseCase = it.finishLoginUseCase
newLoginDataUseCase = it.newLoginDataUseCase
getOngoingLoginUseCase = it.getOngoingLoginUseCase
hostSelectionInterceptorInterface = it.hostSelectionInterceptorInterface
}

super.onCreate(savedInstanceState)
enableEdgeToEdge()
WindowCompat.setDecorFitsSystemWindows(window, false)
Expand Down
20 changes: 9 additions & 11 deletions app/src/main/java/com/daniebeler/pfpixelix/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import co.touchlab.kermit.Logger
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
Expand Down Expand Up @@ -63,9 +62,12 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import co.touchlab.kermit.Logger
import coil.compose.AsyncImage
import com.daniebeler.pfpixelix.common.Destinations
import com.daniebeler.pfpixelix.di.EntryPointComponent
import com.daniebeler.pfpixelix.di.HostSelectionInterceptorInterface
import com.daniebeler.pfpixelix.di.create
import com.daniebeler.pfpixelix.domain.model.LoginData
import com.daniebeler.pfpixelix.domain.repository.CountryRepository
import com.daniebeler.pfpixelix.domain.usecase.GetCurrentLoginDataUseCase
Expand Down Expand Up @@ -99,7 +101,6 @@ import com.daniebeler.pfpixelix.ui.composables.timelines.hashtag_timeline.Hashta
import com.daniebeler.pfpixelix.ui.theme.PixelixTheme
import com.daniebeler.pfpixelix.utils.Navigate
import com.daniebeler.pfpixelix.utils.end
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.firstOrNull
Expand All @@ -110,21 +111,12 @@ import kotlinx.serialization.json.Json
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import javax.inject.Inject


@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var currentLoginDataUseCase: GetCurrentLoginDataUseCase

@Inject
lateinit var hostSelectionInterceptorInterface: HostSelectionInterceptorInterface

@Inject
lateinit var repository: CountryRepository

@Inject
lateinit var verifyTokenUseCase: VerifyTokenUseCase

companion object {
Expand All @@ -139,6 +131,12 @@ class MainActivity : ComponentActivity() {

@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
EntryPointComponent::class.create(MyApplication.appComponent).let {
currentLoginDataUseCase = it.currentLoginDataUseCase
hostSelectionInterceptorInterface = it.hostSelectionInterceptorInterface
repository = it.repository
verifyTokenUseCase = it.verifyTokenUseCase
}

super.onCreate(savedInstanceState)
enableEdgeToEdge()
Expand Down
49 changes: 41 additions & 8 deletions app/src/main/java/com/daniebeler/pfpixelix/MyApplication.kt
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
package com.daniebeler.pfpixelix

import android.app.Application
import android.os.Build
import androidx.hilt.work.HiltWorkerFactory
import android.content.Context
import androidx.work.Configuration
import androidx.work.ListenableWorker
import androidx.work.WorkerFactory
import androidx.work.WorkerParameters
import coil.ImageLoader
import coil.ImageLoaderFactory
import coil.disk.DiskCache
import coil.memory.MemoryCache
import coil.request.CachePolicy
import dagger.hilt.android.HiltAndroidApp
import javax.inject.Inject
import com.daniebeler.pfpixelix.di.AppComponent
import com.daniebeler.pfpixelix.di.WorkerComponent
import com.daniebeler.pfpixelix.di.create
import com.daniebeler.pfpixelix.widget.notifications.work_manager.LatestImageTask
import com.daniebeler.pfpixelix.widget.notifications.work_manager.NotificationsTask


@HiltAndroidApp
class MyApplication : Application(), Configuration.Provider, ImageLoaderFactory {

@Inject
lateinit var workerFactory: HiltWorkerFactory

private val workerFactory: WorkerFactory by lazy { MyWorkerFactory(appComponent) }
override val workManagerConfiguration: Configuration
get() = Configuration.Builder().setWorkerFactory(workerFactory).build()

Expand All @@ -37,4 +39,35 @@ class MyApplication : Application(), Configuration.Provider, ImageLoaderFactory
.build())
.build()
}

override fun onCreate() {
appComponent = AppComponent::class.create(this)
super.onCreate()
}

companion object {
lateinit var appComponent: AppComponent
private set
}
}

private class MyWorkerFactory(
private val appComponent: AppComponent
): WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
val workerComponent = WorkerComponent::class.create(
appComponent,
appContext,
workerParameters
)
return when(workerClassName) {
NotificationsTask::class.java.name -> workerComponent.notificationsTask
LatestImageTask::class.java.name -> workerComponent.latestImageTask
else -> null
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import com.daniebeler.pfpixelix.utils.execute
import io.ktor.client.request.forms.MultiPartFormDataContent
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class AccountRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.daniebeler.pfpixelix.domain.model.AuthData
import com.daniebeler.pfpixelix.domain.model.LoginData
import com.daniebeler.pfpixelix.domain.repository.AuthRepository
import kotlinx.coroutines.flow.first
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class AuthRepositoryImpl @Inject constructor(private val dataStore: DataStore<AuthData>) :
AuthRepository {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import com.daniebeler.pfpixelix.utils.NetworkCall
import com.daniebeler.pfpixelix.utils.execute
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class CollectionRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import com.daniebeler.pfpixelix.utils.execute
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject


class CountryRepositoryImpl @Inject constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import com.daniebeler.pfpixelix.utils.NetworkCall
import com.daniebeler.pfpixelix.utils.execute
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class DirectMessagesRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import com.daniebeler.pfpixelix.domain.model.Tag
import com.daniebeler.pfpixelix.domain.repository.HashtagRepository
import com.daniebeler.pfpixelix.utils.NetworkCall
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class HashtagRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.withContext
import java.io.ByteArrayOutputStream
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class PostEditorRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import com.daniebeler.pfpixelix.utils.NetworkCall
import com.daniebeler.pfpixelix.utils.executeWithResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class PostRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ import com.daniebeler.pfpixelix.domain.model.SavedSearchType
import com.daniebeler.pfpixelix.domain.repository.SavedSearchesRepository
import kotlinx.coroutines.flow.Flow
import java.lang.Exception
import javax.inject.Inject
import javax.inject.Singleton
import me.tatarka.inject.annotations.Inject

@Singleton
class SavedSearchesRepositoryImpl @Inject constructor(private val dataStore: DataStore<SavedSearches>) :
SavedSearchesRepository {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import com.daniebeler.pfpixelix.domain.repository.StorageRepository
import com.daniebeler.pfpixelix.ui.composables.profile.ViewEnum
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class StorageRepositoryImpl @Inject constructor(
private val storage: DataStore<Preferences>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.daniebeler.pfpixelix.domain.model.Post
import com.daniebeler.pfpixelix.domain.repository.TimelineRepository
import com.daniebeler.pfpixelix.utils.NetworkCall
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
import me.tatarka.inject.annotations.Inject

class TimelineRepositoryImpl @Inject constructor(
private val pixelfedApi: PixelfedApi
Expand Down
Loading

0 comments on commit 8982f29

Please sign in to comment.