From 9df8f2e887617c033466768366d6d5eaf0135add Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Fri, 10 Jun 2022 18:50:28 +0300 Subject: [PATCH] Create fragment --- .../circles/feature/people/PeopleFragment.kt | 62 ++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/futo/circles/feature/people/PeopleFragment.kt b/app/src/main/java/com/futo/circles/feature/people/PeopleFragment.kt index fa5969c99..26fff02eb 100644 --- a/app/src/main/java/com/futo/circles/feature/people/PeopleFragment.kt +++ b/app/src/main/java/com/futo/circles/feature/people/PeopleFragment.kt @@ -1,6 +1,66 @@ package com.futo.circles.feature.people +import android.os.Bundle +import android.view.View import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.DividerItemDecoration +import by.kirich1409.viewbindingdelegate.viewBinding import com.futo.circles.R +import com.futo.circles.databinding.PeopleFragmentBinding +import com.futo.circles.extensions.observeData +import com.futo.circles.extensions.showDialog +import com.futo.circles.feature.people.list.PeopleAdapter +import com.futo.circles.model.PeopleUserListItem +import org.koin.androidx.viewmodel.ext.android.viewModel -class PeopleFragment:Fragment(R.layout.people_fragment) \ No newline at end of file +class PeopleFragment : Fragment(R.layout.people_fragment) { + + private val viewModel by viewModel<PeopleViewModel>() + private val binding by viewBinding(PeopleFragmentBinding::bind) + + private val peopleAdapter by lazy { + PeopleAdapter( + onUserClicked = { user -> navigateToUserPage(user) }, + onIgnore = { user, ignore -> handleIgnoreClicked(user, ignore) }, + ) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupViews() + setupObservers() + } + + private fun setupViews() { + binding.rvUsers.apply { + adapter = peopleAdapter + addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL)) + } + } + + private fun setupObservers() { + viewModel.peopleLiveData.observeData(this) { items -> + peopleAdapter.submitList(items) + } + } + + private fun navigateToUserPage(user: PeopleUserListItem) { + + } + + private fun handleIgnoreClicked(user: PeopleUserListItem, ignore: Boolean) { + if (ignore) showIgnoreConfirmation(user.id) + else viewModel.unIgnoreUser(user.id) + } + + private fun showIgnoreConfirmation(userId: String) { + showDialog( + titleResIdRes = R.string.ignore, + messageResId = R.string.ignore_user_message, + positiveButtonRes = R.string.ignore, + negativeButtonVisible = true, + positiveAction = { viewModel.ignoreUser(userId) } + ) + } + +} \ No newline at end of file -- GitLab