Skip to content

Commit 0583466

Browse files
committed
Update
1 parent 83f228e commit 0583466

File tree

24 files changed

+360
-13
lines changed

24 files changed

+360
-13
lines changed

data/src/main/java/com/shifthackz/joyreactor/data/datasource/remote/CommentsRemoteDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.shifthackz.joyreactor.domain.datasource.CommentsDataSource
44
import com.shifthackz.joyreactor.entity.Comment
55
import com.shifthackz.joyreactor.network.parser.CommentsParser
66

7-
class CommentsRemoteDataSource(
7+
internal class CommentsRemoteDataSource(
88
private val commentsParser: CommentsParser,
99
) : CommentsDataSource.Remote {
1010

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.shifthackz.joyreactor.data.datasource.remote
2+
3+
import com.shifthackz.joyreactor.domain.datasource.SectionsDataSource
4+
import com.shifthackz.joyreactor.entity.JoyReactorLink
5+
import com.shifthackz.joyreactor.entity.Section
6+
import com.shifthackz.joyreactor.network.parser.SectionsParser
7+
8+
internal class SectionsRemoteDataSource(
9+
private val sectionsParser: SectionsParser,
10+
) : SectionsDataSource.Remote {
11+
12+
override suspend fun fetchSections(): Result<List<Section>> {
13+
return sectionsParser.fetchSections(JoyReactorLink.HOME_GOOD.url)
14+
}
15+
}

data/src/main/java/com/shifthackz/joyreactor/data/di/Modules.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ package com.shifthackz.joyreactor.data.di
33
import com.shifthackz.joyreactor.data.datasource.local.PostsLocalDataSource
44
import com.shifthackz.joyreactor.data.datasource.remote.CommentsRemoteDataSource
55
import com.shifthackz.joyreactor.data.datasource.remote.PostsRemoteDataSource
6+
import com.shifthackz.joyreactor.data.datasource.remote.SectionsRemoteDataSource
67
import com.shifthackz.joyreactor.data.repository.CommentsRepositoryImpl
78
import com.shifthackz.joyreactor.data.repository.PostsRepositoryImpl
9+
import com.shifthackz.joyreactor.data.repository.SectionsRepositoryImpl
810
import com.shifthackz.joyreactor.domain.datasource.CommentsDataSource
911
import com.shifthackz.joyreactor.domain.datasource.PostsDataSource
12+
import com.shifthackz.joyreactor.domain.datasource.SectionsDataSource
1013
import com.shifthackz.joyreactor.domain.repository.CommentsRepository
1114
import com.shifthackz.joyreactor.domain.repository.PostsRepository
15+
import com.shifthackz.joyreactor.domain.repository.SectionsRepository
1216
import org.koin.core.module.dsl.factoryOf
1317
import org.koin.dsl.bind
1418
import org.koin.dsl.module
1519

1620
internal val remoteDataSourceModule = module {
1721
factoryOf(::PostsRemoteDataSource) bind PostsDataSource.Remote::class
1822
factoryOf(::CommentsRemoteDataSource) bind CommentsDataSource.Remote::class
23+
factoryOf(::SectionsRemoteDataSource) bind SectionsDataSource.Remote::class
1924
}
2025

2126
internal val localDataSourceModule = module {
@@ -25,6 +30,7 @@ internal val localDataSourceModule = module {
2530
internal val repositoryModule = module {
2631
factoryOf(::PostsRepositoryImpl) bind PostsRepository::class
2732
factoryOf(::CommentsRepositoryImpl) bind CommentsRepository::class
33+
factoryOf(::SectionsRepositoryImpl) bind SectionsRepository::class
2834
}
2935

3036
val dataModule = (remoteDataSourceModule + localDataSourceModule + repositoryModule).toTypedArray()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.shifthackz.joyreactor.data.repository
2+
3+
import com.shifthackz.joyreactor.domain.datasource.SectionsDataSource
4+
import com.shifthackz.joyreactor.domain.repository.SectionsRepository
5+
import com.shifthackz.joyreactor.entity.Section
6+
7+
internal class SectionsRepositoryImpl(
8+
private val sectionsRds: SectionsDataSource.Remote,
9+
) : SectionsRepository {
10+
11+
override suspend fun fetchSections(): Result<List<Section>> {
12+
return sectionsRds.fetchSections()
13+
}
14+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.shifthackz.joyreactor.domain.datasource
2+
3+
import com.shifthackz.joyreactor.entity.Section
4+
5+
sealed interface SectionsDataSource {
6+
7+
interface Remote : SectionsDataSource {
8+
suspend fun fetchSections(): Result<List<Section>>
9+
}
10+
}

domain/src/main/java/com/shifthackz/joyreactor/domain/di/Modules.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.shifthackz.joyreactor.domain.usecase.post.FetchPostsPageUseCase
66
import com.shifthackz.joyreactor.domain.usecase.post.FetchPostsPageUseCaseImpl
77
import com.shifthackz.joyreactor.domain.usecase.post.GetFullPostUseCase
88
import com.shifthackz.joyreactor.domain.usecase.post.GetFullPostUseCaseImpl
9+
import com.shifthackz.joyreactor.domain.usecase.sections.FetchSectionsUseCase
10+
import com.shifthackz.joyreactor.domain.usecase.sections.FetchSectionsUseCaseImpl
911
import org.koin.core.module.dsl.factoryOf
1012
import org.koin.dsl.bind
1113
import org.koin.dsl.module
@@ -14,4 +16,5 @@ val domainModule = module {
1416
factoryOf(::FetchPostsPageUseCaseImpl) bind FetchPostsPageUseCase::class
1517
factoryOf(::GetFullPostUseCaseImpl) bind GetFullPostUseCase::class
1618
factoryOf(::FetchPostCommentsUseCaseImpl) bind FetchPostCommentsUseCase::class
19+
factoryOf(::FetchSectionsUseCaseImpl) bind FetchSectionsUseCase::class
1720
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.shifthackz.joyreactor.domain.repository
2+
3+
import com.shifthackz.joyreactor.entity.Section
4+
5+
interface SectionsRepository {
6+
suspend fun fetchSections(): Result<List<Section>>
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.shifthackz.joyreactor.domain.usecase.sections
2+
3+
import com.shifthackz.joyreactor.entity.Section
4+
5+
interface FetchSectionsUseCase {
6+
suspend operator fun invoke(): Result<List<Section>>
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.shifthackz.joyreactor.domain.usecase.sections
2+
3+
import com.shifthackz.joyreactor.domain.repository.SectionsRepository
4+
import com.shifthackz.joyreactor.entity.Section
5+
6+
internal class FetchSectionsUseCaseImpl(
7+
private val sectionsRepository: SectionsRepository,
8+
) : FetchSectionsUseCase {
9+
10+
override suspend fun invoke(): Result<List<Section>> {
11+
return sectionsRepository.fetchSections()
12+
}
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.shifthackz.joyreactor.entity
2+
3+
data class Section(
4+
val name: String,
5+
val url: String,
6+
val imageUrl: String,
7+
)

0 commit comments

Comments
 (0)