From b40acec00e72883e250d35207337c877090bd956 Mon Sep 17 00:00:00 2001 From: adenilsonricardo Date: Thu, 16 Feb 2023 08:23:20 -0300 Subject: [PATCH 1/4] =?UTF-8?q?implementa=C3=A7=C3=A3o=20inje=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20dependencia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devsprint-bruno-almeida-1/app/build.gradle | 15 +++++++++++++++ .../app/src/main/AndroidManifest.xml | 1 + .../java/com/devpass/githubapp/HiltApplication.kt | 8 ++++++++ .../repository/RepositoryListRepositoryImpl.kt | 4 +--- .../presentation/RepositoryListActivity.kt | 13 +++++++------ .../viewmodel/RepositoryListViewModel.kt | 2 +- 6 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/HiltApplication.kt 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 @@ > { - return repositoryListDataSource.getRepositories( - "devpass-tech-${query}" - ) + return repositoryListDataSource.getRepositories(query) } } \ 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 1f193b3..e7b8a8e 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 @@ -1,14 +1,10 @@ package com.devpass.githubapp.presentation -import android.app.SearchManager -import android.content.Context import android.os.Bundle import android.view.Menu -import android.view.MenuInflater import android.view.MenuItem -import android.widget.SearchView.OnQueryTextListener +import android.widget.SearchView import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.SearchView import com.devpass.githubapp.R import com.devpass.githubapp.data.api.GitHubEndpoint import com.devpass.githubapp.data.datasource.RepositoryListDataSource @@ -86,7 +82,12 @@ class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListen return true } - override fun onQueryTextChange(p0: String?): Boolean { + override fun onQueryTextChange(p0: String): Boolean { + p0.let { + if (it.isEmpty()){ + viewModel.repositoryList + } + } return true } 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 62a490a..3aee16b 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 @@ -20,7 +20,7 @@ class RepositoryListViewModel( }*/ fun getListRepositories() { - repository.getRepositories("").enqueue( + repository.getRepositories("devpass-tech").enqueue( object : Callback> { override fun onFailure(call: Call>, t: Throwable) { } From 8c801c71109222aa2eeb7c9e186ab13f81698f2e Mon Sep 17 00:00:00 2001 From: adenilsonricardo Date: Thu, 16 Feb 2023 14:22:20 -0300 Subject: [PATCH 2/4] =?UTF-8?q?implementa=C3=A7=C3=A3o=20injecao=20de=20de?= =?UTF-8?q?pendencia.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devpass/githubapp/presentation/RepositoryListActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e7b8a8e..9e70841 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 @@ -85,7 +85,7 @@ class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListen override fun onQueryTextChange(p0: String): Boolean { p0.let { if (it.isEmpty()){ - viewModel.repositoryList + viewModel.getListRepositories() } } return true From 04bd8e9105c79bfcae656721bbc79e31282629c9 Mon Sep 17 00:00:00 2001 From: adenilsonricardo Date: Fri, 17 Feb 2023 18:53:04 -0300 Subject: [PATCH 3/4] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20inje=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20dependencia.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../githubapp/data/api/GitHubEnpoint.kt | 4 +- .../RepositoryListDataSourceImpl.kt | 3 +- .../RepositoryListRepositoryImpl.kt | 3 +- .../java/com/devpass/githubapp/di/Modules.kt | 54 +++++++++++++++++++ .../presentation/RepositoryListActivity.kt | 20 +++---- .../viewmodel/RepositoryListViewModel.kt | 11 ++-- .../devpass/githubapp/utils/NetworkUtils.kt | 5 +- 7 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt diff --git a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/api/GitHubEnpoint.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/api/GitHubEnpoint.kt index 85ec48f..1467bdc 100644 --- a/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/api/GitHubEnpoint.kt +++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/data/api/GitHubEnpoint.kt @@ -5,8 +5,8 @@ import retrofit2.Call import retrofit2.http.GET import retrofit2.http.Path -interface GitHubEndpoint { +interface GitHubEndpoint { @GET("users/{username}/repos") fun getRepositories(@Path("username") username: String) : Call> -} \ 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/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..06b352c --- /dev/null +++ b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt @@ -0,0 +1,54 @@ +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 9e70841..e85512c 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?) { @@ -84,7 +80,7 @@ class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListen override fun onQueryTextChange(p0: String): Boolean { p0.let { - if (it.isEmpty()){ + if (it.isEmpty()) { viewModel.getListRepositories() } } 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 3aee16b..e3a86a1 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() From f5df98a1fabbacafbf139b469d70a65340c97ffd Mon Sep 17 00:00:00 2001 From: adenilsonricardo Date: Sat, 11 Mar 2023 11:01:05 -0300 Subject: [PATCH 4/4] Refatorando projeto. --- .../java/com/devpass/githubapp/data/model/Repository.kt | 8 ++++---- .../app/src/main/java/com/devpass/githubapp/di/Modules.kt | 2 -- .../githubapp/presentation/RepositoryListActivity.kt | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) 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/di/Modules.kt b/solutions/devsprint-bruno-almeida-1/app/src/main/java/com/devpass/githubapp/di/Modules.kt index 06b352c..f0a167f 100644 --- 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 @@ -27,8 +27,6 @@ abstract class Modules { abstract fun bindRepositoryListRepository( repositoryListRepository: RepositoryListRepositoryImpl ): RepositoryListRepository - - } @Module 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 fc0ea58..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 @@ -31,7 +31,7 @@ class RepositoryListActivity : AppCompatActivity(), SearchView.OnQueryTextListen viewModel.repositoryList.observe(this) { setupRv(it) } - //viewModel.getListRepositories() + viewModel.getListRepositories() } private fun setupRv(repositoryList: List) {