diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 668dcecb..b652a564 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,11 +36,6 @@ - - , - @SerialName("support") - val support: Support, -) { - @Serializable - data class User( - @SerialName("id") - val id: Int, - @SerialName("email") - val email: String, - @SerialName("first_name") - val firstName: String, - @SerialName("last_name") - val lastName: String, - @SerialName("avatar") - val avatar: String - ) - - @Serializable - data class Support( - @SerialName("url") - val url: String, - @SerialName("text") - val text: String - ) - - fun toMockFollowerModel() : List = data.map { user -> - MockFollowerModel( - id = user.id, - name = "${user.firstName} ${user.lastName}", - email = user.email, - image = user.avatar - ) - } -} \ No newline at end of file diff --git a/data/src/main/java/com/going/data/repositoryImpl/MockRepositoryImpl.kt b/data/src/main/java/com/going/data/repositoryImpl/MockRepositoryImpl.kt deleted file mode 100644 index a32283cc..00000000 --- a/data/src/main/java/com/going/data/repositoryImpl/MockRepositoryImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.going.data.repositoryImpl - -import com.going.data.datasource.MockDataSource -import com.going.domain.entity.response.MockFollowerModel -import com.going.domain.repository.MockRepository -import javax.inject.Inject - -class MockRepositoryImpl @Inject constructor( - private val mockDataSource: MockDataSource -) : MockRepository { - - override suspend fun getFollowerList( - page: Int - ): Result> = - runCatching { - mockDataSource.getFollowerListData(page).toMockFollowerModel() - } - -} \ No newline at end of file diff --git a/data/src/main/java/com/going/data/service/MockService.kt b/data/src/main/java/com/going/data/service/MockService.kt deleted file mode 100644 index d2a7fcd4..00000000 --- a/data/src/main/java/com/going/data/service/MockService.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.going.data.service - -import com.going.data.dto.response.MockFollowerResponseDto -import retrofit2.http.GET -import retrofit2.http.Query - -interface MockService { - - @GET("api/users") - suspend fun getFollowerList( - @Query("page") page: Int - ): MockFollowerResponseDto - -} \ No newline at end of file diff --git a/domain/src/main/kotlin/com/going/domain/entity/response/MockFollowerModel.kt b/domain/src/main/kotlin/com/going/domain/entity/response/MockFollowerModel.kt deleted file mode 100644 index e4863dad..00000000 --- a/domain/src/main/kotlin/com/going/domain/entity/response/MockFollowerModel.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.going.domain.entity.response - -data class MockFollowerModel( - val id: Int, - val name: String, - val email: String, - val image: String -) diff --git a/domain/src/main/kotlin/com/going/domain/repository/MockRepository.kt b/domain/src/main/kotlin/com/going/domain/repository/MockRepository.kt deleted file mode 100644 index 92d9263e..00000000 --- a/domain/src/main/kotlin/com/going/domain/repository/MockRepository.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.going.domain.repository - -import com.going.domain.entity.response.MockFollowerModel - -interface MockRepository { - - suspend fun getFollowerList( - page: Int - ): Result> - -} \ No newline at end of file diff --git a/presentation/src/main/java/com/going/presentation/mock/MockActivity.kt b/presentation/src/main/java/com/going/presentation/mock/MockActivity.kt deleted file mode 100644 index f418928c..00000000 --- a/presentation/src/main/java/com/going/presentation/mock/MockActivity.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.going.presentation.mock - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.lifecycle.flowWithLifecycle -import androidx.lifecycle.lifecycleScope -import com.going.presentation.R -import com.going.presentation.databinding.ActivityMockBinding -import com.going.ui.base.BaseActivity -import com.going.ui.extension.UiState -import com.going.ui.extension.toast -import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach - -@AndroidEntryPoint -class MockActivity() : BaseActivity(R.layout.activity_mock) { - - private var _adapter: MockAdapter? = null - private val adapter - get() = requireNotNull(_adapter) { getString(R.string.adapter_not_initialized_error_msg) } - - private val viewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - initAdapter() - setFollowerList() - observeFollowerListState() - } - - private fun initAdapter() { - _adapter = MockAdapter() - binding.rvFollower.adapter = adapter - } - - private fun setFollowerList() { - viewModel.getFollowerListFromServer(0) - } - - private fun observeFollowerListState() { - viewModel.followerListState.flowWithLifecycle(lifecycle) - .onEach { state -> - when (state) { - is UiState.Success -> adapter.submitList(state.data) - - is UiState.Failure -> toast(getString(R.string.server_error)) - - is UiState.Loading -> return@onEach - - is UiState.Empty -> return@onEach - } - }.launchIn(lifecycleScope) - } - - override fun onDestroy() { - super.onDestroy() - _adapter = null - } -} diff --git a/presentation/src/main/java/com/going/presentation/mock/MockAdapter.kt b/presentation/src/main/java/com/going/presentation/mock/MockAdapter.kt deleted file mode 100644 index 1d49fe1a..00000000 --- a/presentation/src/main/java/com/going/presentation/mock/MockAdapter.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.going.presentation.mock - -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.ListAdapter -import com.going.domain.entity.response.MockFollowerModel -import com.going.presentation.databinding.ItemMockBinding -import com.going.ui.extension.ItemDiffCallback - -class MockAdapter : ListAdapter(diffUtil) { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MockViewHolder { - val binding: ItemMockBinding = - ItemMockBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return MockViewHolder(binding) - } - - override fun onBindViewHolder(holder: MockViewHolder, position: Int) { - holder.onBind(getItem(position)) - } - - fun addList(newItems: List) { - val currentItems = currentList.toMutableList() - currentItems.addAll(newItems) - submitList(currentItems) - } - - companion object { - private val diffUtil = ItemDiffCallback( - onItemsTheSame = { old, new -> old.id == new.id }, - onContentsTheSame = { old, new -> old == new }, - ) - } -} \ No newline at end of file diff --git a/presentation/src/main/java/com/going/presentation/mock/MockViewHolder.kt b/presentation/src/main/java/com/going/presentation/mock/MockViewHolder.kt deleted file mode 100644 index 2f13a343..00000000 --- a/presentation/src/main/java/com/going/presentation/mock/MockViewHolder.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.going.presentation.mock - -import androidx.recyclerview.widget.RecyclerView -import coil.load -import coil.transform.RoundedCornersTransformation -import com.going.domain.entity.response.MockFollowerModel -import com.going.presentation.databinding.ItemMockBinding - -class MockViewHolder(val binding: ItemMockBinding) : RecyclerView.ViewHolder(binding.root) { - - fun onBind(item: MockFollowerModel) { - binding.run { - tvFollowerName.text = item.name - tvFollowerEmail.text = item.email - ivFollowerImage.load(item.image) { - transformations(RoundedCornersTransformation(10.0F)) - } - } - } - -} \ No newline at end of file diff --git a/presentation/src/main/java/com/going/presentation/mock/MockViewModel.kt b/presentation/src/main/java/com/going/presentation/mock/MockViewModel.kt deleted file mode 100644 index 59df791c..00000000 --- a/presentation/src/main/java/com/going/presentation/mock/MockViewModel.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.going.presentation.mock - -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.going.domain.entity.response.MockFollowerModel -import com.going.domain.repository.MockRepository -import com.going.ui.extension.UiState -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.launch -import javax.inject.Inject - -@HiltViewModel -class MockViewModel @Inject constructor( - private val mockRepository: MockRepository -) : ViewModel() { - - private val _followerListState = MutableStateFlow>>(UiState.Empty) - val followerListState: StateFlow>> = _followerListState - - fun getFollowerListFromServer(page: Int) { - _followerListState.value = UiState.Loading - viewModelScope.launch { - mockRepository.getFollowerList(page) - .onSuccess { response -> - _followerListState.value = UiState.Success(response) - } - .onFailure { - _followerListState.value = UiState.Failure(it.message.orEmpty()) - } - } - } -} \ No newline at end of file