diff --git a/solutions/devsprint-bruno-almeida-1/app/build.gradle b/solutions/devsprint-bruno-almeida-1/app/build.gradle
index b42ad0b..9c6624d 100644
--- a/solutions/devsprint-bruno-almeida-1/app/build.gradle
+++ b/solutions/devsprint-bruno-almeida-1/app/build.gradle
@@ -2,6 +2,8 @@ plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id "kotlin-kapt"
+ id("com.google.dagger.hilt.android")
+
}
android {
@@ -52,4 +54,17 @@ dependencies {
//Glide
implementation 'com.github.bumptech.glide:glide:4.13.2'
kapt 'com.github.bumptech.glide:compiler:4.13.2'
+
+ //Hilt
+ implementation("com.google.dagger:hilt-android:2.44")
+ kapt("com.google.dagger:hilt-android-compiler:2.44")
+
+ //Lifecycle
+ def lifecycle_version = "2.5.1"
+ implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
+}
+
+kapt {
+ correctErrorTypes = true
}
\ No newline at end of file
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/AndroidManifest.xml b/solutions/devsprint-bruno-almeida-1/app/src/main/AndroidManifest.xml
index b1d1c6f..1479eec 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/AndroidManifest.xml
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
>
-}
\ No newline at end of file
+}
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/datasource/RepositoryListDataSourceImpl.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/datasource/RepositoryListDataSourceImpl.kt
index dd3e1c0..08486f3 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/datasource/RepositoryListDataSourceImpl.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/datasource/RepositoryListDataSourceImpl.kt
@@ -3,8 +3,9 @@ package com.devpass.githubapp.data.datasource
import com.devpass.githubapp.data.api.GitHubEndpoint
import com.devpass.githubapp.data.model.Repository
import retrofit2.Call
+import javax.inject.Inject
-class RepositoryListDataSourceImpl(
+class RepositoryListDataSourceImpl @Inject constructor(
private val service: GitHubEndpoint
) : RepositoryListDataSource {
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/model/Repository.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/model/Repository.kt
index 14be7c2..8bd14f2 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/model/Repository.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/model/Repository.kt
@@ -6,13 +6,13 @@ data class Repository(
@SerializedName("name")
var name : String,
@SerializedName("description")
- var description : String,
+ var description : String?,
@SerializedName("stargazers_count")
- var stargazersCount : Int,
+ var stargazersCount : Int?,
@SerializedName("forks_count")
- var forksCount : Int,
+ var forksCount : Int?,
@SerializedName("owner")
var owner : Owner,
@SerializedName("license")
- var license : License
+ var license : License?
)
\ No newline at end of file
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/repository/RepositoryListRepositoryImpl.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/repository/RepositoryListRepositoryImpl.kt
index f297e84..9015a16 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/repository/RepositoryListRepositoryImpl.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/repository/RepositoryListRepositoryImpl.kt
@@ -3,8 +3,9 @@ package com.devpass.githubapp.data.repository
import com.devpass.githubapp.data.datasource.RepositoryListDataSource
import com.devpass.githubapp.data.model.Repository
import retrofit2.Call
+import javax.inject.Inject
-class RepositoryListRepositoryImpl(
+class RepositoryListRepositoryImpl @Inject constructor(
private val repositoryListDataSource: RepositoryListDataSource
) : RepositoryListRepository {
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt
new file mode 100644
index 0000000..f0a167f
--- /dev/null
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt
@@ -0,0 +1,52 @@
+package com.devpass.githubapp.di
+
+import com.devpass.githubapp.data.api.GitHubEndpoint
+import com.devpass.githubapp.data.datasource.RepositoryListDataSource
+import com.devpass.githubapp.data.datasource.RepositoryListDataSourceImpl
+import com.devpass.githubapp.data.repository.RepositoryListRepository
+import com.devpass.githubapp.data.repository.RepositoryListRepositoryImpl
+import com.devpass.githubapp.presentation.viewmodel.RepositoryListViewModel
+import com.devpass.githubapp.utils.NetworkUtils
+import dagger.Binds
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.components.ActivityComponent
+import dagger.hilt.components.SingletonComponent
+
+@Module
+@InstallIn(SingletonComponent::class)
+abstract class Modules {
+
+ @Binds
+ abstract fun bindRepositoryListDataSource(
+ repositoryListDataSource: RepositoryListDataSourceImpl
+ ): RepositoryListDataSource
+
+ @Binds
+ abstract fun bindRepositoryListRepository(
+ repositoryListRepository: RepositoryListRepositoryImpl
+ ): RepositoryListRepository
+}
+
+@Module
+@InstallIn(SingletonComponent::class)
+class Module2 {
+ @Provides
+ fun provideGitHubEndpoint(): GitHubEndpoint {
+ return NetworkUtils
+ .getRetrofitInstance
+ .create(GitHubEndpoint::class.java)
+ }
+}
+
+@Module
+@InstallIn(ActivityComponent::class)
+class Module3 {
+ @Provides
+ fun provideRepositorListViewModel(
+ repository: RepositoryListRepository
+ ): RepositoryListViewModel {
+ return RepositoryListViewModel(repository)
+ }
+}
\ No newline at end of file
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/RepositoryListActivity.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/RepositoryListActivity.kt
index fcd6419..ea6bcfd 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/RepositoryListActivity.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/RepositoryListActivity.kt
@@ -6,24 +6,20 @@ import android.view.MenuItem
import android.widget.SearchView
import androidx.appcompat.app.AppCompatActivity
import com.devpass.githubapp.R
-import com.devpass.githubapp.data.api.GitHubEndpoint
-import com.devpass.githubapp.data.datasource.RepositoryListDataSource
-import com.devpass.githubapp.data.datasource.RepositoryListDataSourceImpl
import com.devpass.githubapp.data.model.Repository
-import com.devpass.githubapp.data.repository.RepositoryListRepository
-import com.devpass.githubapp.data.repository.RepositoryListRepositoryImpl
import com.devpass.githubapp.databinding.ActivityMainBinding
import com.devpass.githubapp.presentation.viewmodel.RepositoryListViewModel
-import com.devpass.githubapp.utils.NetworkUtils
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
+@AndroidEntryPoint
class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
private lateinit var binding: ActivityMainBinding
- private val service: GitHubEndpoint =
- NetworkUtils.getRetrofitInstance.create(GitHubEndpoint::class.java)
- private val dataSource: RepositoryListDataSource = RepositoryListDataSourceImpl(service)
- private val repository: RepositoryListRepository = RepositoryListRepositoryImpl(dataSource)
- private val viewModel: RepositoryListViewModel = RepositoryListViewModel(repository)
+
+ @Inject
+ lateinit var viewModel: RepositoryListViewModel
+
private lateinit var adapter: RepositoryListAdapter
override fun onCreate(savedInstanceState: Bundle?) {
@@ -35,7 +31,7 @@ class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListen
viewModel.repositoryList.observe(this) {
setupRv(it)
}
- //viewModel.getListRepositories()
+ viewModel.getListRepositories()
}
private fun setupRv(repositoryList: List) {
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/viewmodel/RepositoryListViewModel.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/viewmodel/RepositoryListViewModel.kt
index e159b0c..5365b55 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/viewmodel/RepositoryListViewModel.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/presentation/viewmodel/RepositoryListViewModel.kt
@@ -5,20 +5,19 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.devpass.githubapp.data.model.Repository
import com.devpass.githubapp.data.repository.RepositoryListRepository
+import dagger.hilt.android.lifecycle.HiltViewModel
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
+import javax.inject.Inject
-class RepositoryListViewModel(
+@HiltViewModel
+class RepositoryListViewModel @Inject constructor(
private val repository: RepositoryListRepository
) : ViewModel() {
private var _repositoriesList: MutableLiveData> = MutableLiveData()
val repositoryList: LiveData> = _repositoriesList
- init {
- getListRepositories()
- }
-
fun getListRepositories() {
repository.getRepositories("devpass-tech").enqueue(
object : Callback> {
@@ -33,7 +32,7 @@ class RepositoryListViewModel(
})
}
- fun searchRepository(query: String){
+ fun searchRepository(query: String) {
repository.getRepositories(query).enqueue(
object : Callback> {
override fun onFailure(call: Call>, t: Throwable) {
diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/utils/NetworkUtils.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/utils/NetworkUtils.kt
index eb4e505..ba9c430 100644
--- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/utils/NetworkUtils.kt
+++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/utils/NetworkUtils.kt
@@ -1,11 +1,14 @@
package com.devpass.githubapp.utils
import com.google.gson.GsonBuilder
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.android.components.ActivityComponent
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
-const val BASE_URL = "https://api.github.com"
+const val BASE_URL = "https://api.github.com"
object NetworkUtils {
val gson = GsonBuilder().setLenient().create()