diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailAction.kt new file mode 100644 index 0000000000..58a059b7a5 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailAction.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.roomprofile.polls.detail + +import im.vector.app.core.platform.VectorViewModelAction + +sealed interface RoomPollDetailAction : VectorViewModelAction { + +} diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailController.kt index 72ce1b2f56..647c036513 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailController.kt @@ -24,17 +24,18 @@ import javax.inject.Inject class RoomPollDetailController @Inject constructor( -) : TypedEpoxyController() { +) : TypedEpoxyController() { - override fun buildModels(viewState: RoomPollsViewState?) { + override fun buildModels(viewState: RoomPollDetailViewState?) { viewState ?: return - val pollSummary = viewState.getSelectedPoll() ?: return PollItem_() + /* .eventId(pollSummary.id) .pollQuestion(pollSummary.title.toEpoxyCharSequence()) .canVote(viewState.canVoteSelectedPoll()) .optionViewStates(pollSummary.optionViewStates) .ended(viewState.canVoteSelectedPoll().not()) + */ } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailFragment.kt index 96eea5bdd8..cfab132947 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailFragment.kt @@ -45,7 +45,7 @@ class RoomPollDetailFragment : VectorBaseFragment @Inject lateinit var roomPollDetailController: RoomPollDetailController - private val viewModel: RoomPollsViewModel by fragmentViewModel() + private val viewModel: RoomPollDetailViewModel by fragmentViewModel() private val roomPollDetailArgs: RoomPollDetailArgs by args() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRoomPollDetailBinding { @@ -61,9 +61,9 @@ class RoomPollDetailFragment : VectorBaseFragment ) } - private fun setupToolbar(roomPollsType: RoomPollsType) { - val title = if (roomPollsType == RoomPollsType.ACTIVE) getString(R.string.room_polls_active) - else getString(R.string.room_polls_ended) + private fun setupToolbar(isEnded: Boolean) { + val title = if (isEnded) getString(R.string.room_polls_ended) + else getString(R.string.room_polls_active) setupToolbar(views.roomPollDetailToolbar) .setTitle(title) @@ -71,11 +71,15 @@ class RoomPollDetailFragment : VectorBaseFragment } override fun invalidate() = withState(viewModel) { state -> - setupToolbar(state.selectedRoomPollsType) + state.pollDetail ?: return@withState + setupToolbar(state.pollDetail.isEnded) + + /* state.getSelectedPoll()?.let { _ -> roomPollDetailController.setData(state) } Unit + */ } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewEvent.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewEvent.kt new file mode 100644 index 0000000000..1ee405e0c3 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewEvent.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.roomprofile.polls.detail + +import im.vector.app.core.platform.VectorViewEvents + +sealed class RoomPollDetailViewEvent : VectorViewEvents { + +} diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewModel.kt new file mode 100644 index 0000000000..5d65db78b4 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/detail/RoomPollDetailViewModel.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.roomprofile.polls.detail + +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import im.vector.app.core.platform.VectorViewModel + +class RoomPollDetailViewModel @AssistedInject constructor( + @Assisted initialState: RoomPollDetailViewState, +) : VectorViewModel(initialState) { + + init { + // Subscribe to the poll event and map it + } + + override fun handle(action: RoomPollDetailAction) { + + } +}