work on dependency injection

This commit is contained in:
Erik Everardo 2023-02-12 01:31:16 -06:00
parent 34c61df362
commit a51105c334
15 changed files with 95 additions and 6 deletions

View File

@ -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)
}
}

View File

@ -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 {
}

View File

@ -1,5 +1,5 @@
package com.isolaatti.comments.domain
interface CommentRepository {
interface CommentsRepository {
}

View File

@ -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)
}
}

View File

@ -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 {
}

View File

@ -0,0 +1,4 @@
package com.isolaatti.followers.domain
interface FollowersRepository {
}

View File

@ -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)
}
}

View File

@ -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 {
}

View File

@ -0,0 +1,4 @@
package com.isolaatti.posts.domain
interface PostsRepository {
}

View File

@ -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 {

View File

@ -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<UserProfileDto> = flow {
}

View File

@ -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() {
}

View File

@ -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

View File

@ -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

View File

@ -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