From a17ae36bab4e66f037bd14b4daf7b5314790b506 Mon Sep 17 00:00:00 2001 From: gabrielmoro Date: Mon, 3 Aug 2026 17:24:02 -0300 Subject: [PATCH] Solve arc violations --- config/detekt/popcorngp-config.json | 5 ++--- ...eamRepository.kt => DetailStreamRepositoryImpl.kt} | 9 +-------- .../feature/detail/domain/DetailStreamRepository.kt | 11 +++++++++++ ...sitory.kt => ProfilePickerStreamRepositoryImpl.kt} | 7 ++----- .../profile/domain/ProfilePickerStreamRepository.kt | 7 +++++++ .../{domain => presentation}/mapper/SearchMapper.kt | 2 +- .../search/presentation/screens/SearchScreen.kt | 2 +- gradle/libs.versions.toml | 2 +- 8 files changed, 26 insertions(+), 19 deletions(-) rename feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/{DetailStreamRepository.kt => DetailStreamRepositoryImpl.kt} (85%) create mode 100644 feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/domain/DetailStreamRepository.kt rename feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/{ProfilePickerStreamRepository.kt => ProfilePickerStreamRepositoryImpl.kt} (88%) create mode 100644 feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/domain/ProfilePickerStreamRepository.kt rename feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/{domain => presentation}/mapper/SearchMapper.kt (86%) diff --git a/config/detekt/popcorngp-config.json b/config/detekt/popcorngp-config.json index a6446548..a4679e9a 100644 --- a/config/detekt/popcorngp-config.json +++ b/config/detekt/popcorngp-config.json @@ -4,14 +4,13 @@ { "filePattern": "^.*/data/.+\\.kt$", "forbiddenDependencies": [ - "^.*/domain/.+\\.kt$", - "^.*/presentation/.+\\.kt$" + ".*\\.presentation\\..+" ] }, { "filePattern": "^.*/domain/.+\\.kt$", "forbiddenDependencies": [ - "^.*/presentation/.+\\.kt$" + ".*\\.presentation\\..+" ] }, { diff --git a/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepository.kt b/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepositoryImpl.kt similarity index 85% rename from feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepository.kt rename to feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepositoryImpl.kt index a917f821..b47e4996 100644 --- a/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepository.kt +++ b/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/data/DetailStreamRepositoryImpl.kt @@ -3,6 +3,7 @@ package com.codandotv.streamplayerapp.feature.detail.data import com.codandotv.streamplayerapp.core.local.storage.data.dao.FavoriteDao import com.codandotv.streamplayerapp.core.networking.handleError.toFlow import com.codandotv.streamplayerapp.feature.detail.domain.DetailStream +import com.codandotv.streamplayerapp.feature.detail.domain.DetailStreamRepository import com.codandotv.streamplayerapp.feature.detail.domain.VideoStream import com.codandotv.streamplayerapp.feature.detail.domain.toDetailStream import com.codandotv.streamplayerapp.feature.detail.domain.toDetailStreamLocal @@ -10,14 +11,6 @@ import com.codandotv.streamplayerapp.feature.detail.domain.toVideoStreams import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -interface DetailStreamRepository { - suspend fun getMovie(): Flow - suspend fun deleteFromMyList(movie: String) - suspend fun insertToMyList(movie: DetailStream) - suspend fun isFavorite(movieId: String): Boolean - suspend fun getVideoStreams(): Flow> -} - class DetailStreamRepositoryImpl( private val movieId: String, private val service: DetailStreamService, diff --git a/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/domain/DetailStreamRepository.kt b/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/domain/DetailStreamRepository.kt new file mode 100644 index 00000000..7fb1266e --- /dev/null +++ b/feature-detail/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/detail/domain/DetailStreamRepository.kt @@ -0,0 +1,11 @@ +package com.codandotv.streamplayerapp.feature.detail.domain + +import kotlinx.coroutines.flow.Flow + +interface DetailStreamRepository { + suspend fun getMovie(): Flow + suspend fun deleteFromMyList(movie: String) + suspend fun insertToMyList(movie: DetailStream) + suspend fun isFavorite(movieId: String): Boolean + suspend fun getVideoStreams(): Flow> +} diff --git a/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepository.kt b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepositoryImpl.kt similarity index 88% rename from feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepository.kt rename to feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepositoryImpl.kt index 28e43084..5ba11ab2 100644 --- a/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepository.kt +++ b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/data/ProfilePickerStreamRepositoryImpl.kt @@ -2,6 +2,7 @@ package com.codandotv.streamplayerapp.feature.profile.data import com.codandotv.streamplayerapp.core.networking.handleError.toFlow import com.codandotv.streamplayerapp.core.networking.handleError.toResult +import com.codandotv.streamplayerapp.feature.profile.domain.ProfilePickerStreamRepository import com.codandotv.streamplayerapp.feature.profile.domain.ProfileStream import com.codandotv.streamplayerapp.feature.profile.domain.toProfiles import kotlinx.coroutines.flow.Flow @@ -9,16 +10,12 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import org.koin.core.annotation.Factory -interface ProfilePickerStreamRepository { - suspend fun getProfiles(): Flow> -} - @Factory class ProfilePickerStreamRepositoryImpl( private val service: ProfilePickerStreamService ) : ProfilePickerStreamRepository { - override suspend fun getProfiles(): Flow> { + override suspend fun getProfiles(): Flow> { with(service.getProfiles()) { if (this.toResult().isFailure || this.toResult().getOrNull() == null) { return flowOf(mockProfiles) diff --git a/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/domain/ProfilePickerStreamRepository.kt b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/domain/ProfilePickerStreamRepository.kt new file mode 100644 index 00000000..61455b87 --- /dev/null +++ b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/profile/domain/ProfilePickerStreamRepository.kt @@ -0,0 +1,7 @@ +package com.codandotv.streamplayerapp.feature.profile.domain + +import kotlinx.coroutines.flow.Flow + +interface ProfilePickerStreamRepository { + suspend fun getProfiles(): Flow> +} diff --git a/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/domain/mapper/SearchMapper.kt b/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/mapper/SearchMapper.kt similarity index 86% rename from feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/domain/mapper/SearchMapper.kt rename to feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/mapper/SearchMapper.kt index 78fa8b16..6883a0cd 100644 --- a/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/domain/mapper/SearchMapper.kt +++ b/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/mapper/SearchMapper.kt @@ -1,4 +1,4 @@ -package com.codandotv.streamplayerapp.feature.search.domain.mapper +package com.codandotv.streamplayerapp.feature.search.presentation.mapper import com.codandotv.streamplayerapp.core.shared.Url import com.codandotv.streamplayerapp.feature.search.data.model.ListSearchStreamResponse diff --git a/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/screens/SearchScreen.kt b/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/screens/SearchScreen.kt index 5e7c9d34..032822c2 100644 --- a/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/screens/SearchScreen.kt +++ b/feature-search/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature/search/presentation/screens/SearchScreen.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.codandotv.streamplayerapp.core.navigation.extensions.goBack -import com.codandotv.streamplayerapp.feature.search.domain.mapper.toSearchStreamCardModel +import com.codandotv.streamplayerapp.feature.search.presentation.mapper.toSearchStreamCardModel import com.codandotv.streamplayerapp.feature.search.presentation.widgets.SearchStreamCard import com.codandotv.streamplayerapp.feature.search.presentation.widgets.SearchableTopBar import com.codandotv.streamplayerapp.feature.search.presentation.widgets.StreamsEmpty diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f7c35a17..8e7ccf17 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -25,7 +25,7 @@ cameraCore = "1.4.2" moko-permissions = "0.19.1" #Test -popcornguineapigDetektRule = "1.0.0" +popcornguineapigDetektRule = "1.0.1" test_junit = "4.13.2" androidx_core_testing = "2.2.0" mockk = "1.13.7"