From a51105c33471a7811788042e3a46156beefd665b Mon Sep 17 00:00:00 2001 From: Erik Everardo Date: Sun, 12 Feb 2023 01:31:16 -0600 Subject: [PATCH] work on dependency injection --- .../java/com/isolaatti/comments/Module.kt | 19 ++++++++++++++++++ .../data/repository/CommentsRepositoryImpl.kt | 4 ++-- ...entRepository.kt => CommentsRepository.kt} | 2 +- .../java/com/isolaatti/followers/Module.kt | 19 ++++++++++++++++++ .../followers/data/FollowersRepository.kt | 8 ++++++++ .../followers/domain/FollowersRepository.kt | 4 ++++ .../main/java/com/isolaatti/posts/Module.kt | 20 +++++++++++++++++++ .../data/repository/PostsRepositoryImpl.kt | 8 ++++++++ .../isolaatti/posts/domain/PostsRepository.kt | 4 ++++ .../main/java/com/isolaatti/profile/Module.kt | 3 ++- .../data/repository/ProfileRepositoryImpl.kt | 3 ++- .../profile/presentation/ProfileViewModel.kt | 3 ++- .../profile/ui/DiscussionsFragment.kt | 1 + .../isolaatti/profile/ui/ImagesFragment.kt | 1 + .../isolaatti/settings/ui/SettingsActivity.kt | 2 ++ 15 files changed, 95 insertions(+), 6 deletions(-) rename app/src/main/java/com/isolaatti/comments/domain/{CommentRepository.kt => CommentsRepository.kt} (55%) create mode 100644 app/src/main/java/com/isolaatti/followers/data/FollowersRepository.kt create mode 100644 app/src/main/java/com/isolaatti/followers/domain/FollowersRepository.kt create mode 100644 app/src/main/java/com/isolaatti/posts/data/repository/PostsRepositoryImpl.kt create mode 100644 app/src/main/java/com/isolaatti/posts/domain/PostsRepository.kt diff --git a/app/src/main/java/com/isolaatti/comments/Module.kt b/app/src/main/java/com/isolaatti/comments/Module.kt index 4c517ea..f7bfde6 100644 --- a/app/src/main/java/com/isolaatti/comments/Module.kt +++ b/app/src/main/java/com/isolaatti/comments/Module.kt @@ -1,4 +1,23 @@ package com.isolaatti.comments +import com.isolaatti.comments.data.remote.CommentsApi +import com.isolaatti.comments.data.repository.CommentsRepositoryImpl +import com.isolaatti.comments.domain.CommentsRepository +import com.isolaatti.connectivity.RetrofitClient +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) class Module { + @Provides + fun provideCommentsApi(retrofitClient: RetrofitClient): CommentsApi { + return retrofitClient.client.create(CommentsApi::class.java) + } + @Provides + fun provideCommentsRepository(commentsApi: CommentsApi): CommentsRepository { + return CommentsRepositoryImpl(commentsApi) + } } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/comments/data/repository/CommentsRepositoryImpl.kt b/app/src/main/java/com/isolaatti/comments/data/repository/CommentsRepositoryImpl.kt index 20fc4a2..e361ceb 100644 --- a/app/src/main/java/com/isolaatti/comments/data/repository/CommentsRepositoryImpl.kt +++ b/app/src/main/java/com/isolaatti/comments/data/repository/CommentsRepositoryImpl.kt @@ -1,8 +1,8 @@ package com.isolaatti.comments.data.repository import com.isolaatti.comments.data.remote.CommentsApi -import com.isolaatti.comments.domain.CommentRepository +import com.isolaatti.comments.domain.CommentsRepository import javax.inject.Inject -class CommentsRepositoryImpl @Inject constructor(commentsApi: CommentsApi) : CommentRepository { +class CommentsRepositoryImpl @Inject constructor(private val commentsApi: CommentsApi) : CommentsRepository { } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/comments/domain/CommentRepository.kt b/app/src/main/java/com/isolaatti/comments/domain/CommentsRepository.kt similarity index 55% rename from app/src/main/java/com/isolaatti/comments/domain/CommentRepository.kt rename to app/src/main/java/com/isolaatti/comments/domain/CommentsRepository.kt index d4cf464..81b7de5 100644 --- a/app/src/main/java/com/isolaatti/comments/domain/CommentRepository.kt +++ b/app/src/main/java/com/isolaatti/comments/domain/CommentsRepository.kt @@ -1,5 +1,5 @@ package com.isolaatti.comments.domain -interface CommentRepository { +interface CommentsRepository { } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/followers/Module.kt b/app/src/main/java/com/isolaatti/followers/Module.kt index d36fd9b..242cc7d 100644 --- a/app/src/main/java/com/isolaatti/followers/Module.kt +++ b/app/src/main/java/com/isolaatti/followers/Module.kt @@ -1,4 +1,23 @@ package com.isolaatti.followers +import com.isolaatti.connectivity.RetrofitClient +import com.isolaatti.followers.data.FollowersRepositoryImpl +import com.isolaatti.followers.data.remote.FollowersApi +import com.isolaatti.followers.domain.FollowersRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) class Module { + @Provides + fun provideFollowersApi(retrofitClient: RetrofitClient): FollowersApi { + return retrofitClient.client.create(FollowersApi::class.java) + } + @Provides + fun provideFollowersRepository(followersApi: FollowersApi): FollowersRepository { + return FollowersRepositoryImpl(followersApi) + } } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/followers/data/FollowersRepository.kt b/app/src/main/java/com/isolaatti/followers/data/FollowersRepository.kt new file mode 100644 index 0000000..4c0b6ea --- /dev/null +++ b/app/src/main/java/com/isolaatti/followers/data/FollowersRepository.kt @@ -0,0 +1,8 @@ +package com.isolaatti.followers.data + +import com.isolaatti.followers.data.remote.FollowersApi +import com.isolaatti.followers.domain.FollowersRepository +import javax.inject.Inject + +class FollowersRepositoryImpl @Inject constructor(followersApi: FollowersApi) : FollowersRepository { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/followers/domain/FollowersRepository.kt b/app/src/main/java/com/isolaatti/followers/domain/FollowersRepository.kt new file mode 100644 index 0000000..2758bc6 --- /dev/null +++ b/app/src/main/java/com/isolaatti/followers/domain/FollowersRepository.kt @@ -0,0 +1,4 @@ +package com.isolaatti.followers.domain + +interface FollowersRepository { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/posts/Module.kt b/app/src/main/java/com/isolaatti/posts/Module.kt index 022a0b3..09cb3e2 100644 --- a/app/src/main/java/com/isolaatti/posts/Module.kt +++ b/app/src/main/java/com/isolaatti/posts/Module.kt @@ -1,4 +1,24 @@ package com.isolaatti.posts +import com.isolaatti.connectivity.RetrofitClient +import com.isolaatti.posts.data.remote.PostsApi +import com.isolaatti.posts.data.repository.PostsRepositoryImpl +import com.isolaatti.posts.domain.PostsRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) class Module { + @Provides + fun providePostsApi(retrofitClient: RetrofitClient): PostsApi { + return retrofitClient.client.create(PostsApi::class.java) + } + + @Provides + fun providePostsRepository(postsApi: PostsApi): PostsRepository { + return PostsRepositoryImpl(postsApi) + } } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/posts/data/repository/PostsRepositoryImpl.kt b/app/src/main/java/com/isolaatti/posts/data/repository/PostsRepositoryImpl.kt new file mode 100644 index 0000000..fff47cf --- /dev/null +++ b/app/src/main/java/com/isolaatti/posts/data/repository/PostsRepositoryImpl.kt @@ -0,0 +1,8 @@ +package com.isolaatti.posts.data.repository + +import com.isolaatti.posts.data.remote.PostsApi +import com.isolaatti.posts.domain.PostsRepository +import javax.inject.Inject + +class PostsRepositoryImpl @Inject constructor(private val postsApi: PostsApi) : PostsRepository { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/posts/domain/PostsRepository.kt b/app/src/main/java/com/isolaatti/posts/domain/PostsRepository.kt new file mode 100644 index 0000000..8a04de7 --- /dev/null +++ b/app/src/main/java/com/isolaatti/posts/domain/PostsRepository.kt @@ -0,0 +1,4 @@ +package com.isolaatti.posts.domain + +interface PostsRepository { +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/profile/Module.kt b/app/src/main/java/com/isolaatti/profile/Module.kt index 453d96d..a163ac0 100644 --- a/app/src/main/java/com/isolaatti/profile/Module.kt +++ b/app/src/main/java/com/isolaatti/profile/Module.kt @@ -7,9 +7,10 @@ import com.isolaatti.profile.domain.ProfileRepository import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent @Module -@InstallIn +@InstallIn(SingletonComponent::class) class Module { @Provides fun provideProfileApi(retrofitClient: RetrofitClient): ProfileApi { diff --git a/app/src/main/java/com/isolaatti/profile/data/repository/ProfileRepositoryImpl.kt b/app/src/main/java/com/isolaatti/profile/data/repository/ProfileRepositoryImpl.kt index 43006a1..78997a6 100644 --- a/app/src/main/java/com/isolaatti/profile/data/repository/ProfileRepositoryImpl.kt +++ b/app/src/main/java/com/isolaatti/profile/data/repository/ProfileRepositoryImpl.kt @@ -6,8 +6,9 @@ import com.isolaatti.profile.domain.ProfileRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import retrofit2.await +import javax.inject.Inject -class ProfileRepositoryImpl(private val profileApi: ProfileApi) : ProfileRepository { +class ProfileRepositoryImpl @Inject constructor(private val profileApi: ProfileApi) : ProfileRepository { override fun getProfile(): Flow = flow { } diff --git a/app/src/main/java/com/isolaatti/profile/presentation/ProfileViewModel.kt b/app/src/main/java/com/isolaatti/profile/presentation/ProfileViewModel.kt index adf3707..5c25afa 100644 --- a/app/src/main/java/com/isolaatti/profile/presentation/ProfileViewModel.kt +++ b/app/src/main/java/com/isolaatti/profile/presentation/ProfileViewModel.kt @@ -1,9 +1,10 @@ package com.isolaatti.profile.presentation import androidx.lifecycle.ViewModel +import com.isolaatti.profile.domain.ProfileRepository import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel -class ProfileViewModel @Inject constructor() : ViewModel() { +class ProfileViewModel @Inject constructor(private val profileRepository: ProfileRepository) : ViewModel() { } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/profile/ui/DiscussionsFragment.kt b/app/src/main/java/com/isolaatti/profile/ui/DiscussionsFragment.kt index f73afce..15b99f2 100644 --- a/app/src/main/java/com/isolaatti/profile/ui/DiscussionsFragment.kt +++ b/app/src/main/java/com/isolaatti/profile/ui/DiscussionsFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.isolaatti.databinding.FragmentDiscussionsBinding +import dagger.hilt.android.lifecycle.HiltViewModel class DiscussionsFragment : Fragment() { lateinit var viewBinding: FragmentDiscussionsBinding diff --git a/app/src/main/java/com/isolaatti/profile/ui/ImagesFragment.kt b/app/src/main/java/com/isolaatti/profile/ui/ImagesFragment.kt index bef6a01..d2c35bd 100644 --- a/app/src/main/java/com/isolaatti/profile/ui/ImagesFragment.kt +++ b/app/src/main/java/com/isolaatti/profile/ui/ImagesFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.isolaatti.databinding.FragmentImagesBinding +import dagger.hilt.android.lifecycle.HiltViewModel class ImagesFragment : Fragment() { lateinit var viewBinding: FragmentImagesBinding diff --git a/app/src/main/java/com/isolaatti/settings/ui/SettingsActivity.kt b/app/src/main/java/com/isolaatti/settings/ui/SettingsActivity.kt index cbb5832..5f45590 100644 --- a/app/src/main/java/com/isolaatti/settings/ui/SettingsActivity.kt +++ b/app/src/main/java/com/isolaatti/settings/ui/SettingsActivity.kt @@ -3,7 +3,9 @@ package com.isolaatti.settings.ui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.isolaatti.databinding.ActivitySettingsBinding +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class SettingsActivity : AppCompatActivity() { lateinit var viewBinding: ActivitySettingsBinding