diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 20ba44059..c2b80f7e9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -84,7 +84,6 @@ dependencies { implementation(projects.data.device) implementation(projects.data.onboarding) implementation(projects.data.lock) - implementation(projects.data.main) // Core implementation(projects.core.common) diff --git a/core/network/src/main/java/com/hmh/hamyeonham/core/network/di/MainModule.kt b/core/network/src/main/java/com/hmh/hamyeonham/core/network/di/MainModule.kt deleted file mode 100644 index b3017e95a..000000000 --- a/core/network/src/main/java/com/hmh/hamyeonham/core/network/di/MainModule.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.hmh.hamyeonham.core.network.di - -import com.hmh.hamyeonham.common.qualifier.Secured -import com.hmh.hamyeonham.core.network.main.MainService -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import retrofit2.Retrofit -import retrofit2.create -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -object MainModule { - @Provides - @Singleton - fun provideMainService(@Secured retrofit: Retrofit): MainService = retrofit.create() -} diff --git a/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/MainService.kt b/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/MainService.kt deleted file mode 100644 index 147c08e37..000000000 --- a/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/MainService.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.hmh.hamyeonham.core.network.main - -import com.hmh.hamyeonham.core.network.main.model.BannerResponse -import com.hmh.hamyeonham.core.network.model.BaseResponse -import retrofit2.http.GET - -interface MainService { - @GET("api/v2/banner") - suspend fun getBanner(): BaseResponse -} \ No newline at end of file diff --git a/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/model/BannerResponse.kt b/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/model/BannerResponse.kt deleted file mode 100644 index 0dbea70e7..000000000 --- a/core/network/src/main/java/com/hmh/hamyeonham/core/network/main/model/BannerResponse.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.hmh.hamyeonham.core.network.main.model - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class BannerResponse( - @SerialName("title") val title: String? = null, - @SerialName("subTitle") val subTitle: String? = null, - @SerialName("imageUrl") val imageUrl: String? = null, - @SerialName("linkUrl") val linkUrl: String? = null, - @SerialName("backgroundColors") val backgroundColors: List? = null -) diff --git a/core/viewmodel/main/build.gradle.kts b/core/viewmodel/main/build.gradle.kts index da4a54fb8..c5fb4bb9d 100644 --- a/core/viewmodel/main/build.gradle.kts +++ b/core/viewmodel/main/build.gradle.kts @@ -12,7 +12,6 @@ dependencies { implementation(projects.domain.challenge) implementation(projects.domain.userinfo) implementation(projects.domain.lock) - implementation(projects.domain.main) implementation(projects.core.network) implementation(projects.core.common) diff --git a/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/HomeItem.kt b/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/HomeItem.kt index 17c9abe3f..65ec59c1f 100644 --- a/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/HomeItem.kt +++ b/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/HomeItem.kt @@ -1,7 +1,5 @@ package com.hmh.hamyeonham.core.viewmodel -import com.hmh.hamyeonham.core.viewmodel.HomeItem.BannerModel -import com.hmh.hamyeonham.domain.main.banner.model.Banner import com.hmh.hamyeonham.usagestats.model.UsageStatusAndGoal sealed class HomeItem { @@ -21,19 +19,4 @@ sealed class HomeItem { val usageAppStatusAndGoal: UsageStatusAndGoal.App, ) : HomeItem() - data class BannerModel( - val title: String, - val subTitle: String, - val imageUrl: String, - val linkUrl: String, - val backgroundColors: List - ) : HomeItem() -} - -fun Banner.toBannerModel() = BannerModel( - title, - subTitle, - imageUrl, - linkUrl, - backgroundColors, -) \ No newline at end of file +} \ No newline at end of file diff --git a/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt b/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt index 871f566a6..51deb0f11 100644 --- a/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt +++ b/core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.viewModelScope import com.hmh.hamyeonham.common.time.getCurrentDayStartEndEpochMillis import com.hmh.hamyeonham.core.domain.usagegoal.model.AppUsageGoal import com.hmh.hamyeonham.core.domain.usagegoal.repository.UsageGoalsRepository -import com.hmh.hamyeonham.domain.main.MainRepository import com.hmh.hamyeonham.lock.UpdateIsUnLockUseCase import com.hmh.hamyeonham.usagestats.model.UsageStatusAndGoal import com.hmh.hamyeonham.usagestats.usecase.GetUsageStatsListUseCase @@ -18,7 +17,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import timber.log.Timber @@ -28,7 +27,6 @@ import javax.inject.Inject class MainViewModel @Inject constructor( private val usageGoalsRepository: UsageGoalsRepository, private val userInfoRepository: UserInfoRepository, - private val mainRepository: MainRepository, private val getUsageStatsListUseCase: GetUsageStatsListUseCase, private val updateIsUnLockUseCase: UpdateIsUnLockUseCase, ) : ViewModel() { @@ -39,20 +37,14 @@ class MainViewModel @Inject constructor( private val _usageStatusAndGoals = MutableStateFlow(UsageStatusAndGoal()) val usageStatusAndGoals = _usageStatusAndGoals.asStateFlow() - private val banner = MutableStateFlow(null) - - val homeItems = combine( - banner, - usageStatusAndGoals - ) { bannerModel, usageStatusAndGoals -> - combineHomeItems(bannerModel, usageStatusAndGoals) - }.stateIn(viewModelScope, SharingStarted.Lazily, emptyList()) + val homeItems = usageStatusAndGoals + .map { usage -> combineHomeItems(usage) } + .stateIn(viewModelScope, SharingStarted.Lazily, emptyList()) private val _effect = MutableSharedFlow() val effect = _effect.asSharedFlow() init { - getBanner() viewModelScope.launch(Dispatchers.Main) { updateIsUnLockUseCase() } @@ -122,21 +114,7 @@ class MainViewModel @Inject constructor( _usageStatusAndGoals.value = usageStatsList } - private fun getBanner() { - viewModelScope.launch { - val bannerData = mainRepository - .getBanner() - .getOrNull() - if (bannerData == null) return@launch - if (bannerData.imageUrl.isBlank()) return@launch - if (bannerData.title.isBlank()) return@launch - - banner.value = bannerData.toBannerModel() - } - } - private fun combineHomeItems( - banner: HomeItem.BannerModel?, usageStatusAndGoal: UsageStatusAndGoal ): List { val items = mutableListOf() @@ -149,10 +127,6 @@ class MainViewModel @Inject constructor( ) ) - banner?.let { - items.add(it) - } - items.addAll( usageStatusAndGoal.apps.map { apps -> HomeItem.UsageStaticsModel(apps) diff --git a/data/main/src/main/java/com/hmh/hamyeonham/data/main/DefaultMainRepository.kt b/data/main/src/main/java/com/hmh/hamyeonham/data/main/DefaultMainRepository.kt deleted file mode 100644 index dd4e7b907..000000000 --- a/data/main/src/main/java/com/hmh/hamyeonham/data/main/DefaultMainRepository.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.hmh.hamyeonham.data.main - -import com.hmh.hamyeonham.core.network.main.MainService -import com.hmh.hamyeonham.domain.main.MainRepository -import com.hmh.hamyeonham.domain.main.banner.model.Banner -import com.hmh.hamyeonham.login.mapper.toBanner -import javax.inject.Inject - -class DefaultMainRepository @Inject constructor( - private val mainService: MainService -) : MainRepository { - override suspend fun getBanner(): Result { - return runCatching { - mainService.getBanner().data.toBanner() - } - } -} \ No newline at end of file diff --git a/data/main/src/main/java/com/hmh/hamyeonham/data/main/di/MainModule.kt b/data/main/src/main/java/com/hmh/hamyeonham/data/main/di/MainModule.kt deleted file mode 100644 index 03a6cad92..000000000 --- a/data/main/src/main/java/com/hmh/hamyeonham/data/main/di/MainModule.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.hmh.hamyeonham.data.main.di - -import com.hmh.hamyeonham.data.main.DefaultMainRepository -import com.hmh.hamyeonham.domain.main.MainRepository -import dagger.Binds -import dagger.Module -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -object MainModule { - @Module - @InstallIn(SingletonComponent::class) - interface Binder { - @Binds - @Singleton - fun provideUsageGoalsRepository(mainRepository: DefaultMainRepository): MainRepository - } -} diff --git a/data/main/src/main/java/com/hmh/hamyeonham/data/main/mapper/Mapper.kt b/data/main/src/main/java/com/hmh/hamyeonham/data/main/mapper/Mapper.kt deleted file mode 100644 index 0435a060c..000000000 --- a/data/main/src/main/java/com/hmh/hamyeonham/data/main/mapper/Mapper.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.hmh.hamyeonham.login.mapper - -import com.hmh.hamyeonham.core.network.main.model.BannerResponse -import com.hmh.hamyeonham.domain.main.banner.model.Banner - -internal fun BannerResponse.toBanner(): Banner { - return Banner( - title = this.title.orEmpty(), - subTitle = this.subTitle.orEmpty(), - imageUrl = this.imageUrl.orEmpty(), - linkUrl = this.linkUrl.orEmpty(), - backgroundColors = this.backgroundColors.orEmpty() - ) -} - - - diff --git a/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/MainRepository.kt b/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/MainRepository.kt deleted file mode 100644 index 98d3fd1ed..000000000 --- a/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/MainRepository.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.hmh.hamyeonham.domain.main - -import com.hmh.hamyeonham.domain.main.banner.model.Banner - -interface MainRepository { - suspend fun getBanner(): Result -} \ No newline at end of file diff --git a/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/banner/model/Banner.kt b/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/banner/model/Banner.kt deleted file mode 100644 index 5332bff04..000000000 --- a/domain/main/src/main/java/com/hmh/hamyeonham/domain/main/banner/model/Banner.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.hmh.hamyeonham.domain.main.banner.model - -data class Banner( - val title: String, - val subTitle: String, - val imageUrl: String, - val linkUrl: String, - val backgroundColors: List -) diff --git a/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/BannerViewHolder.kt b/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/BannerViewHolder.kt deleted file mode 100644 index 637efb3e9..000000000 --- a/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/BannerViewHolder.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.hmh.hamyeonham.feature.main.home - -import android.content.ActivityNotFoundException -import android.content.Intent -import android.net.Uri -import androidx.recyclerview.widget.RecyclerView -import coil.load -import com.hmh.hamyeonham.common.context.toast -import com.hmh.hamyeonham.common.image.setBackgroundColors -import com.hmh.hamyeonham.common.image.setCornerRadius -import com.hmh.hamyeonham.core.viewmodel.HomeItem -import com.hmh.hamyeonham.feature.main.R -import com.hmh.hamyeonham.feature.main.databinding.ItemBannerBinding - -class BannerViewHolder( - private val binding: ItemBannerBinding, -) : RecyclerView.ViewHolder(binding.root) { - fun onBind(item: HomeItem.BannerModel) { - val context = binding.root.context - binding.run { - ivImage.load(item.imageUrl) - tvTitle.text = item.title - tvSubTitle.text = item.subTitle - - ivBackground - .setBackgroundColors(item.backgroundColors) - .setCornerRadius(100F) - } - binding.root.setOnClickListener { - try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(item.linkUrl)) - context.startActivity(intent) - } catch (e: ActivityNotFoundException) { - val errorMessage = context.getString(R.string.error_activity_not_found) - context.toast(errorMessage) - } - } - } -} diff --git a/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/UsageStaticsAdapter.kt b/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/UsageStaticsAdapter.kt index 5c8608d2f..559bf5102 100644 --- a/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/UsageStaticsAdapter.kt +++ b/feature/main/src/main/java/com/hmh/hamyeonham/feature/main/home/UsageStaticsAdapter.kt @@ -6,7 +6,6 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.hmh.hamyeonham.common.view.ItemDiffCallback import com.hmh.hamyeonham.core.viewmodel.HomeItem -import com.hmh.hamyeonham.feature.main.databinding.ItemBannerBinding import com.hmh.hamyeonham.feature.main.databinding.ItemUsagestaticBinding import com.hmh.hamyeonham.feature.main.databinding.ItemUsagestaticTotalBinding @@ -31,11 +30,6 @@ class UsageStaticsAdapter : ListAdapter( val binding = ItemUsagestaticBinding.inflate(inflater, parent, false) UsageStaticsViewHolder(binding, parent.context) } - - HomeItemViewType.BANNER_ITEM_TYPE -> { - val binding = ItemBannerBinding.inflate(inflater, parent, false) - BannerViewHolder(binding) - } } } @@ -53,11 +47,6 @@ class UsageStaticsAdapter : ListAdapter( val item = currentList.getOrNull(position) as? HomeItem.UsageStaticsModel ?: return holder.onBind(item) } - - is BannerViewHolder -> { - val item = currentList.getOrNull(position) as? HomeItem.BannerModel ?: return - holder.onBind(item) - } } } @@ -66,7 +55,6 @@ class UsageStaticsAdapter : ListAdapter( val itemType = when (currentItem) { is HomeItem.TotalModel -> HomeItemViewType.TOTAL_ITEM_TYPE is HomeItem.UsageStaticsModel -> HomeItemViewType.APP_ITEM_TYPE - is HomeItem.BannerModel -> HomeItemViewType.BANNER_ITEM_TYPE } return HomeItemViewType.getOrdinal(itemType) } @@ -78,9 +66,7 @@ class UsageStaticsAdapter : ListAdapter( enum class HomeItemViewType { TOTAL_ITEM_TYPE, - APP_ITEM_TYPE, - BANNER_ITEM_TYPE, - ; + APP_ITEM_TYPE; companion object { fun fromOrdinal(ordinal: Int) = diff --git a/feature/main/src/main/res/layout/item_banner.xml b/feature/main/src/main/res/layout/item_banner.xml deleted file mode 100644 index c149d1709..000000000 --- a/feature/main/src/main/res/layout/item_banner.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - diff --git a/settings.gradle.kts b/settings.gradle.kts index 492b94101..3383bb7ed 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -33,14 +33,12 @@ include(":data:userinfo") include(":data:device") include(":data:challenge") include(":data:lock") -include(":data:main") include(":domain:userinfo") include(":domain:usagestats") include(":domain:challenge") include(":domain:onboarding") include(":domain:lock") -include(":domain:main") include(":core:common") include(":core:database")