diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt index 2cc9f1bd7..c74d1809f 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt @@ -25,7 +25,7 @@ import com.nextcloud.talk.polls.viewmodels.PollCreateViewModel import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) -class PollCreateDialogFragment() : DialogFragment(), PollCreateOptionsItemListener { +class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener { lateinit var roomToken: String diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt index 0010229b8..0467ad48d 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt @@ -19,7 +19,7 @@ import com.nextcloud.talk.polls.viewmodels.PollMainViewModel import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) -class PollMainDialogFragment() : DialogFragment() { +class PollMainDialogFragment : DialogFragment() { lateinit var user: UserEntity lateinit var roomToken: String @@ -63,7 +63,6 @@ class PollMainDialogFragment() : DialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.viewState.observe(viewLifecycleOwner) { state -> when (state) { PollMainViewModel.InitialState -> {} @@ -84,8 +83,8 @@ class PollMainDialogFragment() : DialogFragment() { } private fun showVoteScreen() { - val contentFragment = PollVoteFragment( - viewModel, + + val contentFragment = PollVoteFragment.newInstance( roomToken, pollId ) @@ -98,10 +97,10 @@ class PollMainDialogFragment() : DialogFragment() { private fun showResultsScreen(poll: Poll) { initVotersAmount(poll.numVoters) - val contentFragment = PollResultsFragment( - user, - viewModel + val contentFragment = PollResultsFragment.newInstance( + user ) + val transaction = childFragmentManager.beginTransaction() transaction.replace(binding.messagePollContentFragment.id, contentFragment) transaction.commit() diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollResultsFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollResultsFragment.kt index 3f8a657af..c2b0215a1 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollResultsFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollResultsFragment.kt @@ -42,16 +42,16 @@ import com.nextcloud.talk.polls.viewmodels.PollResultsViewModel import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) -class PollResultsFragment( - private val user: UserEntity, - private val parentViewModel: PollMainViewModel -) : Fragment(), PollResultItemClickListener { +class PollResultsFragment : Fragment(), PollResultItemClickListener { @Inject lateinit var viewModelFactory: ViewModelProvider.Factory + private lateinit var parentViewModel: PollMainViewModel lateinit var viewModel: PollResultsViewModel + lateinit var user: UserEntity + lateinit var binding: DialogPollResultsBinding private var adapter: PollResultsAdapter? = null @@ -60,6 +60,10 @@ class PollResultsFragment( super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) viewModel = ViewModelProvider(this, viewModelFactory)[PollResultsViewModel::class.java] + parentViewModel = ViewModelProvider(requireParentFragment(), viewModelFactory)[PollMainViewModel::class + .java] + + user = arguments?.getParcelable(KEY_USER_ENTITY)!! } override fun onCreateView( @@ -129,4 +133,19 @@ class PollResultsFragment( override fun onClick(pollResultHeaderItem: PollResultHeaderItem) { viewModel.filterItems() } + + companion object { + private const val KEY_USER_ENTITY = "keyUserEntity" + + @JvmStatic + fun newInstance( + user: UserEntity + ): PollResultsFragment { + val args = Bundle() + args.putParcelable(KEY_USER_ENTITY, user) + val fragment = PollResultsFragment() + fragment.arguments = args + return fragment + } + } } diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt index fba95b230..862d05f60 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt @@ -44,15 +44,16 @@ import com.nextcloud.talk.polls.viewmodels.PollVoteViewModel import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) -class PollVoteFragment( - private val parentViewModel: PollMainViewModel, - private val roomToken: String, - private val pollId: String -) : Fragment() { +class PollVoteFragment : Fragment() { + + lateinit var roomToken: String + + lateinit var pollId: String @Inject lateinit var viewModelFactory: ViewModelProvider.Factory + private lateinit var parentViewModel: PollMainViewModel lateinit var viewModel: PollVoteViewModel private lateinit var binding: DialogPollVoteBinding @@ -61,6 +62,12 @@ class PollVoteFragment( super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) viewModel = ViewModelProvider(this, viewModelFactory)[PollVoteViewModel::class.java] + + parentViewModel = ViewModelProvider(requireParentFragment(), viewModelFactory)[PollMainViewModel::class + .java] + + roomToken = arguments?.getString(KEY_ROOM_TOKEN)!! + pollId = arguments?.getString(KEY_POLL_ID)!! } override fun onCreateView( @@ -187,5 +194,21 @@ class PollVoteFragment( companion object { private val TAG = PollVoteFragment::class.java.simpleName private const val UNLIMITED_VOTES = 0 + + private const val KEY_ROOM_TOKEN = "keyRoomToken" + private const val KEY_POLL_ID = "keyPollId" + + @JvmStatic + fun newInstance( + roomTokenParam: String, + pollId: String + ): PollVoteFragment { + val args = Bundle() + args.putString(KEY_ROOM_TOKEN, roomTokenParam) + args.putString(KEY_POLL_ID, pollId) + val fragment = PollVoteFragment() + fragment.arguments = args + return fragment + } } }