|
@@ -8,54 +8,68 @@ import android.view.View
|
|
|
import android.view.ViewGroup
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
import androidx.fragment.app.DialogFragment
|
|
|
+import androidx.lifecycle.ViewModelProvider
|
|
|
import autodagger.AutoInjector
|
|
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
|
|
-import com.nextcloud.talk.databinding.DialogPollVoteBinding
|
|
|
+import com.nextcloud.talk.databinding.DialogPollMainBinding
|
|
|
import com.nextcloud.talk.models.database.UserEntity
|
|
|
import com.nextcloud.talk.polls.viewmodels.PollViewModel
|
|
|
-
|
|
|
-var user: UserEntity? = null
|
|
|
-var pollId: Int? = null
|
|
|
-var roomToken: String? = null
|
|
|
-var pollTitle: String? = null
|
|
|
+import javax.inject.Inject
|
|
|
|
|
|
@AutoInjector(NextcloudTalkApplication::class)
|
|
|
-class PollVoteDialogFragment : DialogFragment() {
|
|
|
+class PollMainDialogFragment(
|
|
|
+ private val pollId: String,
|
|
|
+ private val roomToken: String,
|
|
|
+ private val pollTitle: String
|
|
|
+) : DialogFragment() {
|
|
|
+
|
|
|
+ @Inject
|
|
|
+ lateinit var viewModelFactory: ViewModelProvider.Factory
|
|
|
|
|
|
- private lateinit var binding: DialogPollVoteBinding
|
|
|
+ private lateinit var binding: DialogPollMainBinding
|
|
|
private lateinit var viewModel: PollViewModel
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
|
-
|
|
|
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
|
|
|
+
|
|
|
+ viewModel = ViewModelProvider(this, viewModelFactory)[PollViewModel::class.java]
|
|
|
}
|
|
|
|
|
|
@SuppressLint("InflateParams")
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
|
- binding = DialogPollVoteBinding.inflate(LayoutInflater.from(context))
|
|
|
+ binding = DialogPollMainBinding.inflate(LayoutInflater.from(context))
|
|
|
|
|
|
- return AlertDialog.Builder(requireContext())
|
|
|
+ val dialog = AlertDialog.Builder(requireContext())
|
|
|
.setView(binding.root)
|
|
|
.create()
|
|
|
+
|
|
|
+ binding.messagePollTitle.text = pollTitle
|
|
|
+
|
|
|
+ return dialog
|
|
|
}
|
|
|
|
|
|
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
|
|
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
|
return binding.root
|
|
|
}
|
|
|
|
|
|
- @SuppressLint("DefaultLocale")
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
|
|
- binding.messagePollTitle.text = pollTitle
|
|
|
-
|
|
|
- viewModel.viewState.observe(this) { state ->
|
|
|
- // when (state) {
|
|
|
- // }
|
|
|
+ viewModel.viewState.observe(viewLifecycleOwner) { state ->
|
|
|
+ when (state) {
|
|
|
+ PollViewModel.InitialState -> {}
|
|
|
+ is PollViewModel.PollClosedState -> TODO()
|
|
|
+ is PollViewModel.PollOpenState -> {
|
|
|
+ val contentFragment = PollVoteFragment(viewModel)
|
|
|
+ val transaction = childFragmentManager.beginTransaction()
|
|
|
+ transaction.replace(binding.messagePollContentFragment.id, contentFragment)
|
|
|
+ transaction.commit()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- viewModel.initialize(user!!, roomToken!!, pollId!!)
|
|
|
+ viewModel.initialize(roomToken, pollId)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -66,16 +80,8 @@ class PollVoteDialogFragment : DialogFragment() {
|
|
|
fun newInstance(
|
|
|
userEntity: UserEntity,
|
|
|
roomTokenParam: String,
|
|
|
- id: Int,
|
|
|
+ pollId: String,
|
|
|
name: String
|
|
|
- ): PollVoteDialogFragment {
|
|
|
- user = userEntity // TODO replace with "putParcelable" like in SetStatusDialogFragment???
|
|
|
- roomToken = roomTokenParam
|
|
|
- pollId = id
|
|
|
- pollTitle = name
|
|
|
-
|
|
|
- val dialogFragment = PollVoteDialogFragment()
|
|
|
- return dialogFragment
|
|
|
- }
|
|
|
+ ): PollMainDialogFragment = PollMainDialogFragment(pollId, roomTokenParam, name)
|
|
|
}
|
|
|
}
|