From fa5d44af6515a26a107196e32bbf04b3c86426f6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 11:53:58 +0100 Subject: [PATCH 01/16] Create common parent for Action view model, to handle navigation, action, or other type of event --- .../platform/VectorEventViewModel.kt} | 14 ++++-- .../features/home/HomeActionViewModel.kt | 21 +++++++++ .../riotx/features/home/HomeActivity.kt | 17 +++---- .../riotx/features/home/HomeDetailFragment.kt | 6 +-- ....kt => CreateDirectRoomActionViewModel.kt} | 7 +-- .../createdirect/CreateDirectRoomActivity.kt | 21 ++++----- .../CreateDirectRoomDirectoryUsersFragment.kt | 8 ++-- .../CreateDirectRoomKnownUsersFragment.kt | 6 +-- .../features/home/group/GroupListFragment.kt | 8 ++-- .../home/room/detail/RoomDetailFragment.kt | 44 +++++++++---------- .../{SimpleAction.kt => EventAction.kt} | 43 +++++++++--------- .../action/MessageActionsBottomSheet.kt | 6 +-- .../action/MessageActionsDispatcher.kt | 8 +--- .../action/MessageActionsEpoxyController.kt | 14 +++--- .../action/MessageActionsViewModel.kt | 38 ++++++++-------- .../home/room/list/RoomListFragment.kt | 28 ++++++------ ...QuickActions.kt => RoomListQuickAction.kt} | 15 ++++--- .../RoomListQuickActionsBottomSheet.kt | 4 +- .../RoomListQuickActionsEpoxyController.kt | 28 ++++++------ .../list/actions/RoomListQuickActionsStore.kt | 8 +--- .../roomdirectory/PublicRoomsFragment.kt | 8 ++-- ...del.kt => RoomDirectoryActionViewModel.kt} | 7 +-- .../roomdirectory/RoomDirectoryActivity.kt | 25 ++++++----- .../createroom/CreateRoomActivity.kt | 12 ++--- .../createroom/CreateRoomFragment.kt | 10 ++--- .../picker/RoomDirectoryPickerFragment.kt | 8 ++-- 26 files changed, 216 insertions(+), 198 deletions(-) rename vector/src/main/java/im/vector/riotx/{features/home/HomeNavigationViewModel.kt => core/platform/VectorEventViewModel.kt} (70%) create mode 100644 vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt rename vector/src/main/java/im/vector/riotx/features/home/createdirect/{CreateDirectRoomNavigationViewModel.kt => CreateDirectRoomActionViewModel.kt} (63%) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/{SimpleAction.kt => EventAction.kt} (56%) rename vector/src/main/java/im/vector/riotx/features/home/room/list/actions/{RoomListQuickActions.kt => RoomListQuickAction.kt} (85%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/{RoomDirectoryNavigationViewModel.kt => RoomDirectoryActionViewModel.kt} (64%) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeNavigationViewModel.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt similarity index 70% rename from vector/src/main/java/im/vector/riotx/features/home/HomeNavigationViewModel.kt rename to vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt index 81c340e400..977991cd4a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeNavigationViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt @@ -14,11 +14,17 @@ * limitations under the License. */ -package im.vector.riotx.features.home +package im.vector.riotx.core.platform import androidx.lifecycle.ViewModel -import im.vector.riotx.core.utils.PublishDataSource import im.vector.riotx.core.utils.MutableDataSource +import im.vector.riotx.core.utils.PublishDataSource -class HomeNavigationViewModel(private val source: MutableDataSource = PublishDataSource()) - : ViewModel(), MutableDataSource by source + +interface VectorAction + +/** + * Parent class to handle navigation events, action events, or other any events + */ +open class VectorActionViewModel(private val store: MutableDataSource = PublishDataSource()) + : ViewModel(), MutableDataSource by store diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt new file mode 100644 index 0000000000..250ba8468c --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2019 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.riotx.features.home + +import im.vector.riotx.core.platform.VectorActionViewModel + +class HomeActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index c77e4f9373..459678863e 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -33,6 +33,7 @@ import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.hideKeyboard import im.vector.riotx.core.extensions.replaceFragment import im.vector.riotx.core.platform.ToolbarConfigurable +import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.core.pushers.PushersManager import im.vector.riotx.features.disclaimer.showDisclaimerDialog @@ -48,12 +49,12 @@ import javax.inject.Inject class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { // Supported navigation actions for this Activity - sealed class Navigation { - object OpenDrawer : Navigation() - object OpenGroup : Navigation() + sealed class HomeActivityAction : VectorAction { + object OpenDrawer : HomeActivityAction() + object OpenGroup : HomeActivityAction() } - private lateinit var navigationViewModel: HomeNavigationViewModel + private lateinit var actionViewModel: HomeActionViewModel @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var vectorUncaughtExceptionHandler: VectorUncaughtExceptionHandler @@ -75,18 +76,18 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FcmHelper.ensureFcmTokenIsRetrieved(this, pushManager) - navigationViewModel = ViewModelProviders.of(this).get(HomeNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(this).get(HomeActionViewModel::class.java) drawerLayout.addDrawerListener(drawerListener) if (isFirstCreation()) { replaceFragment(R.id.homeDetailFragmentContainer, LoadingFragment::class.java) replaceFragment(R.id.homeDrawerFragmentContainer, HomeDrawerFragment::class.java) } - navigationViewModel.observe() + actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is Navigation.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) - is Navigation.OpenGroup -> { + is HomeActivityAction.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) + is HomeActivityAction.OpenGroup -> { drawerLayout.closeDrawer(GravityCompat.START) replaceFragment(R.id.homeDetailFragmentContainer, HomeDetailFragment::class.java) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 3c2eb1fe39..2daac15b3d 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -54,7 +54,7 @@ class HomeDetailFragment @Inject constructor( private val unreadCounterBadgeViews = arrayListOf() private val viewModel: HomeDetailViewModel by fragmentViewModel() - private lateinit var navigationViewModel: HomeNavigationViewModel + private lateinit var actionViewModel: HomeActionViewModel override fun getLayoutResId(): Int { return R.layout.fragment_home_detail @@ -63,7 +63,7 @@ class HomeDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity()).get(HomeNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeActionViewModel::class.java) setupBottomNavigationView() setupToolbar() @@ -129,7 +129,7 @@ class HomeDetailFragment @Inject constructor( } groupToolbar.title = "" groupToolbarAvatarImageView.setOnClickListener { - navigationViewModel.post(HomeActivity.Navigation.OpenDrawer) + actionViewModel.post(HomeActivity.HomeActivityAction.OpenDrawer) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomNavigationViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt similarity index 63% rename from vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomNavigationViewModel.kt rename to vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt index 5a84cf4258..beff263ea0 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomNavigationViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt @@ -16,9 +16,6 @@ package im.vector.riotx.features.home.createdirect -import androidx.lifecycle.ViewModel -import im.vector.riotx.core.utils.PublishDataSource -import im.vector.riotx.core.utils.MutableDataSource +import im.vector.riotx.core.platform.VectorActionViewModel -class CreateDirectRoomNavigationViewModel(private val dataSource: MutableDataSource = PublishDataSource()) - : ViewModel(), MutableDataSource by dataSource +class CreateDirectRoomActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index ab7ee0d160..6b5354b2b9 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -32,20 +32,21 @@ import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack import im.vector.riotx.core.platform.SimpleFragmentActivity +import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.WaitingViewData import kotlinx.android.synthetic.main.activity.* import javax.inject.Inject class CreateDirectRoomActivity : SimpleFragmentActivity() { - sealed class Navigation { - object UsersDirectory : Navigation() - object Close : Navigation() - object Previous : Navigation() + sealed class CreateDirectRoomAction : VectorAction { + object OpenUsersDirectory : CreateDirectRoomAction() + object Close : CreateDirectRoomAction() + object GoBack : CreateDirectRoomAction() } private val viewModel: CreateDirectRoomViewModel by viewModel() - lateinit var navigationViewModel: CreateDirectRoomNavigationViewModel + private lateinit var actionViewModel: CreateDirectRoomActionViewModel @Inject lateinit var createDirectRoomViewModelFactory: CreateDirectRoomViewModel.Factory @Inject lateinit var errorFormatter: ErrorFormatter @@ -57,13 +58,13 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) toolbar.visibility = View.GONE - navigationViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomNavigationViewModel::class.java) - navigationViewModel.observe() + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) + actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is Navigation.UsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) - Navigation.Close -> finish() - Navigation.Previous -> onBackPressed() + CreateDirectRoomAction.OpenUsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) + CreateDirectRoomAction.Close -> finish() + CreateDirectRoomAction.GoBack -> onBackPressed() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 10c932342d..915280ae03 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -39,11 +39,11 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var navigationViewModel: CreateDirectRoomNavigationViewModel + private lateinit var actionViewModel: CreateDirectRoomActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) setupRecyclerView() setupSearchByMatrixIdView() setupCloseView() @@ -70,7 +70,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private fun setupCloseView() { createDirectRoomClose.setOnClickListener { - navigationViewModel.post(CreateDirectRoomActivity.Navigation.Previous) + actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.GoBack) } } @@ -81,7 +81,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() viewModel.handle(CreateDirectRoomActions.SelectUser(user)) - navigationViewModel.post(CreateDirectRoomActivity.Navigation.Previous) + actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.GoBack) } override fun retryDirectoryUsersRequest() { diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 02ca8ba55c..9cadbc230f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -49,11 +49,11 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun getMenuRes() = R.menu.vector_create_direct_room private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var navigationViewModel: CreateDirectRoomNavigationViewModel + private lateinit var actionViewModel: CreateDirectRoomActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) vectorBaseActivity.setSupportActionBar(createDirectRoomToolbar) setupRecyclerView() setupFilterView() @@ -89,7 +89,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( private fun setupAddByMatrixIdView() { addByMatrixId.setOnClickListener { - navigationViewModel.post(CreateDirectRoomActivity.Navigation.UsersDirectory) + actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.OpenUsersDirectory) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index a1e13e4acd..8666f57338 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -26,8 +26,8 @@ import im.vector.riotx.R import im.vector.riotx.core.extensions.observeEvent import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.features.home.HomeActionViewModel import im.vector.riotx.features.home.HomeActivity -import im.vector.riotx.features.home.HomeNavigationViewModel import kotlinx.android.synthetic.main.fragment_group_list.* import javax.inject.Inject @@ -36,20 +36,20 @@ class GroupListFragment @Inject constructor( private val groupController: GroupSummaryController ) : VectorBaseFragment(), GroupSummaryController.Callback { - private lateinit var navigationViewModel: HomeNavigationViewModel + private lateinit var actionViewModel: HomeActionViewModel private val viewModel: GroupListViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_group_list override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity()).get(HomeNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeActionViewModel::class.java) groupController.callback = this stateView.contentView = groupListEpoxyRecyclerView groupListEpoxyRecyclerView.setController(groupController) viewModel.subscribe { renderState(it) } viewModel.openGroupLiveData.observeEvent(this) { - navigationViewModel.post(HomeActivity.Navigation.OpenGroup) + actionViewModel.post(HomeActivity.HomeActivityAction.OpenGroup) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 465e085e3b..83004a35de 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -99,7 +99,7 @@ import im.vector.riotx.features.home.room.detail.readreceipts.DisplayReadReceipt import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsBottomSheet import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsDispatcher -import im.vector.riotx.features.home.room.detail.timeline.action.SimpleAction +import im.vector.riotx.features.home.room.detail.timeline.action.EventAction import im.vector.riotx.features.home.room.detail.timeline.edithistory.ViewEditHistoryBottomSheet import im.vector.riotx.features.home.room.detail.timeline.item.* import im.vector.riotx.features.home.room.detail.timeline.reactions.ViewReactionsBottomSheet @@ -749,7 +749,7 @@ class RoomDetailFragment @Inject constructor( .show() } - private fun promptReasonToReportContent(action: SimpleAction.ReportContentCustom) { + private fun promptReasonToReportContent(action: EventAction.ReportContentCustom) { val inflater = requireActivity().layoutInflater val layout = inflater.inflate(R.layout.dialog_report_content, null) @@ -1037,25 +1037,25 @@ class RoomDetailFragment @Inject constructor( textComposerViewModel.process(TextComposerActions.QueryUsers(query)) } - private fun handleActions(action: SimpleAction) { + private fun handleActions(action: EventAction) { when (action) { - is SimpleAction.AddReaction -> { + is EventAction.AddReaction -> { startActivityForResult(EmojiReactionPickerActivity.intent(requireContext(), action.eventId), REACTION_SELECT_REQUEST_CODE) } - is SimpleAction.ViewReactions -> { + is EventAction.ViewReactions -> { ViewReactionsBottomSheet.newInstance(roomDetailArgs.roomId, action.messageInformationData) .show(requireActivity().supportFragmentManager, "DISPLAY_REACTIONS") } - is SimpleAction.Copy -> { + is EventAction.Copy -> { // I need info about the current selected message :/ copyToClipboard(requireContext(), action.content, false) val msg = requireContext().getString(R.string.copied_to_clipboard) showSnackWithMessage(msg, Snackbar.LENGTH_SHORT) } - is SimpleAction.Delete -> { + is EventAction.Delete -> { roomDetailViewModel.process(RoomDetailActions.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) } - is SimpleAction.Share -> { + is EventAction.Share -> { // TODO current data communication is too limited // Need to now the media type // TODO bad, just POC @@ -1083,10 +1083,10 @@ class RoomDetailFragment @Inject constructor( } ) } - is SimpleAction.ViewEditHistory -> { + is EventAction.ViewEditHistory -> { onEditedDecorationClicked(action.messageInformationData) } - is SimpleAction.ViewSource -> { + is EventAction.ViewSource -> { val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) view.findViewById(R.id.event_content_text_view)?.let { it.text = action.content @@ -1097,7 +1097,7 @@ class RoomDetailFragment @Inject constructor( .setPositiveButton(R.string.ok, null) .show() } - is SimpleAction.ViewDecryptedSource -> { + is EventAction.ViewDecryptedSource -> { val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) view.findViewById(R.id.event_content_text_view)?.let { it.text = action.content @@ -1108,42 +1108,42 @@ class RoomDetailFragment @Inject constructor( .setPositiveButton(R.string.ok, null) .show() } - is SimpleAction.QuickReact -> { + is EventAction.QuickReact -> { // eventId,ClickedOn,Add roomDetailViewModel.process(RoomDetailActions.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) } - is SimpleAction.Edit -> { + is EventAction.Edit -> { roomDetailViewModel.process(RoomDetailActions.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is SimpleAction.Quote -> { + is EventAction.Quote -> { roomDetailViewModel.process(RoomDetailActions.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is SimpleAction.Reply -> { + is EventAction.Reply -> { roomDetailViewModel.process(RoomDetailActions.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is SimpleAction.CopyPermalink -> { + is EventAction.CopyPermalink -> { val permalink = PermalinkFactory.createPermalink(roomDetailArgs.roomId, action.eventId) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) } - is SimpleAction.Resend -> { + is EventAction.Resend -> { roomDetailViewModel.process(RoomDetailActions.ResendMessage(action.eventId)) } - is SimpleAction.Remove -> { + is EventAction.Remove -> { roomDetailViewModel.process(RoomDetailActions.RemoveFailedEcho(action.eventId)) } - is SimpleAction.ReportContentSpam -> { + is EventAction.ReportContentSpam -> { roomDetailViewModel.process(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is spam", spam = true)) } - is SimpleAction.ReportContentInappropriate -> { + is EventAction.ReportContentInappropriate -> { roomDetailViewModel.process(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is inappropriate", inappropriate = true)) } - is SimpleAction.ReportContentCustom -> { + is EventAction.ReportContentCustom -> { promptReasonToReportContent(action) } - else -> { + else -> { Toast.makeText(context, "Action $action is not implemented yet", Toast.LENGTH_LONG).show() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/SimpleAction.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt similarity index 56% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/SimpleAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt index ab2fb8e41e..79d615112c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/SimpleAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt @@ -19,66 +19,67 @@ package im.vector.riotx.features.home.room.detail.timeline.action import androidx.annotation.DrawableRes import androidx.annotation.StringRes import im.vector.riotx.R +import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData -sealed class SimpleAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int) { +sealed class EventAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int) : VectorAction { data class AddReaction(val eventId: String) : - SimpleAction(R.string.message_add_reaction, R.drawable.ic_add_reaction) + EventAction(R.string.message_add_reaction, R.drawable.ic_add_reaction) data class Copy(val content: String) : - SimpleAction(R.string.copy, R.drawable.ic_copy) + EventAction(R.string.copy, R.drawable.ic_copy) data class Edit(val eventId: String) : - SimpleAction(R.string.edit, R.drawable.ic_edit) + EventAction(R.string.edit, R.drawable.ic_edit) data class Quote(val eventId: String) : - SimpleAction(R.string.quote, R.drawable.ic_quote) + EventAction(R.string.quote, R.drawable.ic_quote) data class Reply(val eventId: String) : - SimpleAction(R.string.reply, R.drawable.ic_reply) + EventAction(R.string.reply, R.drawable.ic_reply) data class Share(val imageUrl: String) : - SimpleAction(R.string.share, R.drawable.ic_share) + EventAction(R.string.share, R.drawable.ic_share) data class Resend(val eventId: String) : - SimpleAction(R.string.global_retry, R.drawable.ic_refresh_cw) + EventAction(R.string.global_retry, R.drawable.ic_refresh_cw) data class Remove(val eventId: String) : - SimpleAction(R.string.remove, R.drawable.ic_trash) + EventAction(R.string.remove, R.drawable.ic_trash) data class Delete(val eventId: String) : - SimpleAction(R.string.delete, R.drawable.ic_delete) + EventAction(R.string.delete, R.drawable.ic_delete) data class Cancel(val eventId: String) : - SimpleAction(R.string.cancel, R.drawable.ic_close_round) + EventAction(R.string.cancel, R.drawable.ic_close_round) data class ViewSource(val content: String) : - SimpleAction(R.string.view_source, R.drawable.ic_view_source) + EventAction(R.string.view_source, R.drawable.ic_view_source) data class ViewDecryptedSource(val content: String) : - SimpleAction(R.string.view_decrypted_source, R.drawable.ic_view_source) + EventAction(R.string.view_decrypted_source, R.drawable.ic_view_source) data class CopyPermalink(val eventId: String) : - SimpleAction(R.string.permalink, R.drawable.ic_permalink) + EventAction(R.string.permalink, R.drawable.ic_permalink) data class ReportContent(val eventId: String, val senderId: String?) : - SimpleAction(R.string.report_content, R.drawable.ic_flag) + EventAction(R.string.report_content, R.drawable.ic_flag) data class ReportContentSpam(val eventId: String, val senderId: String?) : - SimpleAction(R.string.report_content_spam, R.drawable.ic_report_spam) + EventAction(R.string.report_content_spam, R.drawable.ic_report_spam) data class ReportContentInappropriate(val eventId: String, val senderId: String?) : - SimpleAction(R.string.report_content_inappropriate, R.drawable.ic_report_inappropriate) + EventAction(R.string.report_content_inappropriate, R.drawable.ic_report_inappropriate) data class ReportContentCustom(val eventId: String, val senderId: String?) : - SimpleAction(R.string.report_content_custom, R.drawable.ic_report_custom) + EventAction(R.string.report_content_custom, R.drawable.ic_report_custom) data class QuickReact(val eventId: String, val clickedOn: String, val add: Boolean) : - SimpleAction(0, 0) + EventAction(0, 0) data class ViewReactions(val messageInformationData: MessageInformationData) : - SimpleAction(R.string.message_view_reaction, R.drawable.ic_view_reactions) + EventAction(R.string.message_view_reaction, R.drawable.ic_view_reactions) data class ViewEditHistory(val messageInformationData: MessageInformationData) : - SimpleAction(R.string.message_view_edit_history, R.drawable.ic_view_edit_history) + EventAction(R.string.message_view_edit_history, R.drawable.ic_view_edit_history) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index d0dc3de8f3..fa738e5c42 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -69,12 +69,12 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message messageActionsEpoxyController.listener = this } - override fun didSelectMenuAction(simpleAction: SimpleAction) { - if (simpleAction is SimpleAction.ReportContent) { + override fun didSelectMenuAction(eventAction: EventAction) { + if (eventAction is EventAction.ReportContent) { // Toggle report menu viewModel.toggleReportMenu() } else { - messageActionsStore.post(simpleAction) + messageActionsStore.post(eventAction) dismiss() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt index a11e0c3689..54f9d0d583 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt @@ -15,13 +15,9 @@ */ package im.vector.riotx.features.home.room.detail.timeline.action -import androidx.lifecycle.ViewModel -import im.vector.riotx.core.utils.PublishDataSource -import im.vector.riotx.core.utils.MutableDataSource +import im.vector.riotx.core.platform.VectorActionViewModel /** * Activity shared view model to handle message actions */ -class MessageActionsDispatcher constructor( - private val dataSource: MutableDataSource = PublishDataSource() -) : ViewModel(), MutableDataSource by dataSource +class MessageActionsDispatcher : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt index b7bf69b7a1..e30a383087 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt @@ -84,7 +84,7 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid selecteds(state.quickStates.invoke().map { it.isSelected }) listener(object : BottomSheetItemQuickReactions.Listener { override fun didSelect(emoji: String, selected: Boolean) { - listener?.didSelectMenuAction(SimpleAction.QuickReact(state.eventId, emoji, selected)) + listener?.didSelectMenuAction(EventAction.QuickReact(state.eventId, emoji, selected)) } }) } @@ -101,17 +101,17 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid id("action_$index") iconRes(action.iconResId) textRes(action.titleRes) - showExpand(action is SimpleAction.ReportContent) + showExpand(action is EventAction.ReportContent) expanded(state.expendedReportContentMenu) listener(View.OnClickListener { listener?.didSelectMenuAction(action) }) } - if (action is SimpleAction.ReportContent && state.expendedReportContentMenu) { + if (action is EventAction.ReportContent && state.expendedReportContentMenu) { // Special case for report content menu: add the submenu listOf( - SimpleAction.ReportContentSpam(action.eventId, action.senderId), - SimpleAction.ReportContentInappropriate(action.eventId, action.senderId), - SimpleAction.ReportContentCustom(action.eventId, action.senderId) + EventAction.ReportContentSpam(action.eventId, action.senderId), + EventAction.ReportContentInappropriate(action.eventId, action.senderId), + EventAction.ReportContentCustom(action.eventId, action.senderId) ).forEachIndexed { indexReport, actionReport -> bottomSheetItemAction { id("actionReport_$indexReport") @@ -126,6 +126,6 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid } interface MessageActionsEpoxyControllerListener { - fun didSelectMenuAction(simpleAction: SimpleAction) + fun didSelectMenuAction(eventAction: EventAction) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 63429e5def..92be124940 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -62,7 +62,7 @@ data class MessageActionState( // For quick reactions val quickStates: Async> = Uninitialized, // For actions - val actions: Async> = Uninitialized, + val actions: Async> = Uninitialized, val expendedReportContentMenu: Boolean = false ) : MvRxState { @@ -184,63 +184,63 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted } } - private fun actionsForEvent(optionalEvent: Optional): List { + private fun actionsForEvent(optionalEvent: Optional): List { val event = optionalEvent.getOrNull() ?: return emptyList() val messageContent: MessageContent? = event.annotations?.editSummary?.aggregatedContent.toModel() ?: event.root.getClearContent().toModel() val type = messageContent?.type - return arrayListOf().apply { + return arrayListOf().apply { if (event.root.sendState.hasFailed()) { if (canRetry(event)) { - add(SimpleAction.Resend(eventId)) + add(EventAction.Resend(eventId)) } - add(SimpleAction.Remove(eventId)) + add(EventAction.Remove(eventId)) } else if (event.root.sendState.isSending()) { // TODO is uploading attachment? if (canCancel(event)) { - add(SimpleAction.Cancel(eventId)) + add(EventAction.Cancel(eventId)) } } else if (event.root.sendState == SendState.SYNCED) { if (!event.root.isRedacted()) { if (canReply(event, messageContent)) { - add(SimpleAction.Reply(eventId)) + add(EventAction.Reply(eventId)) } if (canEdit(event, session.myUserId)) { - add(SimpleAction.Edit(eventId)) + add(EventAction.Edit(eventId)) } if (canRedact(event, session.myUserId)) { - add(SimpleAction.Delete(eventId)) + add(EventAction.Delete(eventId)) } if (canCopy(type)) { // TODO copy images? html? see ClipBoard - add(SimpleAction.Copy(messageContent!!.body)) + add(EventAction.Copy(messageContent!!.body)) } if (event.canReact()) { - add(SimpleAction.AddReaction(eventId)) + add(EventAction.AddReaction(eventId)) } if (canQuote(event, messageContent)) { - add(SimpleAction.Quote(eventId)) + add(EventAction.Quote(eventId)) } if (canViewReactions(event)) { - add(SimpleAction.ViewReactions(informationData)) + add(EventAction.ViewReactions(informationData)) } if (event.hasBeenEdited()) { - add(SimpleAction.ViewEditHistory(informationData)) + add(EventAction.ViewEditHistory(informationData)) } if (canShare(type)) { if (messageContent is MessageImageContent) { session.contentUrlResolver().resolveFullSize(messageContent.url)?.let { url -> - add(SimpleAction.Share(url)) + add(EventAction.Share(url)) } } // TODO @@ -253,17 +253,17 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted } } - add(SimpleAction.ViewSource(event.root.toContentStringWithIndent())) + add(EventAction.ViewSource(event.root.toContentStringWithIndent())) if (event.isEncrypted()) { val decryptedContent = event.root.toClearContentStringWithIndent() ?: stringProvider.getString(R.string.encryption_information_decryption_error) - add(SimpleAction.ViewDecryptedSource(decryptedContent)) + add(EventAction.ViewDecryptedSource(decryptedContent)) } - add(SimpleAction.CopyPermalink(eventId)) + add(EventAction.CopyPermalink(eventId)) if (session.myUserId != event.root.senderId && event.root.getClearType() == EventType.MESSAGE) { // not sent by me - add(SimpleAction.ReportContent(eventId, event.root.senderId)) + add(EventAction.ReportContent(eventId, event.root.senderId)) } } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 13c6444400..64c8214236 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -39,7 +39,7 @@ import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.platform.OnBackPressed import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.home.room.list.actions.RoomListQuickActions +import im.vector.riotx.features.home.room.list.actions.RoomListQuickAction import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsBottomSheet import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsStore import im.vector.riotx.features.home.room.list.widget.FabMenuView @@ -216,29 +216,29 @@ class RoomListFragment @Inject constructor( } } - private fun handleQuickActions(quickActions: RoomListQuickActions) { - when (quickActions) { - is RoomListQuickActions.NotificationsAllNoisy -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickActions.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) + private fun handleQuickActions(quickAction: RoomListQuickAction) { + when (quickAction) { + is RoomListQuickAction.NotificationsAllNoisy -> { + roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) } - is RoomListQuickActions.NotificationsAll -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickActions.roomId, RoomNotificationState.ALL_MESSAGES)) + is RoomListQuickAction.NotificationsAll -> { + roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) } - is RoomListQuickActions.NotificationsMentionsOnly -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickActions.roomId, RoomNotificationState.MENTIONS_ONLY)) + is RoomListQuickAction.NotificationsMentionsOnly -> { + roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) } - is RoomListQuickActions.NotificationsMute -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickActions.roomId, RoomNotificationState.MUTE)) + is RoomListQuickAction.NotificationsMute -> { + roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) } - is RoomListQuickActions.Settings -> { + is RoomListQuickAction.Settings -> { vectorBaseActivity.notImplemented("Opening room settings") } - is RoomListQuickActions.Leave -> { + is RoomListQuickAction.Leave -> { AlertDialog.Builder(requireContext()) .setTitle(R.string.room_participants_leave_prompt_title) .setMessage(R.string.room_participants_leave_prompt_msg) .setPositiveButton(R.string.leave) { _, _ -> - roomListViewModel.accept(RoomListActions.LeaveRoom(quickActions.roomId)) + roomListViewModel.accept(RoomListActions.LeaveRoom(quickAction.roomId)) } .setNegativeButton(R.string.cancel, null) .show() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt similarity index 85% rename from vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt index 86cd9043f3..c0de0a9d7b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt @@ -19,35 +19,36 @@ package im.vector.riotx.features.home.room.list.actions import androidx.annotation.DrawableRes import androidx.annotation.StringRes import im.vector.riotx.R +import im.vector.riotx.core.platform.VectorAction -sealed class RoomListQuickActions(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) { +sealed class RoomListQuickAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorAction { - data class NotificationsAllNoisy(val roomId: String) : RoomListQuickActions( + data class NotificationsAllNoisy(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_notifications_all_noisy, R.drawable.ic_room_actions_notifications_all_noisy ) - data class NotificationsAll(val roomId: String) : RoomListQuickActions( + data class NotificationsAll(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_notifications_all, R.drawable.ic_room_actions_notifications_all ) - data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickActions( + data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_notifications_mentions, R.drawable.ic_room_actions_notifications_mentions ) - data class NotificationsMute(val roomId: String) : RoomListQuickActions( + data class NotificationsMute(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_notifications_mute, R.drawable.ic_room_actions_notifications_mutes ) - data class Settings(val roomId: String) : RoomListQuickActions( + data class Settings(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_settings, R.drawable.ic_room_actions_settings ) - data class Leave(val roomId: String) : RoomListQuickActions( + data class Leave(val roomId: String) : RoomListQuickAction( R.string.room_list_quick_actions_leave, R.drawable.ic_room_actions_leave, true diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 560c05771c..03fb5f5a00 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -82,8 +82,8 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R super.invalidate() } - override fun didSelectMenuAction(quickActions: RoomListQuickActions) { - actionsDispatcher.post(quickActions) + override fun didSelectMenuAction(quickAction: RoomListQuickAction) { + actionsDispatcher.post(quickAction) dismiss() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt index 70d0fc5f76..16d96e8dba 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt @@ -42,7 +42,7 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar roomName(roomSummary.displayName) avatarUrl(roomSummary.avatarUrl) roomId(roomSummary.roomId) - settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickActions.Settings(roomSummary.roomId)) }) + settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickAction.Settings(roomSummary.roomId)) }) } // Notifications @@ -51,26 +51,26 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } val selectedRoomState = state.roomNotificationState() - RoomListQuickActions.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) - RoomListQuickActions.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) - RoomListQuickActions.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) - RoomListQuickActions.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) + RoomListQuickAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) + RoomListQuickAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) + RoomListQuickAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) + RoomListQuickAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) // Leave bottomSheetItemSeparator { id("leave_separator") } - RoomListQuickActions.Leave(roomSummary.roomId).toBottomSheetItem(5) + RoomListQuickAction.Leave(roomSummary.roomId).toBottomSheetItem(5) } - private fun RoomListQuickActions.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { + private fun RoomListQuickAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { val selected = when (this) { - is RoomListQuickActions.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY - is RoomListQuickActions.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES - is RoomListQuickActions.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY - is RoomListQuickActions.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE - is RoomListQuickActions.Settings, - is RoomListQuickActions.Leave -> false + is RoomListQuickAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY + is RoomListQuickAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES + is RoomListQuickAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY + is RoomListQuickAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE + is RoomListQuickAction.Settings, + is RoomListQuickAction.Leave -> false } return bottomSheetItemAction { id("action_$index") @@ -83,6 +83,6 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } interface Listener { - fun didSelectMenuAction(quickActions: RoomListQuickActions) + fun didSelectMenuAction(quickAction: RoomListQuickAction) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt index 35fe09dff8..503a3b0327 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt @@ -16,13 +16,9 @@ */ package im.vector.riotx.features.home.room.list.actions -import androidx.lifecycle.ViewModel -import im.vector.riotx.core.utils.PublishDataSource -import im.vector.riotx.core.utils.MutableDataSource +import im.vector.riotx.core.platform.VectorActionViewModel /** * Activity shared view model to handle room list quick actions */ -class RoomListQuickActionsStore constructor( - private val store: MutableDataSource = PublishDataSource() -) : ViewModel(), MutableDataSource by store +class RoomListQuickActionsStore : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 303e931b5c..36c3c13cc3 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -47,7 +47,7 @@ class PublicRoomsFragment @Inject constructor( ) : VectorBaseFragment(), PublicRoomsController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var navigationViewModel: RoomDirectoryNavigationViewModel + private lateinit var actionViewModel: RoomDirectoryActionViewModel override fun getLayoutResId() = R.layout.fragment_public_rooms @@ -71,7 +71,7 @@ class PublicRoomsFragment @Inject constructor( .disposeOnDestroy() publicRoomsCreateNewRoom.setOnClickListener { - navigationViewModel.post(RoomDirectoryActivity.Navigation.CreateRoom) + actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.CreateRoom) } viewModel.joinRoomErrorLiveData.observeEvent(this) { throwable -> @@ -83,7 +83,7 @@ class PublicRoomsFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.menu_room_directory_change_protocol -> { - navigationViewModel.post(RoomDirectoryActivity.Navigation.ChangeProtocol) + actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.ChangeProtocol) true } else -> @@ -93,7 +93,7 @@ class PublicRoomsFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) setupRecyclerView() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryNavigationViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt similarity index 64% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryNavigationViewModel.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt index 4e4230e07b..d9e1a4614b 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryNavigationViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt @@ -16,9 +16,6 @@ package im.vector.riotx.features.roomdirectory -import androidx.lifecycle.ViewModel -import im.vector.riotx.core.utils.PublishDataSource -import im.vector.riotx.core.utils.MutableDataSource +import im.vector.riotx.core.platform.VectorActionViewModel -class RoomDirectoryNavigationViewModel(private val source: MutableDataSource = PublishDataSource()) - : ViewModel(), MutableDataSource by source +class RoomDirectoryActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index e98c180bc9..84d7b758ab 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -25,6 +25,7 @@ import im.vector.riotx.R import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack +import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.features.roomdirectory.createroom.CreateRoomFragment import im.vector.riotx.features.roomdirectory.createroom.CreateRoomViewModel @@ -34,18 +35,18 @@ import javax.inject.Inject class RoomDirectoryActivity : VectorBaseActivity() { // Supported navigation actions for this Activity - sealed class Navigation { - object Back : Navigation() - object CreateRoom : Navigation() - object Close : Navigation() - object ChangeProtocol : Navigation() + sealed class RoomDirectoryAction : VectorAction { + object Back : RoomDirectoryAction() + object CreateRoom : RoomDirectoryAction() + object Close : RoomDirectoryAction() + object ChangeProtocol : RoomDirectoryAction() } @Inject lateinit var createRoomViewModelFactory: CreateRoomViewModel.Factory @Inject lateinit var roomDirectoryViewModelFactory: RoomDirectoryViewModel.Factory private val roomDirectoryViewModel: RoomDirectoryViewModel by viewModel() private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var navigationViewModel: RoomDirectoryNavigationViewModel + private lateinit var actionViewModel: RoomDirectoryActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -55,19 +56,19 @@ class RoomDirectoryActivity : VectorBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - navigationViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryActionViewModel::class.java) if (isFirstCreation()) { roomDirectoryViewModel.filterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "") } - navigationViewModel.observe() + actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is Navigation.Back -> onBackPressed() - is Navigation.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) - is Navigation.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) - is Navigation.Close -> finish() + is RoomDirectoryAction.Back -> onBackPressed() + is RoomDirectoryAction.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) + is RoomDirectoryAction.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) + is RoomDirectoryAction.Close -> finish() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 6377f05d20..fb982babee 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -27,7 +27,7 @@ import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.platform.ToolbarConfigurable import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity -import im.vector.riotx.features.roomdirectory.RoomDirectoryNavigationViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel import javax.inject.Inject /** @@ -38,7 +38,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { @Inject lateinit var createRoomViewModelFactory: CreateRoomViewModel.Factory private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var navigationViewModel: RoomDirectoryNavigationViewModel + private lateinit var actionViewModel: RoomDirectoryActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -55,12 +55,12 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - navigationViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryNavigationViewModel::class.java) - navigationViewModel.observe() + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryActionViewModel::class.java) + actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is RoomDirectoryActivity.Navigation.Back, - is RoomDirectoryActivity.Navigation.Close -> finish() + is RoomDirectoryActivity.RoomDirectoryAction.Back, + is RoomDirectoryActivity.RoomDirectoryAction.Close -> finish() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index 88178eaad8..f33b3b003e 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -26,14 +26,14 @@ import com.airbnb.mvrx.withState import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity -import im.vector.riotx.features.roomdirectory.RoomDirectoryNavigationViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel import kotlinx.android.synthetic.main.fragment_create_room.* import timber.log.Timber import javax.inject.Inject class CreateRoomFragment @Inject constructor(private val createRoomController: CreateRoomController): VectorBaseFragment(), CreateRoomController.Listener { - private lateinit var navigationViewModel: RoomDirectoryNavigationViewModel + private lateinit var actionViewModel: RoomDirectoryActionViewModel private val viewModel: CreateRoomViewModel by activityViewModel() override fun getLayoutResId() = R.layout.fragment_create_room @@ -43,10 +43,10 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) vectorBaseActivity.setSupportActionBar(createRoomToolbar) - navigationViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { - navigationViewModel.post(RoomDirectoryActivity.Navigation.Back) + actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Back) } } @@ -93,7 +93,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C // Navigate to freshly created room navigator.openRoom(requireActivity(), async()) - navigationViewModel.post(RoomDirectoryActivity.Navigation.Close) + actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Close) } else { // Populate list with Epoxy createRoomController.setData(state) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index e345322613..a6aa668d5c 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -27,8 +27,8 @@ import com.airbnb.mvrx.withState import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity -import im.vector.riotx.features.roomdirectory.RoomDirectoryNavigationViewModel import im.vector.riotx.features.roomdirectory.RoomDirectoryViewModel import kotlinx.android.synthetic.main.fragment_room_directory_picker.* import timber.log.Timber @@ -41,7 +41,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie ) : VectorBaseFragment(), RoomDirectoryPickerController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var navigationViewModel: RoomDirectoryNavigationViewModel + private lateinit var actionViewModel: RoomDirectoryActionViewModel private val pickerViewModel: RoomDirectoryPickerViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_room_directory_picker @@ -71,7 +71,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - navigationViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryNavigationViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) setupRecyclerView() } @@ -88,7 +88,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie Timber.v("onRoomDirectoryClicked: $roomDirectoryData") viewModel.setRoomDirectoryData(roomDirectoryData) - navigationViewModel.post(RoomDirectoryActivity.Navigation.Back) + actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Back) } override fun retry() { From c8bc553caa7ffe6d10908603b6c688f122df6bc7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 12:01:36 +0100 Subject: [PATCH 02/16] Move class to dedicated file --- .../features/home/HomeActionViewModel.kt | 2 +- .../riotx/features/home/HomeActivity.kt | 7 ----- .../riotx/features/home/HomeActivityAction.kt | 27 +++++++++++++++++ .../riotx/features/home/HomeDetailFragment.kt | 2 +- .../createdirect/CreateDirectRoomAction.kt | 25 ++++++++++++++++ .../CreateDirectRoomActionViewModel.kt | 2 +- .../createdirect/CreateDirectRoomActions.kt | 1 - .../createdirect/CreateDirectRoomActivity.kt | 7 ----- .../CreateDirectRoomDirectoryUsersFragment.kt | 4 +-- .../CreateDirectRoomKnownUsersFragment.kt | 2 +- .../features/home/group/GroupListFragment.kt | 4 +-- .../roomdirectory/PublicRoomsFragment.kt | 4 +-- .../roomdirectory/RoomDirectoryAction.kt | 29 +++++++++++++++++++ .../RoomDirectoryActionViewModel.kt | 2 +- .../roomdirectory/RoomDirectoryActivity.kt | 9 ------ .../createroom/CreateRoomActivity.kt | 6 ++-- .../createroom/CreateRoomFragment.kt | 6 ++-- .../picker/RoomDirectoryPickerFragment.kt | 4 +-- 18 files changed, 100 insertions(+), 43 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt index 250ba8468c..3d9f13e20a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt @@ -18,4 +18,4 @@ package im.vector.riotx.features.home import im.vector.riotx.core.platform.VectorActionViewModel -class HomeActionViewModel : VectorActionViewModel() +class HomeActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index 459678863e..7b86cfe67f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -33,7 +33,6 @@ import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.hideKeyboard import im.vector.riotx.core.extensions.replaceFragment import im.vector.riotx.core.platform.ToolbarConfigurable -import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.core.pushers.PushersManager import im.vector.riotx.features.disclaimer.showDisclaimerDialog @@ -48,12 +47,6 @@ import javax.inject.Inject class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { - // Supported navigation actions for this Activity - sealed class HomeActivityAction : VectorAction { - object OpenDrawer : HomeActivityAction() - object OpenGroup : HomeActivityAction() - } - private lateinit var actionViewModel: HomeActionViewModel @Inject lateinit var activeSessionHolder: ActiveSessionHolder diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt new file mode 100644 index 0000000000..91612fa7b6 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2019 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.riotx.features.home + +import im.vector.riotx.core.platform.VectorAction + +/** + * Supported navigation actions for [HomeActivity] + */ +sealed class HomeActivityAction : VectorAction { + object OpenDrawer : HomeActivityAction() + object OpenGroup : HomeActivityAction() +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 2daac15b3d..6b642a31eb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -129,7 +129,7 @@ class HomeDetailFragment @Inject constructor( } groupToolbar.title = "" groupToolbarAvatarImageView.setOnClickListener { - actionViewModel.post(HomeActivity.HomeActivityAction.OpenDrawer) + actionViewModel.post(HomeActivityAction.OpenDrawer) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt new file mode 100644 index 0000000000..3cd06aa63f --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2019 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.riotx.features.home.createdirect + +import im.vector.riotx.core.platform.VectorAction + +sealed class CreateDirectRoomAction : VectorAction { + object OpenUsersDirectory : CreateDirectRoomAction() + object Close : CreateDirectRoomAction() + object GoBack : CreateDirectRoomAction() +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt index beff263ea0..66f50829f8 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt @@ -18,4 +18,4 @@ package im.vector.riotx.features.home.createdirect import im.vector.riotx.core.platform.VectorActionViewModel -class CreateDirectRoomActionViewModel : VectorActionViewModel() +class CreateDirectRoomActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt index 8f30c9e559..3b0b36df34 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt @@ -19,7 +19,6 @@ package im.vector.riotx.features.home.createdirect import im.vector.matrix.android.api.session.user.model.User sealed class CreateDirectRoomActions { - object CreateRoomAndInviteSelectedUsers : CreateDirectRoomActions() data class FilterKnownUsers(val value: String) : CreateDirectRoomActions() data class SearchDirectoryUsers(val value: String) : CreateDirectRoomActions() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index 6b5354b2b9..c1f71dfe08 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -32,19 +32,12 @@ import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack import im.vector.riotx.core.platform.SimpleFragmentActivity -import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.WaitingViewData import kotlinx.android.synthetic.main.activity.* import javax.inject.Inject class CreateDirectRoomActivity : SimpleFragmentActivity() { - sealed class CreateDirectRoomAction : VectorAction { - object OpenUsersDirectory : CreateDirectRoomAction() - object Close : CreateDirectRoomAction() - object GoBack : CreateDirectRoomAction() - } - private val viewModel: CreateDirectRoomViewModel by viewModel() private lateinit var actionViewModel: CreateDirectRoomActionViewModel @Inject lateinit var createDirectRoomViewModelFactory: CreateDirectRoomViewModel.Factory diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 915280ae03..2e8d7ea00d 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -70,7 +70,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private fun setupCloseView() { createDirectRoomClose.setOnClickListener { - actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.GoBack) + actionViewModel.post(CreateDirectRoomAction.GoBack) } } @@ -81,7 +81,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() viewModel.handle(CreateDirectRoomActions.SelectUser(user)) - actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.GoBack) + actionViewModel.post(CreateDirectRoomAction.GoBack) } override fun retryDirectoryUsersRequest() { diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 9cadbc230f..9b0a289a48 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -89,7 +89,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( private fun setupAddByMatrixIdView() { addByMatrixId.setOnClickListener { - actionViewModel.post(CreateDirectRoomActivity.CreateDirectRoomAction.OpenUsersDirectory) + actionViewModel.post(CreateDirectRoomAction.OpenUsersDirectory) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 8666f57338..7f115ecc56 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -27,7 +27,7 @@ import im.vector.riotx.core.extensions.observeEvent import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment import im.vector.riotx.features.home.HomeActionViewModel -import im.vector.riotx.features.home.HomeActivity +import im.vector.riotx.features.home.HomeActivityAction import kotlinx.android.synthetic.main.fragment_group_list.* import javax.inject.Inject @@ -49,7 +49,7 @@ class GroupListFragment @Inject constructor( groupListEpoxyRecyclerView.setController(groupController) viewModel.subscribe { renderState(it) } viewModel.openGroupLiveData.observeEvent(this) { - actionViewModel.post(HomeActivity.HomeActivityAction.OpenGroup) + actionViewModel.post(HomeActivityAction.OpenGroup) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 36c3c13cc3..6e6a47cdc6 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -71,7 +71,7 @@ class PublicRoomsFragment @Inject constructor( .disposeOnDestroy() publicRoomsCreateNewRoom.setOnClickListener { - actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.CreateRoom) + actionViewModel.post(RoomDirectoryAction.CreateRoom) } viewModel.joinRoomErrorLiveData.observeEvent(this) { throwable -> @@ -83,7 +83,7 @@ class PublicRoomsFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.menu_room_directory_change_protocol -> { - actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.ChangeProtocol) + actionViewModel.post(RoomDirectoryAction.ChangeProtocol) true } else -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt new file mode 100644 index 0000000000..3c05dedb04 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt @@ -0,0 +1,29 @@ +/* + * Copyright 2019 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.riotx.features.roomdirectory + +import im.vector.riotx.core.platform.VectorAction + +/** + * Supported navigation actions for [RoomDirectoryActivity] + */ +sealed class RoomDirectoryAction : VectorAction { + object Back : RoomDirectoryAction() + object CreateRoom : RoomDirectoryAction() + object Close : RoomDirectoryAction() + object ChangeProtocol : RoomDirectoryAction() +} diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt index d9e1a4614b..32b3ccf022 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt @@ -18,4 +18,4 @@ package im.vector.riotx.features.roomdirectory import im.vector.riotx.core.platform.VectorActionViewModel -class RoomDirectoryActionViewModel : VectorActionViewModel() +class RoomDirectoryActionViewModel : VectorActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index 84d7b758ab..c7d0d19c2c 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -25,7 +25,6 @@ import im.vector.riotx.R import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack -import im.vector.riotx.core.platform.VectorAction import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.features.roomdirectory.createroom.CreateRoomFragment import im.vector.riotx.features.roomdirectory.createroom.CreateRoomViewModel @@ -34,14 +33,6 @@ import javax.inject.Inject class RoomDirectoryActivity : VectorBaseActivity() { - // Supported navigation actions for this Activity - sealed class RoomDirectoryAction : VectorAction { - object Back : RoomDirectoryAction() - object CreateRoom : RoomDirectoryAction() - object Close : RoomDirectoryAction() - object ChangeProtocol : RoomDirectoryAction() - } - @Inject lateinit var createRoomViewModelFactory: CreateRoomViewModel.Factory @Inject lateinit var roomDirectoryViewModelFactory: RoomDirectoryViewModel.Factory private val roomDirectoryViewModel: RoomDirectoryViewModel by viewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index fb982babee..71b5d9527e 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -26,7 +26,7 @@ import im.vector.riotx.R import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.platform.ToolbarConfigurable import im.vector.riotx.core.platform.VectorBaseActivity -import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity +import im.vector.riotx.features.roomdirectory.RoomDirectoryAction import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel import javax.inject.Inject @@ -59,8 +59,8 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is RoomDirectoryActivity.RoomDirectoryAction.Back, - is RoomDirectoryActivity.RoomDirectoryAction.Close -> finish() + is RoomDirectoryAction.Back, + is RoomDirectoryAction.Close -> finish() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index f33b3b003e..ff18b0f402 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -25,7 +25,7 @@ import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.withState import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity +import im.vector.riotx.features.roomdirectory.RoomDirectoryAction import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel import kotlinx.android.synthetic.main.fragment_create_room.* import timber.log.Timber @@ -46,7 +46,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { - actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Back) + actionViewModel.post(RoomDirectoryAction.Back) } } @@ -93,7 +93,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C // Navigate to freshly created room navigator.openRoom(requireActivity(), async()) - actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Close) + actionViewModel.post(RoomDirectoryAction.Close) } else { // Populate list with Epoxy createRoomController.setData(state) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index a6aa668d5c..ac86fe29bf 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -27,8 +27,8 @@ import com.airbnb.mvrx.withState import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.features.roomdirectory.RoomDirectoryAction import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel -import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity import im.vector.riotx.features.roomdirectory.RoomDirectoryViewModel import kotlinx.android.synthetic.main.fragment_room_directory_picker.* import timber.log.Timber @@ -88,7 +88,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie Timber.v("onRoomDirectoryClicked: $roomDirectoryData") viewModel.setRoomDirectoryData(roomDirectoryData) - actionViewModel.post(RoomDirectoryActivity.RoomDirectoryAction.Back) + actionViewModel.post(RoomDirectoryAction.Back) } override fun retry() { From 82f639b91fb3266c5e320db3aef358cc97f4a187 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 12:09:01 +0100 Subject: [PATCH 03/16] Rename to Shared --- .../core/platform/VectorEventViewModel.kt | 4 +- .../riotx/features/home/HomeActivity.kt | 8 ++-- ...yAction.kt => HomeActivitySharedAction.kt} | 8 ++-- .../riotx/features/home/HomeDetailFragment.kt | 6 +-- ...wModel.kt => HomeSharedActionViewModel.kt} | 4 +- .../createdirect/CreateDirectRoomActivity.kt | 10 ++--- .../CreateDirectRoomDirectoryUsersFragment.kt | 8 ++-- .../CreateDirectRoomKnownUsersFragment.kt | 6 +-- ...ion.kt => CreateDirectRoomSharedAction.kt} | 10 ++--- ... CreateDirectRoomSharedActionViewModel.kt} | 4 +- .../features/home/group/GroupListFragment.kt | 10 ++--- .../home/room/detail/RoomDetailFragment.kt | 44 +++++++++---------- .../{EventAction.kt => EventSharedAction.kt} | 44 +++++++++---------- .../action/MessageActionsBottomSheet.kt | 4 +- .../action/MessageActionsDispatcher.kt | 4 +- .../action/MessageActionsEpoxyController.kt | 14 +++--- .../action/MessageActionsViewModel.kt | 38 ++++++++-------- .../home/room/list/RoomListFragment.kt | 16 +++---- .../RoomListQuickActionsBottomSheet.kt | 2 +- .../RoomListQuickActionsEpoxyController.kt | 28 ++++++------ .../list/actions/RoomListQuickActionsStore.kt | 4 +- ...Action.kt => RoomListQuickSharedAction.kt} | 16 +++---- .../roomdirectory/PublicRoomsFragment.kt | 8 ++-- .../roomdirectory/RoomDirectoryActivity.kt | 12 ++--- ...Action.kt => RoomDirectorySharedAction.kt} | 12 ++--- ... => RoomDirectorySharedActionViewModel.kt} | 4 +- .../createroom/CreateRoomActivity.kt | 12 ++--- .../createroom/CreateRoomFragment.kt | 12 ++--- .../picker/RoomDirectoryPickerFragment.kt | 10 ++--- 29 files changed, 181 insertions(+), 181 deletions(-) rename vector/src/main/java/im/vector/riotx/features/home/{HomeActivityAction.kt => HomeActivitySharedAction.kt} (76%) rename vector/src/main/java/im/vector/riotx/features/home/{HomeActionViewModel.kt => HomeSharedActionViewModel.kt} (80%) rename vector/src/main/java/im/vector/riotx/features/home/createdirect/{CreateDirectRoomAction.kt => CreateDirectRoomSharedAction.kt} (69%) rename vector/src/main/java/im/vector/riotx/features/home/createdirect/{CreateDirectRoomActionViewModel.kt => CreateDirectRoomSharedActionViewModel.kt} (79%) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/{EventAction.kt => EventSharedAction.kt} (54%) rename vector/src/main/java/im/vector/riotx/features/home/room/list/actions/{RoomListQuickAction.kt => RoomListQuickSharedAction.kt} (80%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/{RoomDirectoryAction.kt => RoomDirectorySharedAction.kt} (69%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/{RoomDirectoryActionViewModel.kt => RoomDirectorySharedActionViewModel.kt} (79%) diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt index 977991cd4a..4bf21c9aa9 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt @@ -21,10 +21,10 @@ import im.vector.riotx.core.utils.MutableDataSource import im.vector.riotx.core.utils.PublishDataSource -interface VectorAction +interface VectorSharedAction /** * Parent class to handle navigation events, action events, or other any events */ -open class VectorActionViewModel(private val store: MutableDataSource = PublishDataSource()) +open class VectorSharedActionViewModel(private val store: MutableDataSource = PublishDataSource()) : ViewModel(), MutableDataSource by store diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index 7b86cfe67f..f4694bff38 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -47,7 +47,7 @@ import javax.inject.Inject class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { - private lateinit var actionViewModel: HomeActionViewModel + private lateinit var actionViewModel: HomeSharedActionViewModel @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var vectorUncaughtExceptionHandler: VectorUncaughtExceptionHandler @@ -69,7 +69,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FcmHelper.ensureFcmTokenIsRetrieved(this, pushManager) - actionViewModel = ViewModelProviders.of(this).get(HomeActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(this).get(HomeSharedActionViewModel::class.java) drawerLayout.addDrawerListener(drawerListener) if (isFirstCreation()) { replaceFragment(R.id.homeDetailFragmentContainer, LoadingFragment::class.java) @@ -79,8 +79,8 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is HomeActivityAction.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) - is HomeActivityAction.OpenGroup -> { + is HomeActivitySharedAction.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) + is HomeActivitySharedAction.OpenGroup -> { drawerLayout.closeDrawer(GravityCompat.START) replaceFragment(R.id.homeDetailFragmentContainer, HomeDetailFragment::class.java) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivitySharedAction.kt similarity index 76% rename from vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/HomeActivitySharedAction.kt index 91612fa7b6..493a14512d 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivityAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivitySharedAction.kt @@ -16,12 +16,12 @@ package im.vector.riotx.features.home -import im.vector.riotx.core.platform.VectorAction +import im.vector.riotx.core.platform.VectorSharedAction /** * Supported navigation actions for [HomeActivity] */ -sealed class HomeActivityAction : VectorAction { - object OpenDrawer : HomeActivityAction() - object OpenGroup : HomeActivityAction() +sealed class HomeActivitySharedAction : VectorSharedAction { + object OpenDrawer : HomeActivitySharedAction() + object OpenGroup : HomeActivitySharedAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 6b642a31eb..c6b7280f0c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -54,7 +54,7 @@ class HomeDetailFragment @Inject constructor( private val unreadCounterBadgeViews = arrayListOf() private val viewModel: HomeDetailViewModel by fragmentViewModel() - private lateinit var actionViewModel: HomeActionViewModel + private lateinit var actionViewModel: HomeSharedActionViewModel override fun getLayoutResId(): Int { return R.layout.fragment_home_detail @@ -63,7 +63,7 @@ class HomeDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) setupBottomNavigationView() setupToolbar() @@ -129,7 +129,7 @@ class HomeDetailFragment @Inject constructor( } groupToolbar.title = "" groupToolbarAvatarImageView.setOnClickListener { - actionViewModel.post(HomeActivityAction.OpenDrawer) + actionViewModel.post(HomeActivitySharedAction.OpenDrawer) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt similarity index 80% rename from vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt rename to vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt index 3d9f13e20a..23baa53e3b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt @@ -16,6 +16,6 @@ package im.vector.riotx.features.home -import im.vector.riotx.core.platform.VectorActionViewModel +import im.vector.riotx.core.platform.VectorSharedActionViewModel -class HomeActionViewModel : VectorActionViewModel() +class HomeSharedActionViewModel : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index c1f71dfe08..379611d970 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -39,7 +39,7 @@ import javax.inject.Inject class CreateDirectRoomActivity : SimpleFragmentActivity() { private val viewModel: CreateDirectRoomViewModel by viewModel() - private lateinit var actionViewModel: CreateDirectRoomActionViewModel + private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel @Inject lateinit var createDirectRoomViewModelFactory: CreateDirectRoomViewModel.Factory @Inject lateinit var errorFormatter: ErrorFormatter @@ -51,13 +51,13 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) toolbar.visibility = View.GONE - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) actionViewModel.observe() .subscribe { navigation -> when (navigation) { - CreateDirectRoomAction.OpenUsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) - CreateDirectRoomAction.Close -> finish() - CreateDirectRoomAction.GoBack -> onBackPressed() + CreateDirectRoomSharedAction.OpenUsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) + CreateDirectRoomSharedAction.Close -> finish() + CreateDirectRoomSharedAction.GoBack -> onBackPressed() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 2e8d7ea00d..7e8e5a16d4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -39,11 +39,11 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var actionViewModel: CreateDirectRoomActionViewModel + private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) setupRecyclerView() setupSearchByMatrixIdView() setupCloseView() @@ -70,7 +70,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private fun setupCloseView() { createDirectRoomClose.setOnClickListener { - actionViewModel.post(CreateDirectRoomAction.GoBack) + actionViewModel.post(CreateDirectRoomSharedAction.GoBack) } } @@ -81,7 +81,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() viewModel.handle(CreateDirectRoomActions.SelectUser(user)) - actionViewModel.post(CreateDirectRoomAction.GoBack) + actionViewModel.post(CreateDirectRoomSharedAction.GoBack) } override fun retryDirectoryUsersRequest() { diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 9b0a289a48..bbfab88528 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -49,11 +49,11 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun getMenuRes() = R.menu.vector_create_direct_room private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var actionViewModel: CreateDirectRoomActionViewModel + private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) vectorBaseActivity.setSupportActionBar(createDirectRoomToolbar) setupRecyclerView() setupFilterView() @@ -89,7 +89,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( private fun setupAddByMatrixIdView() { addByMatrixId.setOnClickListener { - actionViewModel.post(CreateDirectRoomAction.OpenUsersDirectory) + actionViewModel.post(CreateDirectRoomSharedAction.OpenUsersDirectory) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedAction.kt similarity index 69% rename from vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedAction.kt index 3cd06aa63f..0df6720734 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedAction.kt @@ -16,10 +16,10 @@ package im.vector.riotx.features.home.createdirect -import im.vector.riotx.core.platform.VectorAction +import im.vector.riotx.core.platform.VectorSharedAction -sealed class CreateDirectRoomAction : VectorAction { - object OpenUsersDirectory : CreateDirectRoomAction() - object Close : CreateDirectRoomAction() - object GoBack : CreateDirectRoomAction() +sealed class CreateDirectRoomSharedAction : VectorSharedAction { + object OpenUsersDirectory : CreateDirectRoomSharedAction() + object Close : CreateDirectRoomSharedAction() + object GoBack : CreateDirectRoomSharedAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt similarity index 79% rename from vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt rename to vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt index 66f50829f8..7e5a2bbe93 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt @@ -16,6 +16,6 @@ package im.vector.riotx.features.home.createdirect -import im.vector.riotx.core.platform.VectorActionViewModel +import im.vector.riotx.core.platform.VectorSharedActionViewModel -class CreateDirectRoomActionViewModel : VectorActionViewModel() +class CreateDirectRoomSharedActionViewModel : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 7f115ecc56..9972e7ac1c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -26,8 +26,8 @@ import im.vector.riotx.R import im.vector.riotx.core.extensions.observeEvent import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.home.HomeActionViewModel -import im.vector.riotx.features.home.HomeActivityAction +import im.vector.riotx.features.home.HomeSharedActionViewModel +import im.vector.riotx.features.home.HomeActivitySharedAction import kotlinx.android.synthetic.main.fragment_group_list.* import javax.inject.Inject @@ -36,20 +36,20 @@ class GroupListFragment @Inject constructor( private val groupController: GroupSummaryController ) : VectorBaseFragment(), GroupSummaryController.Callback { - private lateinit var actionViewModel: HomeActionViewModel + private lateinit var actionViewModel: HomeSharedActionViewModel private val viewModel: GroupListViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_group_list override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) groupController.callback = this stateView.contentView = groupListEpoxyRecyclerView groupListEpoxyRecyclerView.setController(groupController) viewModel.subscribe { renderState(it) } viewModel.openGroupLiveData.observeEvent(this) { - actionViewModel.post(HomeActivityAction.OpenGroup) + actionViewModel.post(HomeActivitySharedAction.OpenGroup) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 83004a35de..473b131348 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -99,7 +99,7 @@ import im.vector.riotx.features.home.room.detail.readreceipts.DisplayReadReceipt import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsBottomSheet import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsDispatcher -import im.vector.riotx.features.home.room.detail.timeline.action.EventAction +import im.vector.riotx.features.home.room.detail.timeline.action.EventSharedAction import im.vector.riotx.features.home.room.detail.timeline.edithistory.ViewEditHistoryBottomSheet import im.vector.riotx.features.home.room.detail.timeline.item.* import im.vector.riotx.features.home.room.detail.timeline.reactions.ViewReactionsBottomSheet @@ -749,7 +749,7 @@ class RoomDetailFragment @Inject constructor( .show() } - private fun promptReasonToReportContent(action: EventAction.ReportContentCustom) { + private fun promptReasonToReportContent(action: EventSharedAction.ReportContentCustom) { val inflater = requireActivity().layoutInflater val layout = inflater.inflate(R.layout.dialog_report_content, null) @@ -1037,25 +1037,25 @@ class RoomDetailFragment @Inject constructor( textComposerViewModel.process(TextComposerActions.QueryUsers(query)) } - private fun handleActions(action: EventAction) { + private fun handleActions(action: EventSharedAction) { when (action) { - is EventAction.AddReaction -> { + is EventSharedAction.AddReaction -> { startActivityForResult(EmojiReactionPickerActivity.intent(requireContext(), action.eventId), REACTION_SELECT_REQUEST_CODE) } - is EventAction.ViewReactions -> { + is EventSharedAction.ViewReactions -> { ViewReactionsBottomSheet.newInstance(roomDetailArgs.roomId, action.messageInformationData) .show(requireActivity().supportFragmentManager, "DISPLAY_REACTIONS") } - is EventAction.Copy -> { + is EventSharedAction.Copy -> { // I need info about the current selected message :/ copyToClipboard(requireContext(), action.content, false) val msg = requireContext().getString(R.string.copied_to_clipboard) showSnackWithMessage(msg, Snackbar.LENGTH_SHORT) } - is EventAction.Delete -> { + is EventSharedAction.Delete -> { roomDetailViewModel.process(RoomDetailActions.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) } - is EventAction.Share -> { + is EventSharedAction.Share -> { // TODO current data communication is too limited // Need to now the media type // TODO bad, just POC @@ -1083,10 +1083,10 @@ class RoomDetailFragment @Inject constructor( } ) } - is EventAction.ViewEditHistory -> { + is EventSharedAction.ViewEditHistory -> { onEditedDecorationClicked(action.messageInformationData) } - is EventAction.ViewSource -> { + is EventSharedAction.ViewSource -> { val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) view.findViewById(R.id.event_content_text_view)?.let { it.text = action.content @@ -1097,7 +1097,7 @@ class RoomDetailFragment @Inject constructor( .setPositiveButton(R.string.ok, null) .show() } - is EventAction.ViewDecryptedSource -> { + is EventSharedAction.ViewDecryptedSource -> { val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) view.findViewById(R.id.event_content_text_view)?.let { it.text = action.content @@ -1108,42 +1108,42 @@ class RoomDetailFragment @Inject constructor( .setPositiveButton(R.string.ok, null) .show() } - is EventAction.QuickReact -> { + is EventSharedAction.QuickReact -> { // eventId,ClickedOn,Add roomDetailViewModel.process(RoomDetailActions.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) } - is EventAction.Edit -> { + is EventSharedAction.Edit -> { roomDetailViewModel.process(RoomDetailActions.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is EventAction.Quote -> { + is EventSharedAction.Quote -> { roomDetailViewModel.process(RoomDetailActions.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is EventAction.Reply -> { + is EventSharedAction.Reply -> { roomDetailViewModel.process(RoomDetailActions.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) } - is EventAction.CopyPermalink -> { + is EventSharedAction.CopyPermalink -> { val permalink = PermalinkFactory.createPermalink(roomDetailArgs.roomId, action.eventId) copyToClipboard(requireContext(), permalink, false) showSnackWithMessage(requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) } - is EventAction.Resend -> { + is EventSharedAction.Resend -> { roomDetailViewModel.process(RoomDetailActions.ResendMessage(action.eventId)) } - is EventAction.Remove -> { + is EventSharedAction.Remove -> { roomDetailViewModel.process(RoomDetailActions.RemoveFailedEcho(action.eventId)) } - is EventAction.ReportContentSpam -> { + is EventSharedAction.ReportContentSpam -> { roomDetailViewModel.process(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is spam", spam = true)) } - is EventAction.ReportContentInappropriate -> { + is EventSharedAction.ReportContentInappropriate -> { roomDetailViewModel.process(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is inappropriate", inappropriate = true)) } - is EventAction.ReportContentCustom -> { + is EventSharedAction.ReportContentCustom -> { promptReasonToReportContent(action) } - else -> { + else -> { Toast.makeText(context, "Action $action is not implemented yet", Toast.LENGTH_LONG).show() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventSharedAction.kt similarity index 54% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventSharedAction.kt index 79d615112c..73a4e245d0 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/EventSharedAction.kt @@ -19,67 +19,67 @@ package im.vector.riotx.features.home.room.detail.timeline.action import androidx.annotation.DrawableRes import androidx.annotation.StringRes import im.vector.riotx.R -import im.vector.riotx.core.platform.VectorAction +import im.vector.riotx.core.platform.VectorSharedAction import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData -sealed class EventAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int) : VectorAction { +sealed class EventSharedAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int) : VectorSharedAction { data class AddReaction(val eventId: String) : - EventAction(R.string.message_add_reaction, R.drawable.ic_add_reaction) + EventSharedAction(R.string.message_add_reaction, R.drawable.ic_add_reaction) data class Copy(val content: String) : - EventAction(R.string.copy, R.drawable.ic_copy) + EventSharedAction(R.string.copy, R.drawable.ic_copy) data class Edit(val eventId: String) : - EventAction(R.string.edit, R.drawable.ic_edit) + EventSharedAction(R.string.edit, R.drawable.ic_edit) data class Quote(val eventId: String) : - EventAction(R.string.quote, R.drawable.ic_quote) + EventSharedAction(R.string.quote, R.drawable.ic_quote) data class Reply(val eventId: String) : - EventAction(R.string.reply, R.drawable.ic_reply) + EventSharedAction(R.string.reply, R.drawable.ic_reply) data class Share(val imageUrl: String) : - EventAction(R.string.share, R.drawable.ic_share) + EventSharedAction(R.string.share, R.drawable.ic_share) data class Resend(val eventId: String) : - EventAction(R.string.global_retry, R.drawable.ic_refresh_cw) + EventSharedAction(R.string.global_retry, R.drawable.ic_refresh_cw) data class Remove(val eventId: String) : - EventAction(R.string.remove, R.drawable.ic_trash) + EventSharedAction(R.string.remove, R.drawable.ic_trash) data class Delete(val eventId: String) : - EventAction(R.string.delete, R.drawable.ic_delete) + EventSharedAction(R.string.delete, R.drawable.ic_delete) data class Cancel(val eventId: String) : - EventAction(R.string.cancel, R.drawable.ic_close_round) + EventSharedAction(R.string.cancel, R.drawable.ic_close_round) data class ViewSource(val content: String) : - EventAction(R.string.view_source, R.drawable.ic_view_source) + EventSharedAction(R.string.view_source, R.drawable.ic_view_source) data class ViewDecryptedSource(val content: String) : - EventAction(R.string.view_decrypted_source, R.drawable.ic_view_source) + EventSharedAction(R.string.view_decrypted_source, R.drawable.ic_view_source) data class CopyPermalink(val eventId: String) : - EventAction(R.string.permalink, R.drawable.ic_permalink) + EventSharedAction(R.string.permalink, R.drawable.ic_permalink) data class ReportContent(val eventId: String, val senderId: String?) : - EventAction(R.string.report_content, R.drawable.ic_flag) + EventSharedAction(R.string.report_content, R.drawable.ic_flag) data class ReportContentSpam(val eventId: String, val senderId: String?) : - EventAction(R.string.report_content_spam, R.drawable.ic_report_spam) + EventSharedAction(R.string.report_content_spam, R.drawable.ic_report_spam) data class ReportContentInappropriate(val eventId: String, val senderId: String?) : - EventAction(R.string.report_content_inappropriate, R.drawable.ic_report_inappropriate) + EventSharedAction(R.string.report_content_inappropriate, R.drawable.ic_report_inappropriate) data class ReportContentCustom(val eventId: String, val senderId: String?) : - EventAction(R.string.report_content_custom, R.drawable.ic_report_custom) + EventSharedAction(R.string.report_content_custom, R.drawable.ic_report_custom) data class QuickReact(val eventId: String, val clickedOn: String, val add: Boolean) : - EventAction(0, 0) + EventSharedAction(0, 0) data class ViewReactions(val messageInformationData: MessageInformationData) : - EventAction(R.string.message_view_reaction, R.drawable.ic_view_reactions) + EventSharedAction(R.string.message_view_reaction, R.drawable.ic_view_reactions) data class ViewEditHistory(val messageInformationData: MessageInformationData) : - EventAction(R.string.message_view_edit_history, R.drawable.ic_view_edit_history) + EventSharedAction(R.string.message_view_edit_history, R.drawable.ic_view_edit_history) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index fa738e5c42..479a9dd05c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -69,8 +69,8 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message messageActionsEpoxyController.listener = this } - override fun didSelectMenuAction(eventAction: EventAction) { - if (eventAction is EventAction.ReportContent) { + override fun didSelectMenuAction(eventAction: EventSharedAction) { + if (eventAction is EventSharedAction.ReportContent) { // Toggle report menu viewModel.toggleReportMenu() } else { diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt index 54f9d0d583..0d4cd201d8 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt @@ -15,9 +15,9 @@ */ package im.vector.riotx.features.home.room.detail.timeline.action -import im.vector.riotx.core.platform.VectorActionViewModel +import im.vector.riotx.core.platform.VectorSharedActionViewModel /** * Activity shared view model to handle message actions */ -class MessageActionsDispatcher : VectorActionViewModel() +class MessageActionsDispatcher : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt index e30a383087..0917f52779 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsEpoxyController.kt @@ -84,7 +84,7 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid selecteds(state.quickStates.invoke().map { it.isSelected }) listener(object : BottomSheetItemQuickReactions.Listener { override fun didSelect(emoji: String, selected: Boolean) { - listener?.didSelectMenuAction(EventAction.QuickReact(state.eventId, emoji, selected)) + listener?.didSelectMenuAction(EventSharedAction.QuickReact(state.eventId, emoji, selected)) } }) } @@ -101,17 +101,17 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid id("action_$index") iconRes(action.iconResId) textRes(action.titleRes) - showExpand(action is EventAction.ReportContent) + showExpand(action is EventSharedAction.ReportContent) expanded(state.expendedReportContentMenu) listener(View.OnClickListener { listener?.didSelectMenuAction(action) }) } - if (action is EventAction.ReportContent && state.expendedReportContentMenu) { + if (action is EventSharedAction.ReportContent && state.expendedReportContentMenu) { // Special case for report content menu: add the submenu listOf( - EventAction.ReportContentSpam(action.eventId, action.senderId), - EventAction.ReportContentInappropriate(action.eventId, action.senderId), - EventAction.ReportContentCustom(action.eventId, action.senderId) + EventSharedAction.ReportContentSpam(action.eventId, action.senderId), + EventSharedAction.ReportContentInappropriate(action.eventId, action.senderId), + EventSharedAction.ReportContentCustom(action.eventId, action.senderId) ).forEachIndexed { indexReport, actionReport -> bottomSheetItemAction { id("actionReport_$indexReport") @@ -126,6 +126,6 @@ class MessageActionsEpoxyController @Inject constructor(private val stringProvid } interface MessageActionsEpoxyControllerListener { - fun didSelectMenuAction(eventAction: EventAction) + fun didSelectMenuAction(eventAction: EventSharedAction) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 92be124940..42d0c1d201 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -62,7 +62,7 @@ data class MessageActionState( // For quick reactions val quickStates: Async> = Uninitialized, // For actions - val actions: Async> = Uninitialized, + val actions: Async> = Uninitialized, val expendedReportContentMenu: Boolean = false ) : MvRxState { @@ -184,63 +184,63 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted } } - private fun actionsForEvent(optionalEvent: Optional): List { + private fun actionsForEvent(optionalEvent: Optional): List { val event = optionalEvent.getOrNull() ?: return emptyList() val messageContent: MessageContent? = event.annotations?.editSummary?.aggregatedContent.toModel() ?: event.root.getClearContent().toModel() val type = messageContent?.type - return arrayListOf().apply { + return arrayListOf().apply { if (event.root.sendState.hasFailed()) { if (canRetry(event)) { - add(EventAction.Resend(eventId)) + add(EventSharedAction.Resend(eventId)) } - add(EventAction.Remove(eventId)) + add(EventSharedAction.Remove(eventId)) } else if (event.root.sendState.isSending()) { // TODO is uploading attachment? if (canCancel(event)) { - add(EventAction.Cancel(eventId)) + add(EventSharedAction.Cancel(eventId)) } } else if (event.root.sendState == SendState.SYNCED) { if (!event.root.isRedacted()) { if (canReply(event, messageContent)) { - add(EventAction.Reply(eventId)) + add(EventSharedAction.Reply(eventId)) } if (canEdit(event, session.myUserId)) { - add(EventAction.Edit(eventId)) + add(EventSharedAction.Edit(eventId)) } if (canRedact(event, session.myUserId)) { - add(EventAction.Delete(eventId)) + add(EventSharedAction.Delete(eventId)) } if (canCopy(type)) { // TODO copy images? html? see ClipBoard - add(EventAction.Copy(messageContent!!.body)) + add(EventSharedAction.Copy(messageContent!!.body)) } if (event.canReact()) { - add(EventAction.AddReaction(eventId)) + add(EventSharedAction.AddReaction(eventId)) } if (canQuote(event, messageContent)) { - add(EventAction.Quote(eventId)) + add(EventSharedAction.Quote(eventId)) } if (canViewReactions(event)) { - add(EventAction.ViewReactions(informationData)) + add(EventSharedAction.ViewReactions(informationData)) } if (event.hasBeenEdited()) { - add(EventAction.ViewEditHistory(informationData)) + add(EventSharedAction.ViewEditHistory(informationData)) } if (canShare(type)) { if (messageContent is MessageImageContent) { session.contentUrlResolver().resolveFullSize(messageContent.url)?.let { url -> - add(EventAction.Share(url)) + add(EventSharedAction.Share(url)) } } // TODO @@ -253,17 +253,17 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted } } - add(EventAction.ViewSource(event.root.toContentStringWithIndent())) + add(EventSharedAction.ViewSource(event.root.toContentStringWithIndent())) if (event.isEncrypted()) { val decryptedContent = event.root.toClearContentStringWithIndent() ?: stringProvider.getString(R.string.encryption_information_decryption_error) - add(EventAction.ViewDecryptedSource(decryptedContent)) + add(EventSharedAction.ViewDecryptedSource(decryptedContent)) } - add(EventAction.CopyPermalink(eventId)) + add(EventSharedAction.CopyPermalink(eventId)) if (session.myUserId != event.root.senderId && event.root.getClearType() == EventType.MESSAGE) { // not sent by me - add(EventAction.ReportContent(eventId, event.root.senderId)) + add(EventSharedAction.ReportContent(eventId, event.root.senderId)) } } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 64c8214236..23fabe4b97 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -39,7 +39,7 @@ import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.platform.OnBackPressed import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.home.room.list.actions.RoomListQuickAction +import im.vector.riotx.features.home.room.list.actions.RoomListQuickSharedAction import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsBottomSheet import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsStore import im.vector.riotx.features.home.room.list.widget.FabMenuView @@ -216,24 +216,24 @@ class RoomListFragment @Inject constructor( } } - private fun handleQuickActions(quickAction: RoomListQuickAction) { + private fun handleQuickActions(quickAction: RoomListQuickSharedAction) { when (quickAction) { - is RoomListQuickAction.NotificationsAllNoisy -> { + is RoomListQuickSharedAction.NotificationsAllNoisy -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) } - is RoomListQuickAction.NotificationsAll -> { + is RoomListQuickSharedAction.NotificationsAll -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) } - is RoomListQuickAction.NotificationsMentionsOnly -> { + is RoomListQuickSharedAction.NotificationsMentionsOnly -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) } - is RoomListQuickAction.NotificationsMute -> { + is RoomListQuickSharedAction.NotificationsMute -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) } - is RoomListQuickAction.Settings -> { + is RoomListQuickSharedAction.Settings -> { vectorBaseActivity.notImplemented("Opening room settings") } - is RoomListQuickAction.Leave -> { + is RoomListQuickSharedAction.Leave -> { AlertDialog.Builder(requireContext()) .setTitle(R.string.room_participants_leave_prompt_title) .setMessage(R.string.room_participants_leave_prompt_msg) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 03fb5f5a00..50d0503693 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -82,7 +82,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R super.invalidate() } - override fun didSelectMenuAction(quickAction: RoomListQuickAction) { + override fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) { actionsDispatcher.post(quickAction) dismiss() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt index 16d96e8dba..d54edce712 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt @@ -42,7 +42,7 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar roomName(roomSummary.displayName) avatarUrl(roomSummary.avatarUrl) roomId(roomSummary.roomId) - settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickAction.Settings(roomSummary.roomId)) }) + settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickSharedAction.Settings(roomSummary.roomId)) }) } // Notifications @@ -51,26 +51,26 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } val selectedRoomState = state.roomNotificationState() - RoomListQuickAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) - RoomListQuickAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) - RoomListQuickAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) - RoomListQuickAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) + RoomListQuickSharedAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) + RoomListQuickSharedAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) + RoomListQuickSharedAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) + RoomListQuickSharedAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) // Leave bottomSheetItemSeparator { id("leave_separator") } - RoomListQuickAction.Leave(roomSummary.roomId).toBottomSheetItem(5) + RoomListQuickSharedAction.Leave(roomSummary.roomId).toBottomSheetItem(5) } - private fun RoomListQuickAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { + private fun RoomListQuickSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { val selected = when (this) { - is RoomListQuickAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY - is RoomListQuickAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES - is RoomListQuickAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY - is RoomListQuickAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE - is RoomListQuickAction.Settings, - is RoomListQuickAction.Leave -> false + is RoomListQuickSharedAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY + is RoomListQuickSharedAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES + is RoomListQuickSharedAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY + is RoomListQuickSharedAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE + is RoomListQuickSharedAction.Settings, + is RoomListQuickSharedAction.Leave -> false } return bottomSheetItemAction { id("action_$index") @@ -83,6 +83,6 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } interface Listener { - fun didSelectMenuAction(quickAction: RoomListQuickAction) + fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt index 503a3b0327..891ffc81f0 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt @@ -16,9 +16,9 @@ */ package im.vector.riotx.features.home.room.list.actions -import im.vector.riotx.core.platform.VectorActionViewModel +import im.vector.riotx.core.platform.VectorSharedActionViewModel /** * Activity shared view model to handle room list quick actions */ -class RoomListQuickActionsStore : VectorActionViewModel() +class RoomListQuickActionsStore : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt similarity index 80% rename from vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt index c0de0a9d7b..4033434327 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt @@ -19,36 +19,36 @@ package im.vector.riotx.features.home.room.list.actions import androidx.annotation.DrawableRes import androidx.annotation.StringRes import im.vector.riotx.R -import im.vector.riotx.core.platform.VectorAction +import im.vector.riotx.core.platform.VectorSharedAction -sealed class RoomListQuickAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorAction { +sealed class RoomListQuickSharedAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorSharedAction { - data class NotificationsAllNoisy(val roomId: String) : RoomListQuickAction( + data class NotificationsAllNoisy(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_notifications_all_noisy, R.drawable.ic_room_actions_notifications_all_noisy ) - data class NotificationsAll(val roomId: String) : RoomListQuickAction( + data class NotificationsAll(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_notifications_all, R.drawable.ic_room_actions_notifications_all ) - data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickAction( + data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_notifications_mentions, R.drawable.ic_room_actions_notifications_mentions ) - data class NotificationsMute(val roomId: String) : RoomListQuickAction( + data class NotificationsMute(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_notifications_mute, R.drawable.ic_room_actions_notifications_mutes ) - data class Settings(val roomId: String) : RoomListQuickAction( + data class Settings(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_settings, R.drawable.ic_room_actions_settings ) - data class Leave(val roomId: String) : RoomListQuickAction( + data class Leave(val roomId: String) : RoomListQuickSharedAction( R.string.room_list_quick_actions_leave, R.drawable.ic_room_actions_leave, true diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 6e6a47cdc6..2840dc7e89 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -47,7 +47,7 @@ class PublicRoomsFragment @Inject constructor( ) : VectorBaseFragment(), PublicRoomsController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var actionViewModel: RoomDirectoryActionViewModel + private lateinit var actionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutResId() = R.layout.fragment_public_rooms @@ -71,7 +71,7 @@ class PublicRoomsFragment @Inject constructor( .disposeOnDestroy() publicRoomsCreateNewRoom.setOnClickListener { - actionViewModel.post(RoomDirectoryAction.CreateRoom) + actionViewModel.post(RoomDirectorySharedAction.CreateRoom) } viewModel.joinRoomErrorLiveData.observeEvent(this) { throwable -> @@ -83,7 +83,7 @@ class PublicRoomsFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.menu_room_directory_change_protocol -> { - actionViewModel.post(RoomDirectoryAction.ChangeProtocol) + actionViewModel.post(RoomDirectorySharedAction.ChangeProtocol) true } else -> @@ -93,7 +93,7 @@ class PublicRoomsFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index c7d0d19c2c..b0b1a86275 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -37,7 +37,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { @Inject lateinit var roomDirectoryViewModelFactory: RoomDirectoryViewModel.Factory private val roomDirectoryViewModel: RoomDirectoryViewModel by viewModel() private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var actionViewModel: RoomDirectoryActionViewModel + private lateinit var actionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -47,7 +47,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) if (isFirstCreation()) { roomDirectoryViewModel.filterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "") @@ -56,10 +56,10 @@ class RoomDirectoryActivity : VectorBaseActivity() { actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is RoomDirectoryAction.Back -> onBackPressed() - is RoomDirectoryAction.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) - is RoomDirectoryAction.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) - is RoomDirectoryAction.Close -> finish() + is RoomDirectorySharedAction.Back -> onBackPressed() + is RoomDirectorySharedAction.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) + is RoomDirectorySharedAction.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) + is RoomDirectorySharedAction.Close -> finish() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedAction.kt similarity index 69% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedAction.kt index 3c05dedb04..b257f82595 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedAction.kt @@ -16,14 +16,14 @@ package im.vector.riotx.features.roomdirectory -import im.vector.riotx.core.platform.VectorAction +import im.vector.riotx.core.platform.VectorSharedAction /** * Supported navigation actions for [RoomDirectoryActivity] */ -sealed class RoomDirectoryAction : VectorAction { - object Back : RoomDirectoryAction() - object CreateRoom : RoomDirectoryAction() - object Close : RoomDirectoryAction() - object ChangeProtocol : RoomDirectoryAction() +sealed class RoomDirectorySharedAction : VectorSharedAction { + object Back : RoomDirectorySharedAction() + object CreateRoom : RoomDirectorySharedAction() + object Close : RoomDirectorySharedAction() + object ChangeProtocol : RoomDirectorySharedAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt similarity index 79% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt index 32b3ccf022..257ad782fe 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt @@ -16,6 +16,6 @@ package im.vector.riotx.features.roomdirectory -import im.vector.riotx.core.platform.VectorActionViewModel +import im.vector.riotx.core.platform.VectorSharedActionViewModel -class RoomDirectoryActionViewModel : VectorActionViewModel() +class RoomDirectorySharedActionViewModel : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 71b5d9527e..4d0938814a 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -26,8 +26,8 @@ import im.vector.riotx.R import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.platform.ToolbarConfigurable import im.vector.riotx.core.platform.VectorBaseActivity -import im.vector.riotx.features.roomdirectory.RoomDirectoryAction -import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedAction +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import javax.inject.Inject /** @@ -38,7 +38,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { @Inject lateinit var createRoomViewModelFactory: CreateRoomViewModel.Factory private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var actionViewModel: RoomDirectoryActionViewModel + private lateinit var actionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -55,12 +55,12 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectoryActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) actionViewModel.observe() .subscribe { navigation -> when (navigation) { - is RoomDirectoryAction.Back, - is RoomDirectoryAction.Close -> finish() + is RoomDirectorySharedAction.Back, + is RoomDirectorySharedAction.Close -> finish() } } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index ff18b0f402..a421398322 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -25,15 +25,15 @@ import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.withState import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.roomdirectory.RoomDirectoryAction -import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedAction +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import kotlinx.android.synthetic.main.fragment_create_room.* import timber.log.Timber import javax.inject.Inject class CreateRoomFragment @Inject constructor(private val createRoomController: CreateRoomController): VectorBaseFragment(), CreateRoomController.Listener { - private lateinit var actionViewModel: RoomDirectoryActionViewModel + private lateinit var actionViewModel: RoomDirectorySharedActionViewModel private val viewModel: CreateRoomViewModel by activityViewModel() override fun getLayoutResId() = R.layout.fragment_create_room @@ -43,10 +43,10 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) vectorBaseActivity.setSupportActionBar(createRoomToolbar) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { - actionViewModel.post(RoomDirectoryAction.Back) + actionViewModel.post(RoomDirectorySharedAction.Back) } } @@ -93,7 +93,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C // Navigate to freshly created room navigator.openRoom(requireActivity(), async()) - actionViewModel.post(RoomDirectoryAction.Close) + actionViewModel.post(RoomDirectorySharedAction.Close) } else { // Populate list with Epoxy createRoomController.setData(state) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index ac86fe29bf..18be8498da 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -27,8 +27,8 @@ import com.airbnb.mvrx.withState import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.roomdirectory.RoomDirectoryAction -import im.vector.riotx.features.roomdirectory.RoomDirectoryActionViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedAction +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import im.vector.riotx.features.roomdirectory.RoomDirectoryViewModel import kotlinx.android.synthetic.main.fragment_room_directory_picker.* import timber.log.Timber @@ -41,7 +41,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie ) : VectorBaseFragment(), RoomDirectoryPickerController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var actionViewModel: RoomDirectoryActionViewModel + private lateinit var actionViewModel: RoomDirectorySharedActionViewModel private val pickerViewModel: RoomDirectoryPickerViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_room_directory_picker @@ -71,7 +71,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectoryActionViewModel::class.java) + actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } @@ -88,7 +88,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie Timber.v("onRoomDirectoryClicked: $roomDirectoryData") viewModel.setRoomDirectoryData(roomDirectoryData) - actionViewModel.post(RoomDirectoryAction.Back) + actionViewModel.post(RoomDirectorySharedAction.Back) } override fun retry() { From 238d1d87c61b9280a0a70499cd27b9bbb25421f1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 13:31:39 +0100 Subject: [PATCH 04/16] Rename class --- .../home/room/list/RoomListFragment.kt | 16 +++++------ .../RoomListQuickActionsBottomSheet.kt | 2 +- .../RoomListQuickActionsEpoxyController.kt | 28 +++++++++---------- ...kt => RoomListQuickActionsSharedAction.kt} | 14 +++++----- .../list/actions/RoomListQuickActionsStore.kt | 2 +- 5 files changed, 31 insertions(+), 31 deletions(-) rename vector/src/main/java/im/vector/riotx/features/home/room/list/actions/{RoomListQuickSharedAction.kt => RoomListQuickActionsSharedAction.kt} (80%) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 23fabe4b97..f2bd02f9a3 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -39,7 +39,7 @@ import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.platform.OnBackPressed import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.home.room.list.actions.RoomListQuickSharedAction +import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsSharedAction import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsBottomSheet import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsStore import im.vector.riotx.features.home.room.list.widget.FabMenuView @@ -216,24 +216,24 @@ class RoomListFragment @Inject constructor( } } - private fun handleQuickActions(quickAction: RoomListQuickSharedAction) { + private fun handleQuickActions(quickAction: RoomListQuickActionsSharedAction) { when (quickAction) { - is RoomListQuickSharedAction.NotificationsAllNoisy -> { + is RoomListQuickActionsSharedAction.NotificationsAllNoisy -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) } - is RoomListQuickSharedAction.NotificationsAll -> { + is RoomListQuickActionsSharedAction.NotificationsAll -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) } - is RoomListQuickSharedAction.NotificationsMentionsOnly -> { + is RoomListQuickActionsSharedAction.NotificationsMentionsOnly -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) } - is RoomListQuickSharedAction.NotificationsMute -> { + is RoomListQuickActionsSharedAction.NotificationsMute -> { roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) } - is RoomListQuickSharedAction.Settings -> { + is RoomListQuickActionsSharedAction.Settings -> { vectorBaseActivity.notImplemented("Opening room settings") } - is RoomListQuickSharedAction.Leave -> { + is RoomListQuickActionsSharedAction.Leave -> { AlertDialog.Builder(requireContext()) .setTitle(R.string.room_participants_leave_prompt_title) .setMessage(R.string.room_participants_leave_prompt_msg) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 50d0503693..d23183f077 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -82,7 +82,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R super.invalidate() } - override fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) { + override fun didSelectMenuAction(quickAction: RoomListQuickActionsSharedAction) { actionsDispatcher.post(quickAction) dismiss() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt index d54edce712..2e17464cc6 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt @@ -42,7 +42,7 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar roomName(roomSummary.displayName) avatarUrl(roomSummary.avatarUrl) roomId(roomSummary.roomId) - settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickSharedAction.Settings(roomSummary.roomId)) }) + settingsClickListener(View.OnClickListener { listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.Settings(roomSummary.roomId)) }) } // Notifications @@ -51,26 +51,26 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } val selectedRoomState = state.roomNotificationState() - RoomListQuickSharedAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) - RoomListQuickSharedAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) - RoomListQuickSharedAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) - RoomListQuickSharedAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) + RoomListQuickActionsSharedAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState) + RoomListQuickActionsSharedAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState) + RoomListQuickActionsSharedAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState) + RoomListQuickActionsSharedAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState) // Leave bottomSheetItemSeparator { id("leave_separator") } - RoomListQuickSharedAction.Leave(roomSummary.roomId).toBottomSheetItem(5) + RoomListQuickActionsSharedAction.Leave(roomSummary.roomId).toBottomSheetItem(5) } - private fun RoomListQuickSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { + private fun RoomListQuickActionsSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { val selected = when (this) { - is RoomListQuickSharedAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY - is RoomListQuickSharedAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES - is RoomListQuickSharedAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY - is RoomListQuickSharedAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE - is RoomListQuickSharedAction.Settings, - is RoomListQuickSharedAction.Leave -> false + is RoomListQuickActionsSharedAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY + is RoomListQuickActionsSharedAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES + is RoomListQuickActionsSharedAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY + is RoomListQuickActionsSharedAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE + is RoomListQuickActionsSharedAction.Settings, + is RoomListQuickActionsSharedAction.Leave -> false } return bottomSheetItemAction { id("action_$index") @@ -83,6 +83,6 @@ class RoomListQuickActionsEpoxyController @Inject constructor(private val avatar } interface Listener { - fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) + fun didSelectMenuAction(quickAction: RoomListQuickActionsSharedAction) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt similarity index 80% rename from vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt index 4033434327..5e0ca770dc 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickSharedAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt @@ -21,34 +21,34 @@ import androidx.annotation.StringRes import im.vector.riotx.R import im.vector.riotx.core.platform.VectorSharedAction -sealed class RoomListQuickSharedAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorSharedAction { +sealed class RoomListQuickActionsSharedAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorSharedAction { - data class NotificationsAllNoisy(val roomId: String) : RoomListQuickSharedAction( + data class NotificationsAllNoisy(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_notifications_all_noisy, R.drawable.ic_room_actions_notifications_all_noisy ) - data class NotificationsAll(val roomId: String) : RoomListQuickSharedAction( + data class NotificationsAll(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_notifications_all, R.drawable.ic_room_actions_notifications_all ) - data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickSharedAction( + data class NotificationsMentionsOnly(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_notifications_mentions, R.drawable.ic_room_actions_notifications_mentions ) - data class NotificationsMute(val roomId: String) : RoomListQuickSharedAction( + data class NotificationsMute(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_notifications_mute, R.drawable.ic_room_actions_notifications_mutes ) - data class Settings(val roomId: String) : RoomListQuickSharedAction( + data class Settings(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_settings, R.drawable.ic_room_actions_settings ) - data class Leave(val roomId: String) : RoomListQuickSharedAction( + data class Leave(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_leave, R.drawable.ic_room_actions_leave, true diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt index 891ffc81f0..fb4b7c0455 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt @@ -21,4 +21,4 @@ import im.vector.riotx.core.platform.VectorSharedActionViewModel /** * Activity shared view model to handle room list quick actions */ -class RoomListQuickActionsStore : VectorSharedActionViewModel() +class RoomListQuickActionsStore : VectorSharedActionViewModel() From 70bce9e7dd1ec51faf5dc3239160360d36125acd Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 15:05:11 +0100 Subject: [PATCH 05/16] Ensure ViewModel follow the same pattern to handle actions --- .../riotx/core/platform/VectorViewModel.kt | 8 +- .../settings/KeyBackupSettingsActions.kt | 25 ++++++ .../settings/KeysBackupManageActivity.kt | 2 +- .../settings/KeysBackupSettingsFragment.kt | 6 +- .../settings/KeysBackupSettingsViewModel.kt | 28 +++---- .../riotx/features/home/HomeDetailAction.kt | 24 ++++++ .../riotx/features/home/HomeDetailFragment.kt | 2 +- .../features/home/HomeDetailViewModel.kt | 17 ++-- .../createdirect/CreateDirectRoomActions.kt | 3 +- .../createdirect/CreateDirectRoomViewModel.kt | 4 +- .../features/home/group/GroupListActions.kt | 4 +- .../features/home/group/GroupListFragment.kt | 2 +- .../features/home/group/GroupListViewModel.kt | 4 +- .../home/room/detail/RoomDetailActions.kt | 4 +- .../home/room/detail/RoomDetailFragment.kt | 78 +++++++++---------- .../home/room/detail/RoomDetailViewModel.kt | 4 +- .../detail/composer/TextComposerActions.kt | 4 +- .../detail/composer/TextComposerViewModel.kt | 9 +-- .../action/MessageActionsBottomSheet.kt | 2 +- .../action/MessageActionsViewModel.kt | 20 +++-- .../edithistory/ViewEditHistoryViewModel.kt | 11 ++- .../reactions/ViewReactionsViewModel.kt | 22 +++--- .../home/room/list/RoomListActions.kt | 3 +- .../home/room/list/RoomListFragment.kt | 22 +++--- .../home/room/list/RoomListViewModel.kt | 4 +- .../actions/RoomListQuickActionsViewModel.kt | 11 ++- .../riotx/features/login/LoginActions.kt | 4 +- .../riotx/features/login/LoginViewModel.kt | 4 +- .../reactions/EmojiReactionPickerActivity.kt | 4 +- .../features/reactions/EmojiSearchActions.kt | 23 ++++++ .../reactions/EmojiSearchResultViewModel.kt | 16 ++-- .../roomdirectory/PublicRoomsFragment.kt | 8 +- .../roomdirectory/RoomDirectoryActions.kt | 28 +++++++ .../roomdirectory/RoomDirectoryActivity.kt | 5 +- .../roomdirectory/RoomDirectoryViewModel.kt | 43 ++++++---- .../createroom/CreateRoomActions.kt | 26 +++++++ .../createroom/CreateRoomActivity.kt | 2 +- .../createroom/CreateRoomFragment.kt | 12 +-- .../createroom/CreateRoomViewModel.kt | 19 +++-- .../picker/RoomDirectoryPickerActions.kt | 23 ++++++ .../picker/RoomDirectoryPickerFragment.kt | 5 +- .../picker/RoomDirectoryPickerViewModel.kt | 17 ++-- .../roompreview/RoomPreviewActions.kt | 23 ++++++ .../RoomPreviewNoPreviewFragment.kt | 2 +- .../roompreview/RoomPreviewViewModel.kt | 11 ++- .../settings/ignored/IgnoredUsersViewModel.kt | 8 +- .../settings/push/PushGatewaysViewModel.kt | 15 ++-- .../settings/push/PushRulesViewModel.kt | 8 +- .../features/share/IncomingShareViewModel.kt | 7 +- 49 files changed, 449 insertions(+), 187 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/home/HomeDetailAction.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt index ae601bb0f3..949ac4cdb9 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt @@ -23,7 +23,11 @@ import im.vector.riotx.core.utils.LiveEvent import io.reactivex.Observable import io.reactivex.Single -abstract class VectorViewModel(initialState: S) +interface VectorViewModelAction + +object EmptyAction : VectorViewModelAction + +abstract class VectorViewModel(initialState: S) : BaseMvRxViewModel(initialState, false) { // Generic handling of any request error @@ -52,4 +56,6 @@ abstract class VectorViewModel(initialState: S) .onErrorReturn { Fail(it) } .doOnNext { setState { stateReducer(it) } } } + + abstract fun handle(action: A) } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt new file mode 100644 index 0000000000..5ced274b21 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2019 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.riotx.features.crypto.keysbackup.settings + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class KeyBackupSettingsActions : VectorViewModelAction { + object Init : KeyBackupSettingsActions() + object GetKeyBackupTrust : KeyBackupSettingsActions() + object DeleteKeyBackup : KeyBackupSettingsActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt index a58c99992d..0d0ce551aa 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt @@ -51,7 +51,7 @@ class KeysBackupManageActivity : SimpleFragmentActivity() { super.initUiAndData() if (supportFragmentManager.fragments.isEmpty()) { replaceFragment(R.id.container, KeysBackupSettingsFragment::class.java) - viewModel.init() + viewModel.handle(KeyBackupSettingsActions.Init) } // Observe the deletion of keys backup diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt index 288d862413..d281cd253f 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt @@ -66,7 +66,7 @@ class KeysBackupSettingsFragment @Inject constructor(private val keysBackupSetti .setMessage(R.string.keys_backup_settings_delete_confirm_message) .setCancelable(false) .setPositiveButton(R.string.keys_backup_settings_delete_confirm_title) { _, _ -> - viewModel.deleteCurrentBackup() + viewModel.handle(KeyBackupSettingsActions.DeleteKeyBackup) } .setNegativeButton(R.string.cancel, null) .setCancelable(true) @@ -75,10 +75,10 @@ class KeysBackupSettingsFragment @Inject constructor(private val keysBackupSetti } override fun loadTrustData() { - viewModel.getKeysBackupTrust() + viewModel.handle(KeyBackupSettingsActions.GetKeyBackupTrust) } override fun loadKeysBackupState() { - viewModel.init() + viewModel.handle(KeyBackupSettingsActions.Init) } } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt index 67690b838a..95b761291c 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt @@ -15,13 +15,7 @@ */ package im.vector.riotx.features.crypto.keysbackup.settings -import com.airbnb.mvrx.ActivityViewModelContext -import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Loading -import com.airbnb.mvrx.MvRxViewModelFactory -import com.airbnb.mvrx.Success -import com.airbnb.mvrx.Uninitialized -import com.airbnb.mvrx.ViewModelContext +import com.airbnb.mvrx.* import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.MatrixCallback @@ -34,8 +28,8 @@ import im.vector.riotx.core.platform.VectorViewModel class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialState: KeysBackupSettingViewState, session: Session -) : VectorViewModel(initialState), - KeysBackupStateListener { +) : VectorViewModel(initialState), + KeysBackupStateListener { @AssistedInject.Factory interface Factory { @@ -64,11 +58,19 @@ class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialS getKeysBackupTrust() } - fun init() { + override fun handle(action: KeyBackupSettingsActions) { + when (action) { + KeyBackupSettingsActions.Init -> init() + KeyBackupSettingsActions.GetKeyBackupTrust -> getKeysBackupTrust() + KeyBackupSettingsActions.DeleteKeyBackup -> deleteCurrentBackup() + } + } + + private fun init() { keysBackupService.forceUsingLastVersion(object : MatrixCallback {}) } - fun getKeysBackupTrust() = withState { state -> + private fun getKeysBackupTrust() = withState { state -> val versionResult = keysBackupService.keysBackupVersion if (state.keysBackupVersionTrust is Uninitialized && versionResult != null) { @@ -116,7 +118,7 @@ class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialS getKeysBackupTrust() } - fun deleteCurrentBackup() { + private fun deleteCurrentBackup() { val keysBackupService = keysBackupService if (keysBackupService.currentBackupVersion != null) { @@ -153,6 +155,6 @@ class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialS val currentBackupState = keysBackupService.state return currentBackupState == KeysBackupState.Unknown - || currentBackupState == KeysBackupState.CheckingBackUpOnHomeserver + || currentBackupState == KeysBackupState.CheckingBackUpOnHomeserver } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailAction.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailAction.kt new file mode 100644 index 0000000000..189a1e8aeb --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailAction.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2019 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.riotx.features.home + +import im.vector.riotx.core.platform.VectorViewModelAction +import im.vector.riotx.features.home.room.list.RoomListFragment + +sealed class HomeDetailAction : VectorViewModelAction { + data class SwitchDisplayMode(val displayMode: RoomListFragment.DisplayMode) : HomeDetailAction() +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index c6b7280f0c..944d323306 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -141,7 +141,7 @@ class HomeDetailFragment @Inject constructor( R.id.bottom_action_rooms -> RoomListFragment.DisplayMode.ROOMS else -> RoomListFragment.DisplayMode.HOME } - viewModel.switchDisplayMode(displayMode) + viewModel.handle(HomeDetailAction.SwitchDisplayMode(displayMode)) true } diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewModel.kt index 585ecf126e..ca552dc234 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewModel.kt @@ -27,7 +27,6 @@ import im.vector.riotx.core.di.HasScreenInjector import im.vector.riotx.core.platform.VectorViewModel import im.vector.riotx.core.resources.StringProvider import im.vector.riotx.features.home.group.SelectedGroupDataSource -import im.vector.riotx.features.home.room.list.RoomListFragment import im.vector.riotx.features.ui.UiStateRepository import io.reactivex.schedulers.Schedulers @@ -41,7 +40,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho private val selectedGroupStore: SelectedGroupDataSource, private val homeRoomListStore: HomeRoomListDataSource, private val stringProvider: StringProvider) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -70,13 +69,19 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho observeRoomSummaries() } - fun switchDisplayMode(displayMode: RoomListFragment.DisplayMode) = withState { state -> - if (state.displayMode != displayMode) { + override fun handle(action: HomeDetailAction) { + when (action) { + is HomeDetailAction.SwitchDisplayMode -> handleSwitchDisplayMode(action) + } + } + + private fun handleSwitchDisplayMode(action: HomeDetailAction.SwitchDisplayMode) = withState { state -> + if (state.displayMode != action.displayMode) { setState { - copy(displayMode = displayMode) + copy(displayMode = action.displayMode) } - uiStateRepository.storeDisplayMode(displayMode) + uiStateRepository.storeDisplayMode(action.displayMode) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt index 3b0b36df34..17aadcff35 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt @@ -17,8 +17,9 @@ package im.vector.riotx.features.home.createdirect import im.vector.matrix.android.api.session.user.model.User +import im.vector.riotx.core.platform.VectorViewModelAction -sealed class CreateDirectRoomActions { +sealed class CreateDirectRoomActions : VectorViewModelAction { object CreateRoomAndInviteSelectedUsers : CreateDirectRoomActions() data class FilterKnownUsers(val value: String) : CreateDirectRoomActions() data class SearchDirectoryUsers(val value: String) : CreateDirectRoomActions() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt index aef2340478..776a044230 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt @@ -51,7 +51,7 @@ data class SelectUserAction( class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted initialState: CreateDirectRoomViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -79,7 +79,7 @@ class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted observeDirectoryUsers() } - fun handle(action: CreateDirectRoomActions) { + override fun handle(action: CreateDirectRoomActions) { when (action) { is CreateDirectRoomActions.CreateRoomAndInviteSelectedUsers -> createRoomAndInviteSelectedUsers() is CreateDirectRoomActions.FilterKnownUsers -> knownUsersFilter.accept(Option.just(action.value)) diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt index 7e0a36d032..74fc7ec76b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt @@ -17,8 +17,8 @@ package im.vector.riotx.features.home.group import im.vector.matrix.android.api.session.group.model.GroupSummary +import im.vector.riotx.core.platform.VectorViewModelAction -sealed class GroupListActions { - +sealed class GroupListActions : VectorViewModelAction { data class SelectGroup(val groupSummary: GroupSummary) : GroupListActions() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 9972e7ac1c..d5951830b2 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -62,6 +62,6 @@ class GroupListFragment @Inject constructor( } override fun onGroupSelected(groupSummary: GroupSummary) { - viewModel.accept(GroupListActions.SelectGroup(groupSummary)) + viewModel.handle(GroupListActions.SelectGroup(groupSummary)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt index ac12113d66..715bb857b4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt @@ -42,7 +42,7 @@ class GroupListViewModel @AssistedInject constructor(@Assisted initialState: Gro private val selectedGroupStore: SelectedGroupDataSource, private val session: Session, private val stringProvider: StringProvider -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -81,7 +81,7 @@ class GroupListViewModel @AssistedInject constructor(@Assisted initialState: Gro } } - fun accept(action: GroupListActions) { + override fun handle(action: GroupListActions) { when (action) { is GroupListActions.SelectGroup -> handleSelectGroup(action) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt index 9169183da1..45d08820e4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt @@ -21,9 +21,9 @@ import im.vector.matrix.android.api.session.events.model.Event import im.vector.matrix.android.api.session.room.model.message.MessageFileContent import im.vector.matrix.android.api.session.room.timeline.Timeline import im.vector.matrix.android.api.session.room.timeline.TimelineEvent +import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomDetailActions { - +sealed class RoomDetailActions : VectorViewModelAction { data class SaveDraft(val draft: String) : RoomDetailActions() data class SendMessage(val text: String, val autoMarkdown: Boolean) : RoomDetailActions() data class SendMedia(val attachments: List) : RoomDetailActions() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 473b131348..1090dedd8a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -278,8 +278,8 @@ class RoomDetailFragment @Inject constructor( if (savedInstanceState == null) { when (val sharedData = roomDetailArgs.sharedData) { - is SharedData.Text -> roomDetailViewModel.process(RoomDetailActions.SendMessage(sharedData.text, false)) - is SharedData.Attachments -> roomDetailViewModel.process(RoomDetailActions.SendMedia(sharedData.attachmentData)) + is SharedData.Text -> roomDetailViewModel.handle(RoomDetailActions.SendMessage(sharedData.text, false)) + is SharedData.Attachments -> roomDetailViewModel.handle(RoomDetailActions.SendMedia(sharedData.attachmentData)) null -> Timber.v("No share data to process") } } @@ -323,7 +323,7 @@ class RoomDetailFragment @Inject constructor( private fun setupNotificationView() { notificationAreaView.delegate = object : NotificationAreaView.Delegate { override fun onTombstoneEventClicked(tombstoneEvent: Event) { - roomDetailViewModel.process(RoomDetailActions.HandleTombstoneEvent(tombstoneEvent)) + roomDetailViewModel.handle(RoomDetailActions.HandleTombstoneEvent(tombstoneEvent)) } override fun resendUnsentEvents() { @@ -355,11 +355,11 @@ class RoomDetailFragment @Inject constructor( // This a temporary option during dev as it is not super stable // Cancel all pending actions in room queue and post a dummy // Then mark all sending events as undelivered - roomDetailViewModel.process(RoomDetailActions.ClearSendQueue) + roomDetailViewModel.handle(RoomDetailActions.ClearSendQueue) return true } if (item.itemId == R.id.resend_all) { - roomDetailViewModel.process(RoomDetailActions.ResendAll) + roomDetailViewModel.handle(RoomDetailActions.ResendAll) return true } return super.onOptionsItemSelected(item) @@ -427,7 +427,7 @@ class RoomDetailFragment @Inject constructor( notificationDrawerManager.setCurrentRoom(null) - roomDetailViewModel.process(RoomDetailActions.SaveDraft(composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.SaveDraft(composerLayout.composerEditText.text.toString())) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -440,7 +440,7 @@ class RoomDetailFragment @Inject constructor( val reaction = data.getStringExtra(EmojiReactionPickerActivity.EXTRA_REACTION_RESULT) ?: return // TODO check if already reacted with that? - roomDetailViewModel.process(RoomDetailActions.SendReaction(eventId, reaction)) + roomDetailViewModel.handle(RoomDetailActions.SendReaction(eventId, reaction)) } } } @@ -498,7 +498,7 @@ class RoomDetailFragment @Inject constructor( override fun performQuickReplyOnHolder(model: EpoxyModel<*>) { (model as? AbsMessageItem)?.attributes?.informationData?.let { val eventId = it.eventId - roomDetailViewModel.process(RoomDetailActions.EnterReplyMode(eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.EnterReplyMode(eventId, composerLayout.composerEditText.text.toString())) } } @@ -601,11 +601,11 @@ class RoomDetailFragment @Inject constructor( val textMessage = composerLayout.composerEditText.text.toString() if (textMessage.isNotBlank()) { lockSendButton = true - roomDetailViewModel.process(RoomDetailActions.SendMessage(textMessage, vectorPreferences.isMarkdownEnabled())) + roomDetailViewModel.handle(RoomDetailActions.SendMessage(textMessage, vectorPreferences.isMarkdownEnabled())) } } composerLayout.composerRelatedMessageCloseButton.setOnClickListener { - roomDetailViewModel.process(RoomDetailActions.ExitSpecialMode(composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.ExitSpecialMode(composerLayout.composerEditText.text.toString())) } composerLayout.callback = object : TextComposerView.Callback { override fun onRichContentSelected(contentUri: Uri): Boolean { @@ -760,7 +760,7 @@ class RoomDetailFragment @Inject constructor( .setView(layout) .setPositiveButton(R.string.report_content_custom_submit) { _, _ -> val reason = input.text.toString() - roomDetailViewModel.process(RoomDetailActions.ReportContent(action.eventId, action.senderId, reason)) + roomDetailViewModel.handle(RoomDetailActions.ReportContent(action.eventId, action.senderId, reason)) } .setNegativeButton(R.string.cancel, null) .show() @@ -785,7 +785,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_as_spam_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.process(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -796,7 +796,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_as_inappropriate_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.process(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -807,7 +807,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.process(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -831,7 +831,7 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(getString(R.string.navigate_to_room_when_already_in_the_room)) } else { // Highlight and scroll to this event - roomDetailViewModel.process(RoomDetailActions.NavigateToEvent(eventId, true)) + roomDetailViewModel.handle(RoomDetailActions.NavigateToEvent(eventId, true)) } return true } @@ -859,11 +859,11 @@ class RoomDetailFragment @Inject constructor( } override fun onEventVisible(event: TimelineEvent) { - roomDetailViewModel.process(RoomDetailActions.TimelineEventTurnsVisible(event)) + roomDetailViewModel.handle(RoomDetailActions.TimelineEventTurnsVisible(event)) } override fun onEventInvisible(event: TimelineEvent) { - roomDetailViewModel.process(RoomDetailActions.TimelineEventTurnsInvisible(event)) + roomDetailViewModel.handle(RoomDetailActions.TimelineEventTurnsInvisible(event)) } override fun onEncryptedMessageClicked(informationData: MessageInformationData, view: View) { @@ -902,7 +902,7 @@ class RoomDetailFragment @Inject constructor( val action = RoomDetailActions.DownloadFile(eventId, messageFileContent) // We need WRITE_EXTERNAL permission if (checkPermissions(PERMISSIONS_FOR_WRITING_FILES, this, PERMISSION_REQUEST_CODE_DOWNLOAD_FILE)) { - roomDetailViewModel.process(action) + roomDetailViewModel.handle(action) } else { roomDetailViewModel.pendingAction = action } @@ -915,7 +915,7 @@ class RoomDetailFragment @Inject constructor( val action = roomDetailViewModel.pendingAction if (action != null) { roomDetailViewModel.pendingAction = null - roomDetailViewModel.process(action) + roomDetailViewModel.handle(action) } } PERMISSION_REQUEST_CODE_INCOMING_URI -> { @@ -946,7 +946,7 @@ class RoomDetailFragment @Inject constructor( } override fun onLoadMore(direction: Timeline.Direction) { - roomDetailViewModel.process(RoomDetailActions.LoadMoreTimelineEvents(direction)) + roomDetailViewModel.handle(RoomDetailActions.LoadMoreTimelineEvents(direction)) } override fun onEventCellClicked(informationData: MessageInformationData, messageContent: MessageContent?, view: View) { @@ -976,10 +976,10 @@ class RoomDetailFragment @Inject constructor( override fun onClickOnReactionPill(informationData: MessageInformationData, reaction: String, on: Boolean) { if (on) { // we should test the current real state of reaction on this event - roomDetailViewModel.process(RoomDetailActions.SendReaction(informationData.eventId, reaction)) + roomDetailViewModel.handle(RoomDetailActions.SendReaction(informationData.eventId, reaction)) } else { // I need to redact a reaction - roomDetailViewModel.process(RoomDetailActions.UndoReaction(informationData.eventId, reaction)) + roomDetailViewModel.handle(RoomDetailActions.UndoReaction(informationData.eventId, reaction)) } } @@ -1027,14 +1027,14 @@ class RoomDetailFragment @Inject constructor( } } if (nextReadMarkerId != null) { - roomDetailViewModel.process(RoomDetailActions.SetReadMarkerAction(nextReadMarkerId)) + roomDetailViewModel.handle(RoomDetailActions.SetReadMarkerAction(nextReadMarkerId)) } } // AutocompleteUserPresenter.Callback override fun onQueryUsers(query: CharSequence?) { - textComposerViewModel.process(TextComposerActions.QueryUsers(query)) + textComposerViewModel.handle(TextComposerActions.QueryUsers(query)) } private fun handleActions(action: EventSharedAction) { @@ -1053,7 +1053,7 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(msg, Snackbar.LENGTH_SHORT) } is EventSharedAction.Delete -> { - roomDetailViewModel.process(RoomDetailActions.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) + roomDetailViewModel.handle(RoomDetailActions.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) } is EventSharedAction.Share -> { // TODO current data communication is too limited @@ -1110,16 +1110,16 @@ class RoomDetailFragment @Inject constructor( } is EventSharedAction.QuickReact -> { // eventId,ClickedOn,Add - roomDetailViewModel.process(RoomDetailActions.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) + roomDetailViewModel.handle(RoomDetailActions.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) } is EventSharedAction.Edit -> { - roomDetailViewModel.process(RoomDetailActions.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.Quote -> { - roomDetailViewModel.process(RoomDetailActions.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.Reply -> { - roomDetailViewModel.process(RoomDetailActions.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailActions.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.CopyPermalink -> { val permalink = PermalinkFactory.createPermalink(roomDetailArgs.roomId, action.eventId) @@ -1127,17 +1127,17 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) } is EventSharedAction.Resend -> { - roomDetailViewModel.process(RoomDetailActions.ResendMessage(action.eventId)) + roomDetailViewModel.handle(RoomDetailActions.ResendMessage(action.eventId)) } is EventSharedAction.Remove -> { - roomDetailViewModel.process(RoomDetailActions.RemoveFailedEcho(action.eventId)) + roomDetailViewModel.handle(RoomDetailActions.RemoveFailedEcho(action.eventId)) } is EventSharedAction.ReportContentSpam -> { - roomDetailViewModel.process(RoomDetailActions.ReportContent( + roomDetailViewModel.handle(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is spam", spam = true)) } is EventSharedAction.ReportContentInappropriate -> { - roomDetailViewModel.process(RoomDetailActions.ReportContent( + roomDetailViewModel.handle(RoomDetailActions.ReportContent( action.eventId, action.senderId, "This message is inappropriate", inappropriate = true)) } is EventSharedAction.ReportContentCustom -> { @@ -1210,22 +1210,22 @@ class RoomDetailFragment @Inject constructor( override fun onAcceptInvite() { notificationDrawerManager.clearMemberShipNotificationForRoom(roomDetailArgs.roomId) - roomDetailViewModel.process(RoomDetailActions.AcceptInvite) + roomDetailViewModel.handle(RoomDetailActions.AcceptInvite) } override fun onRejectInvite() { notificationDrawerManager.clearMemberShipNotificationForRoom(roomDetailArgs.roomId) - roomDetailViewModel.process(RoomDetailActions.RejectInvite) + roomDetailViewModel.handle(RoomDetailActions.RejectInvite) } // JumpToReadMarkerView.Callback override fun onJumpToReadMarkerClicked(readMarkerId: String) { - roomDetailViewModel.process(RoomDetailActions.NavigateToEvent(readMarkerId, false)) + roomDetailViewModel.handle(RoomDetailActions.NavigateToEvent(readMarkerId, false)) } override fun onClearReadMarkerClicked() { - roomDetailViewModel.process(RoomDetailActions.MarkAllAsRead) + roomDetailViewModel.handle(RoomDetailActions.MarkAllAsRead) } // AttachmentTypeSelectorView.Callback @@ -1252,7 +1252,7 @@ class RoomDetailFragment @Inject constructor( // AttachmentsHelper.Callback override fun onContentAttachmentsReady(attachments: List) { - roomDetailViewModel.process(RoomDetailActions.SendMedia(attachments)) + roomDetailViewModel.handle(RoomDetailActions.SendMedia(attachments)) } override fun onAttachmentsProcessFailed() { @@ -1262,6 +1262,6 @@ class RoomDetailFragment @Inject constructor( override fun onContactAttachmentReady(contactAttachment: ContactAttachment) { super.onContactAttachmentReady(contactAttachment) val formattedContact = contactAttachment.toHumanReadable() - roomDetailViewModel.process(RoomDetailActions.SendMessage(formattedContact, false)) + roomDetailViewModel.handle(RoomDetailActions.SendMessage(formattedContact, false)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt index 4965de4438..c3b3edde65 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt @@ -69,7 +69,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro private val vectorPreferences: VectorPreferences, private val stringProvider: StringProvider, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val room = session.getRoom(initialState.roomId)!! private val eventId = initialState.eventId @@ -129,7 +129,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro setState { copy(timeline = this@RoomDetailViewModel.timeline) } } - fun process(action: RoomDetailActions) { + override fun handle(action: RoomDetailActions) { when (action) { is RoomDetailActions.SaveDraft -> handleSaveDraft(action) is RoomDetailActions.SendMessage -> handleSendMessage(action) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt index faf94b130b..1e5fccfe49 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt @@ -16,6 +16,8 @@ package im.vector.riotx.features.home.room.detail.composer -sealed class TextComposerActions { +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class TextComposerActions : VectorViewModelAction { data class QueryUsers(val query: CharSequence?) : TextComposerActions() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt index 69ecc30583..5915ffa9db 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt @@ -36,7 +36,7 @@ typealias AutocompleteUserQuery = CharSequence class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: TextComposerViewState, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val room = session.getRoom(initialState.roomId)!! private val roomId = initialState.roomId @@ -52,7 +52,7 @@ class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: @JvmStatic override fun create(viewModelContext: ViewModelContext, state: TextComposerViewState): TextComposerViewModel? { - val fragment : RoomDetailFragment = (viewModelContext as FragmentViewModelContext).fragment() + val fragment: RoomDetailFragment = (viewModelContext as FragmentViewModelContext).fragment() return fragment.textComposerViewModelFactory.create(state) } } @@ -61,7 +61,7 @@ class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: observeUsersQuery() } - fun process(action: TextComposerActions) { + override fun handle(action: TextComposerActions) { when (action) { is TextComposerActions.QueryUsers -> handleQueryUsers(action) } @@ -84,8 +84,7 @@ class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: users } else { users.filter { - it.displayName?.startsWith(prefix = filter, ignoreCase = true) - ?: false + it.displayName?.startsWith(prefix = filter, ignoreCase = true) ?: false } } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index 479a9dd05c..b98d74a8b4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -72,7 +72,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun didSelectMenuAction(eventAction: EventSharedAction) { if (eventAction is EventSharedAction.ReportContent) { // Toggle report menu - viewModel.toggleReportMenu() + viewModel.handle(MessageActionActions.ToggleReportMenu) } else { messageActionsStore.post(eventAction) dismiss() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 42d0c1d201..a65323f412 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -37,13 +37,13 @@ import im.vector.matrix.rx.unwrap import im.vector.riotx.R import im.vector.riotx.core.extensions.canReact import im.vector.riotx.core.platform.VectorViewModel +import im.vector.riotx.core.platform.VectorViewModelAction import im.vector.riotx.core.resources.StringProvider import im.vector.riotx.features.home.room.detail.timeline.format.NoticeEventFormatter import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData import im.vector.riotx.features.html.EventHtmlRenderer import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale +import java.util.* /** * Quick reactions state @@ -77,8 +77,12 @@ data class MessageActionState( fun canReact() = timelineEvent()?.canReact() == true } +sealed class MessageActionActions : VectorViewModelAction { + object ToggleReportMenu : MessageActionActions() +} + /** - * Information related to an event and used to display preview in contextual bottomsheet. + * Information related to an event and used to display preview in contextual bottom sheet. */ class MessageActionsViewModel @AssistedInject constructor(@Assisted initialState: MessageActionState, @@ -86,7 +90,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted private val session: Session, private val noticeEventFormatter: NoticeEventFormatter, private val stringProvider: StringProvider -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val eventId = initialState.eventId private val informationData = initialState.informationData @@ -113,7 +117,13 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted observeEventAction() } - fun toggleReportMenu() = withState { + override fun handle(action: MessageActionActions) { + when (action) { + MessageActionActions.ToggleReportMenu -> toggleReportMenu() + } + } + + private fun toggleReportMenu() = withState { setState { copy( expendedReportContentMenu = it.expendedReportContentMenu.not() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt index 93e7709b55..c1cccbef7a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt @@ -26,11 +26,12 @@ import im.vector.matrix.android.api.session.events.model.toModel import im.vector.matrix.android.api.session.room.model.message.MessageContent import im.vector.matrix.android.api.session.room.model.message.isReply import im.vector.matrix.android.internal.crypto.algorithms.olm.OlmDecryptionResult -import im.vector.riotx.core.platform.VectorViewModel import im.vector.riotx.core.date.VectorDateFormatter +import im.vector.riotx.core.platform.EmptyAction +import im.vector.riotx.core.platform.VectorViewModel import im.vector.riotx.features.home.room.detail.timeline.action.TimelineEventFragmentArgs import timber.log.Timber -import java.util.UUID +import java.util.* data class ViewEditHistoryViewState( val eventId: String, @@ -46,7 +47,7 @@ class ViewEditHistoryViewModel @AssistedInject constructor(@Assisted initialState: ViewEditHistoryViewState, val session: Session, val dateFormatter: VectorDateFormatter -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val roomId = initialState.roomId private val eventId = initialState.eventId @@ -115,4 +116,8 @@ class ViewEditHistoryViewModel @AssistedInject constructor(@Assisted } }) } + + override fun handle(action: EmptyAction) { + // No op + } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt index 208e126022..9ec45b03b9 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt @@ -16,20 +16,16 @@ package im.vector.riotx.features.home.room.detail.timeline.reactions -import com.airbnb.mvrx.Async -import com.airbnb.mvrx.FragmentViewModelContext -import com.airbnb.mvrx.MvRxState -import com.airbnb.mvrx.MvRxViewModelFactory -import com.airbnb.mvrx.Uninitialized -import com.airbnb.mvrx.ViewModelContext +import com.airbnb.mvrx.* import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.room.model.ReactionAggregatedSummary import im.vector.matrix.rx.RxRoom import im.vector.matrix.rx.unwrap -import im.vector.riotx.core.platform.VectorViewModel import im.vector.riotx.core.date.VectorDateFormatter +import im.vector.riotx.core.platform.EmptyAction +import im.vector.riotx.core.platform.VectorViewModel import im.vector.riotx.features.home.room.detail.timeline.action.TimelineEventFragmentArgs import io.reactivex.Observable import io.reactivex.Single @@ -55,15 +51,15 @@ data class ReactionInfo( * Used to display the list of members that reacted to a given event */ class ViewReactionsViewModel @AssistedInject constructor(@Assisted - initialState: DisplayReactionsViewState, + initialState: DisplayReactionsViewState, private val session: Session, private val dateFormatter: VectorDateFormatter -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val roomId = initialState.roomId private val eventId = initialState.eventId private val room = session.getRoom(roomId) - ?: throw IllegalStateException("Shouldn't use this ViewModel without a room") + ?: throw IllegalStateException("Shouldn't use this ViewModel without a room") @AssistedInject.Factory interface Factory { @@ -103,7 +99,7 @@ class ViewReactionsViewModel @AssistedInject constructor(@Assisted .fromIterable(summary.sourceEvents) .map { val event = room.getTimeLineEvent(it) - ?: throw RuntimeException("Your eventId is not valid") + ?: throw RuntimeException("Your eventId is not valid") ReactionInfo( event.root.eventId!!, summary.key, @@ -115,4 +111,8 @@ class ViewReactionsViewModel @AssistedInject constructor(@Assisted } }.toList() } + + override fun handle(action: EmptyAction) { + // No op + } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt index 7fce5bf99f..25308dc3f9 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt @@ -18,8 +18,9 @@ package im.vector.riotx.features.home.room.list import im.vector.matrix.android.api.session.room.model.RoomSummary import im.vector.matrix.android.api.session.room.notification.RoomNotificationState +import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomListActions { +sealed class RoomListActions : VectorViewModelAction { data class SelectRoom(val roomSummary: RoomSummary) : RoomListActions() data class ToggleCategory(val category: RoomCategory) : RoomListActions() data class AcceptInvitation(val roomSummary: RoomSummary) : RoomListActions() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index f2bd02f9a3..f177847448 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -85,7 +85,7 @@ class RoomListFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_home_mark_all_as_read -> { - roomListViewModel.accept(RoomListActions.MarkAllRoomsRead) + roomListViewModel.handle(RoomListActions.MarkAllRoomsRead) return true } } @@ -183,7 +183,7 @@ class RoomListFragment @Inject constructor( // Scroll the list to top roomListEpoxyRecyclerView.scrollToPosition(0) - roomListViewModel.accept(RoomListActions.FilterWith(filter)) + roomListViewModel.handle(RoomListActions.FilterWith(filter)) } override fun openRoomDirectory(initialFilter: String) { @@ -219,16 +219,16 @@ class RoomListFragment @Inject constructor( private fun handleQuickActions(quickAction: RoomListQuickActionsSharedAction) { when (quickAction) { is RoomListQuickActionsSharedAction.NotificationsAllNoisy -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) + roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) } is RoomListQuickActionsSharedAction.NotificationsAll -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) + roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) } is RoomListQuickActionsSharedAction.NotificationsMentionsOnly -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) + roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) } is RoomListQuickActionsSharedAction.NotificationsMute -> { - roomListViewModel.accept(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) + roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) } is RoomListQuickActionsSharedAction.Settings -> { vectorBaseActivity.notImplemented("Opening room settings") @@ -238,7 +238,7 @@ class RoomListFragment @Inject constructor( .setTitle(R.string.room_participants_leave_prompt_title) .setMessage(R.string.room_participants_leave_prompt_msg) .setPositiveButton(R.string.leave) { _, _ -> - roomListViewModel.accept(RoomListActions.LeaveRoom(quickAction.roomId)) + roomListViewModel.handle(RoomListActions.LeaveRoom(quickAction.roomId)) } .setNegativeButton(R.string.cancel, null) .show() @@ -342,7 +342,7 @@ class RoomListFragment @Inject constructor( // RoomSummaryController.Callback ************************************************************** override fun onRoomClicked(room: RoomSummary) { - roomListViewModel.accept(RoomListActions.SelectRoom(room)) + roomListViewModel.handle(RoomListActions.SelectRoom(room)) } override fun onRoomLongClicked(room: RoomSummary): Boolean { @@ -354,16 +354,16 @@ class RoomListFragment @Inject constructor( override fun onAcceptRoomInvitation(room: RoomSummary) { notificationDrawerManager.clearMemberShipNotificationForRoom(room.roomId) - roomListViewModel.accept(RoomListActions.AcceptInvitation(room)) + roomListViewModel.handle(RoomListActions.AcceptInvitation(room)) } override fun onRejectRoomInvitation(room: RoomSummary) { notificationDrawerManager.clearMemberShipNotificationForRoom(room.roomId) - roomListViewModel.accept(RoomListActions.RejectInvitation(room)) + roomListViewModel.handle(RoomListActions.RejectInvitation(room)) } override fun onToggleRoomCategory(roomCategory: RoomCategory) { - roomListViewModel.accept(RoomListActions.ToggleCategory(roomCategory)) + roomListViewModel.handle(RoomListActions.ToggleCategory(roomCategory)) } override fun createRoom(initialName: String) { diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt index ae8654d561..8094f42afb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt @@ -36,7 +36,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, private val roomSummariesSource: DataSource>, private val alphabeticalRoomComparator: AlphabeticalRoomComparator, private val chronologicalRoomComparator: ChronologicalRoomComparator) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { interface Factory { fun create(initialState: RoomListViewState): RoomListViewModel @@ -61,7 +61,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, observeRoomSummaries() } - fun accept(action: RoomListActions) { + override fun handle(action: RoomListActions) { when (action) { is RoomListActions.SelectRoom -> handleSelectRoom(action) is RoomListActions.ToggleCategory -> handleToggleCategory(action) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt index 0eeef64a78..7f7a1f41c4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt @@ -15,17 +15,20 @@ */ package im.vector.riotx.features.home.room.list.actions -import com.airbnb.mvrx.* +import com.airbnb.mvrx.FragmentViewModelContext +import com.airbnb.mvrx.MvRxViewModelFactory +import com.airbnb.mvrx.ViewModelContext import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.session.Session import im.vector.matrix.rx.rx import im.vector.matrix.rx.unwrap +import im.vector.riotx.core.platform.EmptyAction import im.vector.riotx.core.platform.VectorViewModel class RoomListQuickActionsViewModel @AssistedInject constructor(@Assisted initialState: RoomListQuickActionsState, session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -65,4 +68,8 @@ class RoomListQuickActionsViewModel @AssistedInject constructor(@Assisted initia copy(roomSummary = it) } } + + override fun handle(action: EmptyAction) { + // No op + } } diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt index 2c44737058..628c75e483 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt @@ -17,9 +17,9 @@ package im.vector.riotx.features.login import im.vector.matrix.android.api.auth.data.Credentials +import im.vector.riotx.core.platform.VectorViewModelAction -sealed class LoginActions { - +sealed class LoginActions : VectorViewModelAction { data class UpdateHomeServer(val homeServerUrl: String) : LoginActions() data class Login(val login: String, val password: String) : LoginActions() data class SsoLoginSuccess(val credentials: Credentials) : LoginActions() diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt index 0a324df6b9..5890e71b32 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt @@ -42,7 +42,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi private val activeSessionHolder: ActiveSessionHolder, private val pushRuleTriggerListener: PushRuleTriggerListener, private val sessionListener: SessionListener) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -67,7 +67,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi private var homeServerConnectionConfig: HomeServerConnectionConfig? = null private var currentTask: Cancelable? = null - fun handle(action: LoginActions) { + override fun handle(action: LoginActions) { when (action) { is LoginActions.InitWith -> handleInitWith(action) is LoginActions.UpdateHomeServer -> handleUpdateHomeserver(action) diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt index cd5d5e3e74..83d3077708 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt @@ -63,7 +63,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), @Inject lateinit var emojiCompatFontProvider: EmojiCompatFontProvider - val searchResultViewModel: EmojiSearchResultViewModel by viewModel() + private val searchResultViewModel: EmojiSearchResultViewModel by viewModel() private var tabLayoutSelectionListener = object : TabLayout.OnTabSelectedListener { override fun onTabReselected(tab: TabLayout.Tab) { @@ -201,7 +201,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), tabLayout.isVisible = false emojiPickerWholeListFragmentContainer.isVisible = false emojiPickerFilteredListFragmentContainer.isVisible = true - searchResultViewModel.updateQuery(query) + searchResultViewModel.handle(EmojiSearchActions.UpdateQuery(query)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt new file mode 100644 index 0000000000..43fe45f2e3 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2019 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.riotx.features.reactions + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class EmojiSearchActions : VectorViewModelAction { + data class UpdateQuery(val queryString: String) : EmojiSearchActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt index d11c25a1e3..d89d1fa22e 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt @@ -26,17 +26,23 @@ data class EmojiSearchResultViewState( ) : MvRxState class EmojiSearchResultViewModel(val dataSource: EmojiDataSource, initialState: EmojiSearchResultViewState) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { - fun updateQuery(queryString: String) { + override fun handle(action: EmojiSearchActions) { + when (action) { + is EmojiSearchActions.UpdateQuery -> updateQuery(action) + } + } + + private fun updateQuery(action: EmojiSearchActions.UpdateQuery) { setState { copy( - query = queryString, + query = action.queryString, results = dataSource.rawData?.emojis?.toList() ?.map { it.second } ?.filter { - it.name.contains(queryString, true) - || queryString.split("\\s".toRegex()).fold(true, { prev, q -> + it.name.contains(action.queryString, true) + || action.queryString.split("\\s".toRegex()).fold(true, { prev, q -> prev && (it.keywords?.any { it.contains(q, true) } ?: false) }) } ?: emptyList() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 2840dc7e89..b0198b39c4 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -66,7 +66,7 @@ class PublicRoomsFragment @Inject constructor( publicRoomsFilter.queryTextChanges() .debounce(500, TimeUnit.MILLISECONDS) .subscribeBy { - viewModel.filterWith(it.toString()) + viewModel.handle(RoomDirectoryActions.FilterWith(it.toString())) } .disposeOnDestroy() @@ -130,14 +130,14 @@ class PublicRoomsFragment @Inject constructor( override fun onPublicRoomJoin(publicRoom: PublicRoom) { Timber.v("PublicRoomJoinClicked: $publicRoom") - viewModel.joinRoom(publicRoom) + viewModel.handle(RoomDirectoryActions.JoinRoom(publicRoom)) } override fun loadMore() { - viewModel.loadMore() + viewModel.handle(RoomDirectoryActions.LoadMore) } - var initialValueSet = false + private var initialValueSet = false override fun invalidate() = withState(viewModel) { state -> if (!initialValueSet) { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt new file mode 100644 index 0000000000..198426bc1d --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2019 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.riotx.features.roomdirectory + +import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom +import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class RoomDirectoryActions : VectorViewModelAction { + data class SetRoomDirectoryData(val roomDirectoryData: RoomDirectoryData) : RoomDirectoryActions() + data class FilterWith(val filter: String) : RoomDirectoryActions() + object LoadMore : RoomDirectoryActions() + data class JoinRoom(val publicRoom: PublicRoom) : RoomDirectoryActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index b0b1a86275..574b461b16 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -26,6 +26,7 @@ import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack import im.vector.riotx.core.platform.VectorBaseActivity +import im.vector.riotx.features.roomdirectory.createroom.CreateRoomActions import im.vector.riotx.features.roomdirectory.createroom.CreateRoomFragment import im.vector.riotx.features.roomdirectory.createroom.CreateRoomViewModel import im.vector.riotx.features.roomdirectory.picker.RoomDirectoryPickerFragment @@ -50,7 +51,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) if (isFirstCreation()) { - roomDirectoryViewModel.filterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "") + roomDirectoryViewModel.handle(RoomDirectoryActions.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) } actionViewModel.observe() @@ -66,7 +67,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { roomDirectoryViewModel.selectSubscribe(this, PublicRoomsViewState::currentFilter) { currentFilter -> // Transmit the filter to the createRoomViewModel - createRoomViewModel.setName(currentFilter) + createRoomViewModel.handle(CreateRoomActions.SetName(currentFilter)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt index b0a47199d9..d092453ba8 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt @@ -25,7 +25,6 @@ import im.vector.matrix.android.api.MatrixCallback import im.vector.matrix.android.api.failure.Failure import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.room.model.Membership -import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoomsFilter import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoomsParams import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoomsResponse @@ -40,7 +39,8 @@ import timber.log.Timber private const val PUBLIC_ROOMS_LIMIT = 20 class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: PublicRoomsViewState, - private val session: Session) : VectorViewModel(initialState) { + private val session: Session) + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -103,23 +103,32 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: .disposeOnClear() } - fun setRoomDirectoryData(roomDirectoryData: RoomDirectoryData) { - if (this.roomDirectoryData == roomDirectoryData) { + override fun handle(action: RoomDirectoryActions) { + when (action) { + is RoomDirectoryActions.SetRoomDirectoryData -> setRoomDirectoryData(action) + is RoomDirectoryActions.FilterWith -> filterWith(action) + RoomDirectoryActions.LoadMore -> loadMore() + is RoomDirectoryActions.JoinRoom -> joinRoom(action) + } + } + + private fun setRoomDirectoryData(action: RoomDirectoryActions.SetRoomDirectoryData) { + if (this.roomDirectoryData == action.roomDirectoryData) { return } - this.roomDirectoryData = roomDirectoryData + this.roomDirectoryData = action.roomDirectoryData reset("") load("") } - fun filterWith(filter: String) = withState { state -> - if (state.currentFilter != filter) { + private fun filterWith(action: RoomDirectoryActions.FilterWith) = withState { state -> + if (state.currentFilter != action.filter) { currentTask?.cancel() - reset(filter) - load(filter) + reset(action.filter) + load(action.filter) } } @@ -138,7 +147,7 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: } } - fun loadMore() = withState { state -> + private fun loadMore() = withState { state -> if (currentTask == null) { setState { copy( @@ -192,8 +201,10 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: }) } - fun joinRoom(publicRoom: PublicRoom) = withState { state -> - if (state.joiningRoomsIds.contains(publicRoom.roomId)) { + private fun joinRoom(action: RoomDirectoryActions.JoinRoom) = withState { state -> + val roomId = action.publicRoom.roomId + + if (state.joiningRoomsIds.contains(roomId)) { // Request already sent, should not happen Timber.w("Try to join an already joining room. Should not happen") return@withState @@ -201,11 +212,11 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: setState { copy( - joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { add(publicRoom.roomId) } + joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { add(roomId) } ) } - session.joinRoom(publicRoom.roomId, emptyList(), object : MatrixCallback { + session.joinRoom(roomId, emptyList(), object : MatrixCallback { override fun onSuccess(data: Unit) { // We do not update the joiningRoomsIds here, because, the room is not joined yet regarding the sync data. // Instead, we wait for the room to be joined @@ -217,8 +228,8 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: setState { copy( - joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { remove(publicRoom.roomId) }, - joiningErrorRoomsIds = joiningErrorRoomsIds.toMutableSet().apply { add(publicRoom.roomId) } + joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { remove(roomId) }, + joiningErrorRoomsIds = joiningErrorRoomsIds.toMutableSet().apply { add(roomId) } ) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt new file mode 100644 index 0000000000..7c07143a53 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2019 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.riotx.features.roomdirectory.createroom + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class CreateRoomActions : VectorViewModelAction { + data class SetName(val name: String) : CreateRoomActions() + data class SetIsPublic(val isPublic: Boolean) : CreateRoomActions() + data class SetIsInRoomDirectory(val isInRoomDirectory: Boolean) : CreateRoomActions() + object Create : CreateRoomActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 4d0938814a..1e91a7224f 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -49,7 +49,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun initUiAndData() { if (isFirstCreation()) { addFragment(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) - createRoomViewModel.setName(intent?.getStringExtra(INITIAL_NAME) ?: "") + createRoomViewModel.handle(CreateRoomActions.SetName(intent?.getStringExtra(INITIAL_NAME) ?: "")) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index a421398322..285276ca7d 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -31,7 +31,7 @@ import kotlinx.android.synthetic.main.fragment_create_room.* import timber.log.Timber import javax.inject.Inject -class CreateRoomFragment @Inject constructor(private val createRoomController: CreateRoomController): VectorBaseFragment(), CreateRoomController.Listener { +class CreateRoomFragment @Inject constructor(private val createRoomController: CreateRoomController) : VectorBaseFragment(), CreateRoomController.Listener { private lateinit var actionViewModel: RoomDirectorySharedActionViewModel private val viewModel: CreateRoomViewModel by activityViewModel() @@ -53,7 +53,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_create_room -> { - viewModel.doCreateRoom() + viewModel.handle(CreateRoomActions.Create) true } else -> @@ -71,20 +71,20 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C } override fun onNameChange(newName: String) { - viewModel.setName(newName) + viewModel.handle(CreateRoomActions.SetName(newName)) } override fun setIsPublic(isPublic: Boolean) { - viewModel.setIsPublic(isPublic) + viewModel.handle(CreateRoomActions.SetIsPublic(isPublic)) } override fun setIsInRoomDirectory(isInRoomDirectory: Boolean) { - viewModel.setIsInRoomDirectory(isInRoomDirectory) + viewModel.handle(CreateRoomActions.SetIsInRoomDirectory(isInRoomDirectory)) } override fun retry() { Timber.v("Retry") - viewModel.doCreateRoom() + viewModel.handle(CreateRoomActions.Create) } override fun invalidate() = withState(viewModel) { state -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt index 28185e91c1..3e794bceac 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt @@ -30,7 +30,7 @@ import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: CreateRoomViewState, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -51,13 +51,22 @@ class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: Cr } } - fun setName(newName: String) = setState { copy(roomName = newName) } + override fun handle(action: CreateRoomActions) { + when (action) { + is CreateRoomActions.SetName -> setName(action) + is CreateRoomActions.SetIsPublic -> setIsPublic(action) + is CreateRoomActions.SetIsInRoomDirectory -> setIsInRoomDirectory(action) + is CreateRoomActions.Create -> doCreateRoom() + } + } - fun setIsPublic(isPublic: Boolean) = setState { copy(isPublic = isPublic) } + private fun setName(action: CreateRoomActions.SetName) = setState { copy(roomName = action.name) } - fun setIsInRoomDirectory(isInRoomDirectory: Boolean) = setState { copy(isInRoomDirectory = isInRoomDirectory) } + private fun setIsPublic(action: CreateRoomActions.SetIsPublic) = setState { copy(isPublic = action.isPublic) } - fun doCreateRoom() = withState { state -> + private fun setIsInRoomDirectory(action: CreateRoomActions.SetIsInRoomDirectory) = setState { copy(isInRoomDirectory = action.isInRoomDirectory) } + + private fun doCreateRoom() = withState { state -> if (state.asyncCreateRoomRequest is Loading || state.asyncCreateRoomRequest is Success) { return@withState } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt new file mode 100644 index 0000000000..fe07ce4ac3 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2019 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.riotx.features.roomdirectory.picker + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class RoomDirectoryPickerActions : VectorViewModelAction { + object Retry : RoomDirectoryPickerActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index 18be8498da..f2daacb576 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -27,6 +27,7 @@ import com.airbnb.mvrx.withState import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.features.roomdirectory.RoomDirectoryActions import im.vector.riotx.features.roomdirectory.RoomDirectorySharedAction import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import im.vector.riotx.features.roomdirectory.RoomDirectoryViewModel @@ -86,14 +87,14 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onRoomDirectoryClicked(roomDirectoryData: RoomDirectoryData) { Timber.v("onRoomDirectoryClicked: $roomDirectoryData") - viewModel.setRoomDirectoryData(roomDirectoryData) + viewModel.handle(RoomDirectoryActions.SetRoomDirectoryData(roomDirectoryData)) actionViewModel.post(RoomDirectorySharedAction.Back) } override fun retry() { Timber.v("Retry") - pickerViewModel.load() + pickerViewModel.handle(RoomDirectoryPickerActions.Retry) } override fun invalidate() = withState(pickerViewModel) { state -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt index 6cc96a1f70..92abdb0b98 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt @@ -16,11 +16,7 @@ package im.vector.riotx.features.roomdirectory.picker -import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.FragmentViewModelContext -import com.airbnb.mvrx.MvRxViewModelFactory -import com.airbnb.mvrx.Success -import com.airbnb.mvrx.ViewModelContext +import com.airbnb.mvrx.* import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.MatrixCallback @@ -29,7 +25,8 @@ import im.vector.matrix.android.api.session.room.model.thirdparty.ThirdPartyProt import im.vector.riotx.core.platform.VectorViewModel class RoomDirectoryPickerViewModel @AssistedInject constructor(@Assisted initialState: RoomDirectoryPickerViewState, - private val session: Session) : VectorViewModel(initialState) { + private val session: Session) + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -49,7 +46,7 @@ class RoomDirectoryPickerViewModel @AssistedInject constructor(@Assisted initial load() } - fun load() { + private fun load() { session.getThirdPartyProtocol(object : MatrixCallback> { override fun onSuccess(data: Map) { setState { @@ -64,4 +61,10 @@ class RoomDirectoryPickerViewModel @AssistedInject constructor(@Assisted initial } }) } + + override fun handle(action: RoomDirectoryPickerActions) { + when (action) { + RoomDirectoryPickerActions.Retry -> load() + } + } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt new file mode 100644 index 0000000000..ceedaba274 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2019 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.riotx.features.roomdirectory.roompreview + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class RoomPreviewActions : VectorViewModelAction { + object Join : RoomPreviewActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt index aff89e3b09..7bb2655605 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -72,7 +72,7 @@ class RoomPreviewNoPreviewFragment @Inject constructor( roomPreviewNoPreviewJoin.callback = object : ButtonStateView.Callback { override fun onButtonClicked() { - roomPreviewViewModel.joinRoom() + roomPreviewViewModel.handle(RoomPreviewActions.Join) } override fun onRetryClicked() { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt index 2bd75c2b90..f1f3bc98ed 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt @@ -30,7 +30,8 @@ import im.vector.riotx.features.roomdirectory.JoinState import timber.log.Timber class RoomPreviewViewModel @AssistedInject constructor(@Assisted initialState: RoomPreviewViewState, - private val session: Session) : VectorViewModel(initialState) { + private val session: Session) + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -76,7 +77,13 @@ class RoomPreviewViewModel @AssistedInject constructor(@Assisted initialState: R .disposeOnClear() } - fun joinRoom() = withState { state -> + override fun handle(action: RoomPreviewActions) { + when (action) { + RoomPreviewActions.Join -> joinRoom() + } + } + + private fun joinRoom() = withState { state -> if (state.roomJoinState == JoinState.JOINING) { // Request already sent, should not happen Timber.w("Try to join an already joining room. Should not happen") diff --git a/vector/src/main/java/im/vector/riotx/features/settings/ignored/IgnoredUsersViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/ignored/IgnoredUsersViewModel.kt index a9f142058d..e77660746c 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/ignored/IgnoredUsersViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/ignored/IgnoredUsersViewModel.kt @@ -25,18 +25,20 @@ import im.vector.matrix.android.api.session.user.model.User import im.vector.matrix.rx.rx import im.vector.riotx.core.extensions.postLiveEvent import im.vector.riotx.core.platform.VectorViewModel +import im.vector.riotx.core.platform.VectorViewModelAction data class IgnoredUsersViewState( val ignoredUsers: List = emptyList(), val unIgnoreRequest: Async = Uninitialized ) : MvRxState -sealed class IgnoredUsersAction { +sealed class IgnoredUsersAction : VectorViewModelAction { data class UnIgnore(val userId: String) : IgnoredUsersAction() } class IgnoredUsersViewModel @AssistedInject constructor(@Assisted initialState: IgnoredUsersViewState, - private val session: Session) : VectorViewModel(initialState) { + private val session: Session) + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -66,7 +68,7 @@ class IgnoredUsersViewModel @AssistedInject constructor(@Assisted initialState: } } - fun handle(action: IgnoredUsersAction) { + override fun handle(action: IgnoredUsersAction) { when (action) { is IgnoredUsersAction.UnIgnore -> handleUnIgnore(action) } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt index c51da409cf..dd773f4c22 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt @@ -16,17 +16,13 @@ package im.vector.riotx.features.settings.push -import com.airbnb.mvrx.Async -import com.airbnb.mvrx.FragmentViewModelContext -import com.airbnb.mvrx.MvRxState -import com.airbnb.mvrx.MvRxViewModelFactory -import com.airbnb.mvrx.Uninitialized -import com.airbnb.mvrx.ViewModelContext +import com.airbnb.mvrx.* import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.pushers.Pusher import im.vector.matrix.rx.RxSession +import im.vector.riotx.core.platform.EmptyAction import im.vector.riotx.core.platform.VectorViewModel data class PushGatewayViewState( @@ -34,7 +30,8 @@ data class PushGatewayViewState( ) : MvRxState class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: PushGatewayViewState, - private val session: Session) : VectorViewModel(initialState) { + private val session: Session) + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -60,4 +57,8 @@ class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: copy(pushGateways = it) } } + + override fun handle(action: EmptyAction) { + // No op + } } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushRulesViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushRulesViewModel.kt index d651deaf80..e376b7ed6f 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/push/PushRulesViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushRulesViewModel.kt @@ -20,13 +20,15 @@ import com.airbnb.mvrx.MvRxViewModelFactory import com.airbnb.mvrx.ViewModelContext import im.vector.matrix.android.api.pushrules.rest.PushRule import im.vector.riotx.core.di.HasScreenInjector +import im.vector.riotx.core.platform.EmptyAction import im.vector.riotx.core.platform.VectorViewModel data class PushRulesViewState( val rules: List = emptyList() ) : MvRxState -class PushRulesViewModel(initialState: PushRulesViewState) : VectorViewModel(initialState) { +class PushRulesViewModel(initialState: PushRulesViewState) + : VectorViewModel(initialState) { companion object : MvRxViewModelFactory { @@ -36,4 +38,8 @@ class PushRulesViewModel(initialState: PushRulesViewState) : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -70,4 +71,8 @@ class IncomingShareViewModel @AssistedInject constructor(@Assisted initialState: } .disposeOnClear() } + + override fun handle(action: EmptyAction) { + // No op + } } From a6fcc7dca6e38fbba7c7201dc3963cc0afcb75d6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 15:07:01 +0100 Subject: [PATCH 06/16] Move class to dedicated file --- .../timeline/action/MessageActionsActions.kt | 23 +++++++++++++++++++ .../action/MessageActionsBottomSheet.kt | 2 +- .../action/MessageActionsViewModel.kt | 11 +++------ 3 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt new file mode 100644 index 0000000000..02c0eebe69 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2019 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.riotx.features.home.room.detail.timeline.action + +import im.vector.riotx.core.platform.VectorViewModelAction + +sealed class MessageActionsActions : VectorViewModelAction { + object ToggleReportMenu : MessageActionsActions() +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index b98d74a8b4..84c8ed6886 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -72,7 +72,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun didSelectMenuAction(eventAction: EventSharedAction) { if (eventAction is EventSharedAction.ReportContent) { // Toggle report menu - viewModel.handle(MessageActionActions.ToggleReportMenu) + viewModel.handle(MessageActionsActions.ToggleReportMenu) } else { messageActionsStore.post(eventAction) dismiss() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index a65323f412..83045ce9bb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -37,7 +37,6 @@ import im.vector.matrix.rx.unwrap import im.vector.riotx.R import im.vector.riotx.core.extensions.canReact import im.vector.riotx.core.platform.VectorViewModel -import im.vector.riotx.core.platform.VectorViewModelAction import im.vector.riotx.core.resources.StringProvider import im.vector.riotx.features.home.room.detail.timeline.format.NoticeEventFormatter import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData @@ -77,10 +76,6 @@ data class MessageActionState( fun canReact() = timelineEvent()?.canReact() == true } -sealed class MessageActionActions : VectorViewModelAction { - object ToggleReportMenu : MessageActionActions() -} - /** * Information related to an event and used to display preview in contextual bottom sheet. */ @@ -90,7 +85,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted private val session: Session, private val noticeEventFormatter: NoticeEventFormatter, private val stringProvider: StringProvider -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val eventId = initialState.eventId private val informationData = initialState.informationData @@ -117,9 +112,9 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted observeEventAction() } - override fun handle(action: MessageActionActions) { + override fun handle(action: MessageActionsActions) { when (action) { - MessageActionActions.ToggleReportMenu -> toggleReportMenu() + MessageActionsActions.ToggleReportMenu -> toggleReportMenu() } } From f17564d743819e6c87b743dd92d9f23407ededa2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 15:08:50 +0100 Subject: [PATCH 07/16] Simple code --- .../features/roomdirectory/PublicRoomsFragment.kt | 2 +- .../features/roomdirectory/RoomDirectoryActions.kt | 3 +-- .../features/roomdirectory/RoomDirectoryViewModel.kt | 12 +++++------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index b0198b39c4..ea46671e12 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -130,7 +130,7 @@ class PublicRoomsFragment @Inject constructor( override fun onPublicRoomJoin(publicRoom: PublicRoom) { Timber.v("PublicRoomJoinClicked: $publicRoom") - viewModel.handle(RoomDirectoryActions.JoinRoom(publicRoom)) + viewModel.handle(RoomDirectoryActions.JoinRoom(publicRoom.roomId)) } override fun loadMore() { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt index 198426bc1d..0bb6658f2b 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt @@ -16,7 +16,6 @@ package im.vector.riotx.features.roomdirectory -import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.core.platform.VectorViewModelAction @@ -24,5 +23,5 @@ sealed class RoomDirectoryActions : VectorViewModelAction { data class SetRoomDirectoryData(val roomDirectoryData: RoomDirectoryData) : RoomDirectoryActions() data class FilterWith(val filter: String) : RoomDirectoryActions() object LoadMore : RoomDirectoryActions() - data class JoinRoom(val publicRoom: PublicRoom) : RoomDirectoryActions() + data class JoinRoom(val roomId: String) : RoomDirectoryActions() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt index d092453ba8..085d5dfe5f 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt @@ -202,9 +202,7 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: } private fun joinRoom(action: RoomDirectoryActions.JoinRoom) = withState { state -> - val roomId = action.publicRoom.roomId - - if (state.joiningRoomsIds.contains(roomId)) { + if (state.joiningRoomsIds.contains(action.roomId)) { // Request already sent, should not happen Timber.w("Try to join an already joining room. Should not happen") return@withState @@ -212,11 +210,11 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: setState { copy( - joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { add(roomId) } + joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { add(action.roomId) } ) } - session.joinRoom(roomId, emptyList(), object : MatrixCallback { + session.joinRoom(action.roomId, emptyList(), object : MatrixCallback { override fun onSuccess(data: Unit) { // We do not update the joiningRoomsIds here, because, the room is not joined yet regarding the sync data. // Instead, we wait for the room to be joined @@ -228,8 +226,8 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: setState { copy( - joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { remove(roomId) }, - joiningErrorRoomsIds = joiningErrorRoomsIds.toMutableSet().apply { add(roomId) } + joiningRoomsIds = joiningRoomsIds.toMutableSet().apply { remove(action.roomId) }, + joiningErrorRoomsIds = joiningErrorRoomsIds.toMutableSet().apply { add(action.roomId) } ) } } From 12376368c790e0272952d23a09e06fc57c1b5cef Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 15:20:46 +0100 Subject: [PATCH 08/16] Rename class --- .../riotx/core/platform/VectorViewModel.kt | 4 - .../core/platform/VectorViewModelAction.kt | 24 ++++ ...sActions.kt => KeyBackupSettingsAction.kt} | 8 +- .../settings/KeysBackupManageActivity.kt | 2 +- .../settings/KeysBackupSettingsFragment.kt | 6 +- .../settings/KeysBackupSettingsViewModel.kt | 10 +- ...omActions.kt => CreateDirectRoomAction.kt} | 14 +-- .../CreateDirectRoomDirectoryUsersFragment.kt | 6 +- .../CreateDirectRoomKnownUsersFragment.kt | 10 +- .../createdirect/CreateDirectRoomViewModel.kt | 20 +-- ...GroupListActions.kt => GroupListAction.kt} | 4 +- .../features/home/group/GroupListFragment.kt | 2 +- .../features/home/group/GroupListViewModel.kt | 8 +- ...omDetailActions.kt => RoomDetailAction.kt} | 56 ++++----- .../home/room/detail/RoomDetailFragment.kt | 82 ++++++------- .../home/room/detail/RoomDetailViewModel.kt | 114 +++++++++--------- ...mposerActions.kt => TextComposerAction.kt} | 4 +- .../detail/composer/TextComposerViewModel.kt | 8 +- ...ionsActions.kt => MessageActionsAction.kt} | 4 +- .../action/MessageActionsBottomSheet.kt | 2 +- .../action/MessageActionsViewModel.kt | 6 +- .../{RoomListActions.kt => RoomListAction.kt} | 18 +-- .../home/room/list/RoomListFragment.kt | 22 ++-- .../home/room/list/RoomListViewModel.kt | 34 +++--- .../login/{LoginActions.kt => LoginAction.kt} | 12 +- .../riotx/features/login/LoginActivity.kt | 2 +- .../riotx/features/login/LoginFragment.kt | 10 +- .../login/LoginSsoFallbackFragment.kt | 6 +- .../riotx/features/login/LoginViewModel.kt | 24 ++-- .../reactions/EmojiReactionPickerActivity.kt | 2 +- ...iSearchActions.kt => EmojiSearchAction.kt} | 4 +- .../reactions/EmojiSearchResultViewModel.kt | 8 +- .../roomdirectory/PublicRoomsFragment.kt | 6 +- ...ctoryActions.kt => RoomDirectoryAction.kt} | 10 +- .../roomdirectory/RoomDirectoryActivity.kt | 6 +- .../roomdirectory/RoomDirectoryViewModel.kt | 18 +-- ...eateRoomActions.kt => CreateRoomAction.kt} | 10 +- .../createroom/CreateRoomActivity.kt | 2 +- .../createroom/CreateRoomFragment.kt | 10 +- .../createroom/CreateRoomViewModel.kt | 18 +-- ...ctions.kt => RoomDirectoryPickerAction.kt} | 4 +- .../picker/RoomDirectoryPickerFragment.kt | 6 +- .../picker/RoomDirectoryPickerViewModel.kt | 6 +- ...PreviewActions.kt => RoomPreviewAction.kt} | 4 +- .../RoomPreviewNoPreviewFragment.kt | 2 +- .../roompreview/RoomPreviewViewModel.kt | 6 +- 46 files changed, 332 insertions(+), 312 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/core/platform/VectorViewModelAction.kt rename vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/{KeyBackupSettingsActions.kt => KeyBackupSettingsAction.kt} (76%) rename vector/src/main/java/im/vector/riotx/features/home/createdirect/{CreateDirectRoomActions.kt => CreateDirectRoomAction.kt} (85%) rename vector/src/main/java/im/vector/riotx/features/home/group/{GroupListActions.kt => GroupListAction.kt} (92%) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/{RoomDetailActions.kt => RoomDetailAction.kt} (75%) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/{TextComposerActions.kt => TextComposerAction.kt} (91%) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/{MessageActionsActions.kt => MessageActionsAction.kt} (86%) rename vector/src/main/java/im/vector/riotx/features/home/room/list/{RoomListActions.kt => RoomListAction.kt} (76%) rename vector/src/main/java/im/vector/riotx/features/login/{LoginActions.kt => LoginAction.kt} (90%) rename vector/src/main/java/im/vector/riotx/features/reactions/{EmojiSearchActions.kt => EmojiSearchAction.kt} (91%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/{RoomDirectoryActions.kt => RoomDirectoryAction.kt} (86%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/{CreateRoomActions.kt => CreateRoomAction.kt} (81%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/{RoomDirectoryPickerActions.kt => RoomDirectoryPickerAction.kt} (86%) rename vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/{RoomPreviewActions.kt => RoomPreviewAction.kt} (88%) diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt index 949ac4cdb9..74b18be3c2 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModel.kt @@ -23,10 +23,6 @@ import im.vector.riotx.core.utils.LiveEvent import io.reactivex.Observable import io.reactivex.Single -interface VectorViewModelAction - -object EmptyAction : VectorViewModelAction - abstract class VectorViewModel(initialState: S) : BaseMvRxViewModel(initialState, false) { diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModelAction.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModelAction.kt new file mode 100644 index 0000000000..81c1996497 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorViewModelAction.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2019 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.riotx.core.platform + +interface VectorViewModelAction + +/** + * To use when no action is associated to the ViewModel + */ +object EmptyAction : VectorViewModelAction diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsAction.kt similarity index 76% rename from vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt rename to vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsAction.kt index 5ced274b21..723be80dfd 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeyBackupSettingsAction.kt @@ -18,8 +18,8 @@ package im.vector.riotx.features.crypto.keysbackup.settings import im.vector.riotx.core.platform.VectorViewModelAction -sealed class KeyBackupSettingsActions : VectorViewModelAction { - object Init : KeyBackupSettingsActions() - object GetKeyBackupTrust : KeyBackupSettingsActions() - object DeleteKeyBackup : KeyBackupSettingsActions() +sealed class KeyBackupSettingsAction : VectorViewModelAction { + object Init : KeyBackupSettingsAction() + object GetKeyBackupTrust : KeyBackupSettingsAction() + object DeleteKeyBackup : KeyBackupSettingsAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt index 0d0ce551aa..98e954c5b5 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupManageActivity.kt @@ -51,7 +51,7 @@ class KeysBackupManageActivity : SimpleFragmentActivity() { super.initUiAndData() if (supportFragmentManager.fragments.isEmpty()) { replaceFragment(R.id.container, KeysBackupSettingsFragment::class.java) - viewModel.handle(KeyBackupSettingsActions.Init) + viewModel.handle(KeyBackupSettingsAction.Init) } // Observe the deletion of keys backup diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt index d281cd253f..9994ee5002 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsFragment.kt @@ -66,7 +66,7 @@ class KeysBackupSettingsFragment @Inject constructor(private val keysBackupSetti .setMessage(R.string.keys_backup_settings_delete_confirm_message) .setCancelable(false) .setPositiveButton(R.string.keys_backup_settings_delete_confirm_title) { _, _ -> - viewModel.handle(KeyBackupSettingsActions.DeleteKeyBackup) + viewModel.handle(KeyBackupSettingsAction.DeleteKeyBackup) } .setNegativeButton(R.string.cancel, null) .setCancelable(true) @@ -75,10 +75,10 @@ class KeysBackupSettingsFragment @Inject constructor(private val keysBackupSetti } override fun loadTrustData() { - viewModel.handle(KeyBackupSettingsActions.GetKeyBackupTrust) + viewModel.handle(KeyBackupSettingsAction.GetKeyBackupTrust) } override fun loadKeysBackupState() { - viewModel.handle(KeyBackupSettingsActions.Init) + viewModel.handle(KeyBackupSettingsAction.Init) } } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt index 95b761291c..4acb318033 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/settings/KeysBackupSettingsViewModel.kt @@ -28,7 +28,7 @@ import im.vector.riotx.core.platform.VectorViewModel class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialState: KeysBackupSettingViewState, session: Session -) : VectorViewModel(initialState), +) : VectorViewModel(initialState), KeysBackupStateListener { @AssistedInject.Factory @@ -58,11 +58,11 @@ class KeysBackupSettingsViewModel @AssistedInject constructor(@Assisted initialS getKeysBackupTrust() } - override fun handle(action: KeyBackupSettingsActions) { + override fun handle(action: KeyBackupSettingsAction) { when (action) { - KeyBackupSettingsActions.Init -> init() - KeyBackupSettingsActions.GetKeyBackupTrust -> getKeysBackupTrust() - KeyBackupSettingsActions.DeleteKeyBackup -> deleteCurrentBackup() + KeyBackupSettingsAction.Init -> init() + KeyBackupSettingsAction.GetKeyBackupTrust -> getKeysBackupTrust() + KeyBackupSettingsAction.DeleteKeyBackup -> deleteCurrentBackup() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt similarity index 85% rename from vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt index 17aadcff35..8410a95707 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomAction.kt @@ -19,11 +19,11 @@ package im.vector.riotx.features.home.createdirect import im.vector.matrix.android.api.session.user.model.User import im.vector.riotx.core.platform.VectorViewModelAction -sealed class CreateDirectRoomActions : VectorViewModelAction { - object CreateRoomAndInviteSelectedUsers : CreateDirectRoomActions() - data class FilterKnownUsers(val value: String) : CreateDirectRoomActions() - data class SearchDirectoryUsers(val value: String) : CreateDirectRoomActions() - object ClearFilterKnownUsers : CreateDirectRoomActions() - data class SelectUser(val user: User) : CreateDirectRoomActions() - data class RemoveSelectedUser(val user: User) : CreateDirectRoomActions() +sealed class CreateDirectRoomAction : VectorViewModelAction { + object CreateRoomAndInviteSelectedUsers : CreateDirectRoomAction() + data class FilterKnownUsers(val value: String) : CreateDirectRoomAction() + data class SearchDirectoryUsers(val value: String) : CreateDirectRoomAction() + object ClearFilterKnownUsers : CreateDirectRoomAction() + data class SelectUser(val user: User) : CreateDirectRoomAction() + data class RemoveSelectedUser(val user: User) : CreateDirectRoomAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 7e8e5a16d4..23bff0fced 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -60,7 +60,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( createDirectRoomSearchById .textChanges() .subscribe { - viewModel.handle(CreateDirectRoomActions.SearchDirectoryUsers(it.toString())) + viewModel.handle(CreateDirectRoomAction.SearchDirectoryUsers(it.toString())) } .disposeOnDestroy() createDirectRoomSearchById.requestFocus() @@ -80,12 +80,12 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() - viewModel.handle(CreateDirectRoomActions.SelectUser(user)) + viewModel.handle(CreateDirectRoomAction.SelectUser(user)) actionViewModel.post(CreateDirectRoomSharedAction.GoBack) } override fun retryDirectoryUsersRequest() { val currentSearch = createDirectRoomSearchById.text.toString() - viewModel.handle(CreateDirectRoomActions.SearchDirectoryUsers(currentSearch)) + viewModel.handle(CreateDirectRoomAction.SearchDirectoryUsers(currentSearch)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index bbfab88528..24fea9e42c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -79,7 +79,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_create_direct_room -> { - viewModel.handle(CreateDirectRoomActions.CreateRoomAndInviteSelectedUsers) + viewModel.handle(CreateDirectRoomAction.CreateRoomAndInviteSelectedUsers) true } else -> @@ -108,9 +108,9 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( .subscribe { text -> val filterValue = text.trim() val action = if (filterValue.isBlank()) { - CreateDirectRoomActions.ClearFilterKnownUsers + CreateDirectRoomAction.ClearFilterKnownUsers } else { - CreateDirectRoomActions.FilterKnownUsers(filterValue.toString()) + CreateDirectRoomAction.FilterKnownUsers(filterValue.toString()) } viewModel.handle(action) } @@ -157,7 +157,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( chip.isCloseIconVisible = true chipGroup.addView(chip) chip.setOnCloseIconClickListener { - viewModel.handle(CreateDirectRoomActions.RemoveSelectedUser(user)) + viewModel.handle(CreateDirectRoomAction.RemoveSelectedUser(user)) } chipGroupScrollView.post { chipGroupScrollView.fullScroll(ScrollView.FOCUS_DOWN) @@ -166,6 +166,6 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() - viewModel.handle(CreateDirectRoomActions.SelectUser(user)) + viewModel.handle(CreateDirectRoomAction.SelectUser(user)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt index 776a044230..f4cd81436c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomViewModel.kt @@ -51,7 +51,7 @@ data class SelectUserAction( class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted initialState: CreateDirectRoomViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -79,14 +79,14 @@ class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted observeDirectoryUsers() } - override fun handle(action: CreateDirectRoomActions) { + override fun handle(action: CreateDirectRoomAction) { when (action) { - is CreateDirectRoomActions.CreateRoomAndInviteSelectedUsers -> createRoomAndInviteSelectedUsers() - is CreateDirectRoomActions.FilterKnownUsers -> knownUsersFilter.accept(Option.just(action.value)) - is CreateDirectRoomActions.ClearFilterKnownUsers -> knownUsersFilter.accept(Option.empty()) - is CreateDirectRoomActions.SearchDirectoryUsers -> directoryUsersSearch.accept(action.value) - is CreateDirectRoomActions.SelectUser -> handleSelectUser(action) - is CreateDirectRoomActions.RemoveSelectedUser -> handleRemoveSelectedUser(action) + is CreateDirectRoomAction.CreateRoomAndInviteSelectedUsers -> createRoomAndInviteSelectedUsers() + is CreateDirectRoomAction.FilterKnownUsers -> knownUsersFilter.accept(Option.just(action.value)) + is CreateDirectRoomAction.ClearFilterKnownUsers -> knownUsersFilter.accept(Option.empty()) + is CreateDirectRoomAction.SearchDirectoryUsers -> directoryUsersSearch.accept(action.value) + is CreateDirectRoomAction.SelectUser -> handleSelectUser(action) + is CreateDirectRoomAction.RemoveSelectedUser -> handleRemoveSelectedUser(action) } } @@ -105,14 +105,14 @@ class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted } } - private fun handleRemoveSelectedUser(action: CreateDirectRoomActions.RemoveSelectedUser) = withState { state -> + private fun handleRemoveSelectedUser(action: CreateDirectRoomAction.RemoveSelectedUser) = withState { state -> val index = state.selectedUsers.indexOfFirst { it.userId == action.user.userId } val selectedUsers = state.selectedUsers.minus(action.user) setState { copy(selectedUsers = selectedUsers) } _selectUserEvent.postLiveEvent(SelectUserAction(action.user, false, index)) } - private fun handleSelectUser(action: CreateDirectRoomActions.SelectUser) = withState { state -> + private fun handleSelectUser(action: CreateDirectRoomAction.SelectUser) = withState { state -> // Reset the filter asap directoryUsersSearch.accept("") val isAddOperation: Boolean diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListAction.kt similarity index 92% rename from vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/group/GroupListAction.kt index 74fc7ec76b..e81890e7f2 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListAction.kt @@ -19,6 +19,6 @@ package im.vector.riotx.features.home.group import im.vector.matrix.android.api.session.group.model.GroupSummary import im.vector.riotx.core.platform.VectorViewModelAction -sealed class GroupListActions : VectorViewModelAction { - data class SelectGroup(val groupSummary: GroupSummary) : GroupListActions() +sealed class GroupListAction : VectorViewModelAction { + data class SelectGroup(val groupSummary: GroupSummary) : GroupListAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index d5951830b2..5875336d69 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -62,6 +62,6 @@ class GroupListFragment @Inject constructor( } override fun onGroupSelected(groupSummary: GroupSummary) { - viewModel.handle(GroupListActions.SelectGroup(groupSummary)) + viewModel.handle(GroupListAction.SelectGroup(groupSummary)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt index 715bb857b4..d9a38d5d9b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt @@ -42,7 +42,7 @@ class GroupListViewModel @AssistedInject constructor(@Assisted initialState: Gro private val selectedGroupStore: SelectedGroupDataSource, private val session: Session, private val stringProvider: StringProvider -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -81,15 +81,15 @@ class GroupListViewModel @AssistedInject constructor(@Assisted initialState: Gro } } - override fun handle(action: GroupListActions) { + override fun handle(action: GroupListAction) { when (action) { - is GroupListActions.SelectGroup -> handleSelectGroup(action) + is GroupListAction.SelectGroup -> handleSelectGroup(action) } } // PRIVATE METHODS ***************************************************************************** - private fun handleSelectGroup(action: GroupListActions.SelectGroup) = withState { state -> + private fun handleSelectGroup(action: GroupListAction.SelectGroup) = withState { state -> if (state.selectedGroup?.groupId != action.groupSummary.groupId) { setState { copy(selectedGroup = action.groupSummary) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailAction.kt similarity index 75% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailAction.kt index 45d08820e4..b37d03097c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailAction.kt @@ -23,42 +23,42 @@ import im.vector.matrix.android.api.session.room.timeline.Timeline import im.vector.matrix.android.api.session.room.timeline.TimelineEvent import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomDetailActions : VectorViewModelAction { - data class SaveDraft(val draft: String) : RoomDetailActions() - data class SendMessage(val text: String, val autoMarkdown: Boolean) : RoomDetailActions() - data class SendMedia(val attachments: List) : RoomDetailActions() - data class TimelineEventTurnsVisible(val event: TimelineEvent) : RoomDetailActions() - data class TimelineEventTurnsInvisible(val event: TimelineEvent) : RoomDetailActions() - data class LoadMoreTimelineEvents(val direction: Timeline.Direction) : RoomDetailActions() - data class SendReaction(val targetEventId: String, val reaction: String) : RoomDetailActions() - data class UndoReaction(val targetEventId: String, val reaction: String, val reason: String? = "") : RoomDetailActions() - data class RedactAction(val targetEventId: String, val reason: String? = "") : RoomDetailActions() - data class UpdateQuickReactAction(val targetEventId: String, val selectedReaction: String, val add: Boolean) : RoomDetailActions() - data class NavigateToEvent(val eventId: String, val highlight: Boolean) : RoomDetailActions() - data class SetReadMarkerAction(val eventId: String) : RoomDetailActions() - object MarkAllAsRead : RoomDetailActions() - data class DownloadFile(val eventId: String, val messageFileContent: MessageFileContent) : RoomDetailActions() - data class HandleTombstoneEvent(val event: Event) : RoomDetailActions() - object AcceptInvite : RoomDetailActions() - object RejectInvite : RoomDetailActions() +sealed class RoomDetailAction : VectorViewModelAction { + data class SaveDraft(val draft: String) : RoomDetailAction() + data class SendMessage(val text: String, val autoMarkdown: Boolean) : RoomDetailAction() + data class SendMedia(val attachments: List) : RoomDetailAction() + data class TimelineEventTurnsVisible(val event: TimelineEvent) : RoomDetailAction() + data class TimelineEventTurnsInvisible(val event: TimelineEvent) : RoomDetailAction() + data class LoadMoreTimelineEvents(val direction: Timeline.Direction) : RoomDetailAction() + data class SendReaction(val targetEventId: String, val reaction: String) : RoomDetailAction() + data class UndoReaction(val targetEventId: String, val reaction: String, val reason: String? = "") : RoomDetailAction() + data class RedactAction(val targetEventId: String, val reason: String? = "") : RoomDetailAction() + data class UpdateQuickReactAction(val targetEventId: String, val selectedReaction: String, val add: Boolean) : RoomDetailAction() + data class NavigateToEvent(val eventId: String, val highlight: Boolean) : RoomDetailAction() + data class SetReadMarkerAction(val eventId: String) : RoomDetailAction() + object MarkAllAsRead : RoomDetailAction() + data class DownloadFile(val eventId: String, val messageFileContent: MessageFileContent) : RoomDetailAction() + data class HandleTombstoneEvent(val event: Event) : RoomDetailAction() + object AcceptInvite : RoomDetailAction() + object RejectInvite : RoomDetailAction() - data class EnterEditMode(val eventId: String, val draft: String) : RoomDetailActions() - data class EnterQuoteMode(val eventId: String, val draft: String) : RoomDetailActions() - data class EnterReplyMode(val eventId: String, val draft: String) : RoomDetailActions() - data class ExitSpecialMode(val draft: String) : RoomDetailActions() + data class EnterEditMode(val eventId: String, val draft: String) : RoomDetailAction() + data class EnterQuoteMode(val eventId: String, val draft: String) : RoomDetailAction() + data class EnterReplyMode(val eventId: String, val draft: String) : RoomDetailAction() + data class ExitSpecialMode(val draft: String) : RoomDetailAction() - data class ResendMessage(val eventId: String) : RoomDetailActions() - data class RemoveFailedEcho(val eventId: String) : RoomDetailActions() + data class ResendMessage(val eventId: String) : RoomDetailAction() + data class RemoveFailedEcho(val eventId: String) : RoomDetailAction() data class ReportContent( val eventId: String, val senderId: String?, val reason: String, val spam: Boolean = false, - val inappropriate: Boolean = false) : RoomDetailActions() + val inappropriate: Boolean = false) : RoomDetailAction() - data class IgnoreUser(val userId: String?) : RoomDetailActions() + data class IgnoreUser(val userId: String?) : RoomDetailAction() - object ClearSendQueue : RoomDetailActions() - object ResendAll : RoomDetailActions() + object ClearSendQueue : RoomDetailAction() + object ResendAll : RoomDetailAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 1090dedd8a..681952f4d4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -91,7 +91,7 @@ import im.vector.riotx.features.home.AvatarRenderer import im.vector.riotx.features.home.NavigateToRoomInterceptor import im.vector.riotx.features.home.PermalinkHandler import im.vector.riotx.features.home.getColorFromUserId -import im.vector.riotx.features.home.room.detail.composer.TextComposerActions +import im.vector.riotx.features.home.room.detail.composer.TextComposerAction import im.vector.riotx.features.home.room.detail.composer.TextComposerView import im.vector.riotx.features.home.room.detail.composer.TextComposerViewModel import im.vector.riotx.features.home.room.detail.composer.TextComposerViewState @@ -278,8 +278,8 @@ class RoomDetailFragment @Inject constructor( if (savedInstanceState == null) { when (val sharedData = roomDetailArgs.sharedData) { - is SharedData.Text -> roomDetailViewModel.handle(RoomDetailActions.SendMessage(sharedData.text, false)) - is SharedData.Attachments -> roomDetailViewModel.handle(RoomDetailActions.SendMedia(sharedData.attachmentData)) + is SharedData.Text -> roomDetailViewModel.handle(RoomDetailAction.SendMessage(sharedData.text, false)) + is SharedData.Attachments -> roomDetailViewModel.handle(RoomDetailAction.SendMedia(sharedData.attachmentData)) null -> Timber.v("No share data to process") } } @@ -323,7 +323,7 @@ class RoomDetailFragment @Inject constructor( private fun setupNotificationView() { notificationAreaView.delegate = object : NotificationAreaView.Delegate { override fun onTombstoneEventClicked(tombstoneEvent: Event) { - roomDetailViewModel.handle(RoomDetailActions.HandleTombstoneEvent(tombstoneEvent)) + roomDetailViewModel.handle(RoomDetailAction.HandleTombstoneEvent(tombstoneEvent)) } override fun resendUnsentEvents() { @@ -355,11 +355,11 @@ class RoomDetailFragment @Inject constructor( // This a temporary option during dev as it is not super stable // Cancel all pending actions in room queue and post a dummy // Then mark all sending events as undelivered - roomDetailViewModel.handle(RoomDetailActions.ClearSendQueue) + roomDetailViewModel.handle(RoomDetailAction.ClearSendQueue) return true } if (item.itemId == R.id.resend_all) { - roomDetailViewModel.handle(RoomDetailActions.ResendAll) + roomDetailViewModel.handle(RoomDetailAction.ResendAll) return true } return super.onOptionsItemSelected(item) @@ -427,7 +427,7 @@ class RoomDetailFragment @Inject constructor( notificationDrawerManager.setCurrentRoom(null) - roomDetailViewModel.handle(RoomDetailActions.SaveDraft(composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.SaveDraft(composerLayout.composerEditText.text.toString())) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -440,7 +440,7 @@ class RoomDetailFragment @Inject constructor( val reaction = data.getStringExtra(EmojiReactionPickerActivity.EXTRA_REACTION_RESULT) ?: return // TODO check if already reacted with that? - roomDetailViewModel.handle(RoomDetailActions.SendReaction(eventId, reaction)) + roomDetailViewModel.handle(RoomDetailAction.SendReaction(eventId, reaction)) } } } @@ -498,7 +498,7 @@ class RoomDetailFragment @Inject constructor( override fun performQuickReplyOnHolder(model: EpoxyModel<*>) { (model as? AbsMessageItem)?.attributes?.informationData?.let { val eventId = it.eventId - roomDetailViewModel.handle(RoomDetailActions.EnterReplyMode(eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.EnterReplyMode(eventId, composerLayout.composerEditText.text.toString())) } } @@ -601,11 +601,11 @@ class RoomDetailFragment @Inject constructor( val textMessage = composerLayout.composerEditText.text.toString() if (textMessage.isNotBlank()) { lockSendButton = true - roomDetailViewModel.handle(RoomDetailActions.SendMessage(textMessage, vectorPreferences.isMarkdownEnabled())) + roomDetailViewModel.handle(RoomDetailAction.SendMessage(textMessage, vectorPreferences.isMarkdownEnabled())) } } composerLayout.composerRelatedMessageCloseButton.setOnClickListener { - roomDetailViewModel.handle(RoomDetailActions.ExitSpecialMode(composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.ExitSpecialMode(composerLayout.composerEditText.text.toString())) } composerLayout.callback = object : TextComposerView.Callback { override fun onRichContentSelected(contentUri: Uri): Boolean { @@ -760,13 +760,13 @@ class RoomDetailFragment @Inject constructor( .setView(layout) .setPositiveButton(R.string.report_content_custom_submit) { _, _ -> val reason = input.text.toString() - roomDetailViewModel.handle(RoomDetailActions.ReportContent(action.eventId, action.senderId, reason)) + roomDetailViewModel.handle(RoomDetailAction.ReportContent(action.eventId, action.senderId, reason)) } .setNegativeButton(R.string.cancel, null) .show() } - private fun displayRoomDetailActionResult(result: Async) { + private fun displayRoomDetailActionResult(result: Async) { when (result) { is Fail -> { AlertDialog.Builder(requireActivity()) @@ -777,7 +777,7 @@ class RoomDetailFragment @Inject constructor( } is Success -> { when (val data = result.invoke()) { - is RoomDetailActions.ReportContent -> { + is RoomDetailAction.ReportContent -> { when { data.spam -> { AlertDialog.Builder(requireActivity()) @@ -785,7 +785,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_as_spam_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailAction.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -796,7 +796,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_as_inappropriate_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailAction.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -807,7 +807,7 @@ class RoomDetailFragment @Inject constructor( .setMessage(R.string.content_reported_content) .setPositiveButton(R.string.ok, null) .setNegativeButton(R.string.block_user) { _, _ -> - roomDetailViewModel.handle(RoomDetailActions.IgnoreUser(data.senderId)) + roomDetailViewModel.handle(RoomDetailAction.IgnoreUser(data.senderId)) } .show() .withColoredButton(DialogInterface.BUTTON_NEGATIVE) @@ -831,7 +831,7 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(getString(R.string.navigate_to_room_when_already_in_the_room)) } else { // Highlight and scroll to this event - roomDetailViewModel.handle(RoomDetailActions.NavigateToEvent(eventId, true)) + roomDetailViewModel.handle(RoomDetailAction.NavigateToEvent(eventId, true)) } return true } @@ -859,11 +859,11 @@ class RoomDetailFragment @Inject constructor( } override fun onEventVisible(event: TimelineEvent) { - roomDetailViewModel.handle(RoomDetailActions.TimelineEventTurnsVisible(event)) + roomDetailViewModel.handle(RoomDetailAction.TimelineEventTurnsVisible(event)) } override fun onEventInvisible(event: TimelineEvent) { - roomDetailViewModel.handle(RoomDetailActions.TimelineEventTurnsInvisible(event)) + roomDetailViewModel.handle(RoomDetailAction.TimelineEventTurnsInvisible(event)) } override fun onEncryptedMessageClicked(informationData: MessageInformationData, view: View) { @@ -899,7 +899,7 @@ class RoomDetailFragment @Inject constructor( } override fun onFileMessageClicked(eventId: String, messageFileContent: MessageFileContent) { - val action = RoomDetailActions.DownloadFile(eventId, messageFileContent) + val action = RoomDetailAction.DownloadFile(eventId, messageFileContent) // We need WRITE_EXTERNAL permission if (checkPermissions(PERMISSIONS_FOR_WRITING_FILES, this, PERMISSION_REQUEST_CODE_DOWNLOAD_FILE)) { roomDetailViewModel.handle(action) @@ -946,7 +946,7 @@ class RoomDetailFragment @Inject constructor( } override fun onLoadMore(direction: Timeline.Direction) { - roomDetailViewModel.handle(RoomDetailActions.LoadMoreTimelineEvents(direction)) + roomDetailViewModel.handle(RoomDetailAction.LoadMoreTimelineEvents(direction)) } override fun onEventCellClicked(informationData: MessageInformationData, messageContent: MessageContent?, view: View) { @@ -976,10 +976,10 @@ class RoomDetailFragment @Inject constructor( override fun onClickOnReactionPill(informationData: MessageInformationData, reaction: String, on: Boolean) { if (on) { // we should test the current real state of reaction on this event - roomDetailViewModel.handle(RoomDetailActions.SendReaction(informationData.eventId, reaction)) + roomDetailViewModel.handle(RoomDetailAction.SendReaction(informationData.eventId, reaction)) } else { // I need to redact a reaction - roomDetailViewModel.handle(RoomDetailActions.UndoReaction(informationData.eventId, reaction)) + roomDetailViewModel.handle(RoomDetailAction.UndoReaction(informationData.eventId, reaction)) } } @@ -1027,14 +1027,14 @@ class RoomDetailFragment @Inject constructor( } } if (nextReadMarkerId != null) { - roomDetailViewModel.handle(RoomDetailActions.SetReadMarkerAction(nextReadMarkerId)) + roomDetailViewModel.handle(RoomDetailAction.SetReadMarkerAction(nextReadMarkerId)) } } // AutocompleteUserPresenter.Callback override fun onQueryUsers(query: CharSequence?) { - textComposerViewModel.handle(TextComposerActions.QueryUsers(query)) + textComposerViewModel.handle(TextComposerAction.QueryUsers(query)) } private fun handleActions(action: EventSharedAction) { @@ -1053,7 +1053,7 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(msg, Snackbar.LENGTH_SHORT) } is EventSharedAction.Delete -> { - roomDetailViewModel.handle(RoomDetailActions.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) + roomDetailViewModel.handle(RoomDetailAction.RedactAction(action.eventId, context?.getString(R.string.event_redacted_by_user_reason))) } is EventSharedAction.Share -> { // TODO current data communication is too limited @@ -1110,16 +1110,16 @@ class RoomDetailFragment @Inject constructor( } is EventSharedAction.QuickReact -> { // eventId,ClickedOn,Add - roomDetailViewModel.handle(RoomDetailActions.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) + roomDetailViewModel.handle(RoomDetailAction.UpdateQuickReactAction(action.eventId, action.clickedOn, action.add)) } is EventSharedAction.Edit -> { - roomDetailViewModel.handle(RoomDetailActions.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.EnterEditMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.Quote -> { - roomDetailViewModel.handle(RoomDetailActions.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.EnterQuoteMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.Reply -> { - roomDetailViewModel.handle(RoomDetailActions.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) + roomDetailViewModel.handle(RoomDetailAction.EnterReplyMode(action.eventId, composerLayout.composerEditText.text.toString())) } is EventSharedAction.CopyPermalink -> { val permalink = PermalinkFactory.createPermalink(roomDetailArgs.roomId, action.eventId) @@ -1127,17 +1127,17 @@ class RoomDetailFragment @Inject constructor( showSnackWithMessage(requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) } is EventSharedAction.Resend -> { - roomDetailViewModel.handle(RoomDetailActions.ResendMessage(action.eventId)) + roomDetailViewModel.handle(RoomDetailAction.ResendMessage(action.eventId)) } is EventSharedAction.Remove -> { - roomDetailViewModel.handle(RoomDetailActions.RemoveFailedEcho(action.eventId)) + roomDetailViewModel.handle(RoomDetailAction.RemoveFailedEcho(action.eventId)) } is EventSharedAction.ReportContentSpam -> { - roomDetailViewModel.handle(RoomDetailActions.ReportContent( + roomDetailViewModel.handle(RoomDetailAction.ReportContent( action.eventId, action.senderId, "This message is spam", spam = true)) } is EventSharedAction.ReportContentInappropriate -> { - roomDetailViewModel.handle(RoomDetailActions.ReportContent( + roomDetailViewModel.handle(RoomDetailAction.ReportContent( action.eventId, action.senderId, "This message is inappropriate", inappropriate = true)) } is EventSharedAction.ReportContentCustom -> { @@ -1210,22 +1210,22 @@ class RoomDetailFragment @Inject constructor( override fun onAcceptInvite() { notificationDrawerManager.clearMemberShipNotificationForRoom(roomDetailArgs.roomId) - roomDetailViewModel.handle(RoomDetailActions.AcceptInvite) + roomDetailViewModel.handle(RoomDetailAction.AcceptInvite) } override fun onRejectInvite() { notificationDrawerManager.clearMemberShipNotificationForRoom(roomDetailArgs.roomId) - roomDetailViewModel.handle(RoomDetailActions.RejectInvite) + roomDetailViewModel.handle(RoomDetailAction.RejectInvite) } // JumpToReadMarkerView.Callback override fun onJumpToReadMarkerClicked(readMarkerId: String) { - roomDetailViewModel.handle(RoomDetailActions.NavigateToEvent(readMarkerId, false)) + roomDetailViewModel.handle(RoomDetailAction.NavigateToEvent(readMarkerId, false)) } override fun onClearReadMarkerClicked() { - roomDetailViewModel.handle(RoomDetailActions.MarkAllAsRead) + roomDetailViewModel.handle(RoomDetailAction.MarkAllAsRead) } // AttachmentTypeSelectorView.Callback @@ -1252,7 +1252,7 @@ class RoomDetailFragment @Inject constructor( // AttachmentsHelper.Callback override fun onContentAttachmentsReady(attachments: List) { - roomDetailViewModel.handle(RoomDetailActions.SendMedia(attachments)) + roomDetailViewModel.handle(RoomDetailAction.SendMedia(attachments)) } override fun onAttachmentsProcessFailed() { @@ -1262,6 +1262,6 @@ class RoomDetailFragment @Inject constructor( override fun onContactAttachmentReady(contactAttachment: ContactAttachment) { super.onContactAttachmentReady(contactAttachment) val formattedContact = contactAttachment.toHumanReadable() - roomDetailViewModel.handle(RoomDetailActions.SendMessage(formattedContact, false)) + roomDetailViewModel.handle(RoomDetailAction.SendMessage(formattedContact, false)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt index c3b3edde65..dec77aa1c1 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt @@ -69,12 +69,12 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro private val vectorPreferences: VectorPreferences, private val stringProvider: StringProvider, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val room = session.getRoom(initialState.roomId)!! private val eventId = initialState.eventId - private val invisibleEventsObservable = BehaviorRelay.create() - private val visibleEventsObservable = BehaviorRelay.create() + private val invisibleEventsObservable = BehaviorRelay.create() + private val visibleEventsObservable = BehaviorRelay.create() private val timelineSettings = if (userPreferencesProvider.shouldShowHiddenEvents()) { TimelineSettings(30, filterEdits = false, @@ -92,12 +92,12 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro private var timeline = room.createTimeline(eventId, timelineSettings) // Can be used for several actions, for a one shot result - private val _requestLiveData = MutableLiveData>>() - val requestLiveData: LiveData>> + private val _requestLiveData = MutableLiveData>>() + val requestLiveData: LiveData>> get() = _requestLiveData // Slot to keep a pending action during permission request - var pendingAction: RoomDetailActions? = null + var pendingAction: RoomDetailAction? = null // Slot to keep a pending uri during permission request var pendingUri: Uri? = null @@ -129,46 +129,46 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro setState { copy(timeline = this@RoomDetailViewModel.timeline) } } - override fun handle(action: RoomDetailActions) { + override fun handle(action: RoomDetailAction) { when (action) { - is RoomDetailActions.SaveDraft -> handleSaveDraft(action) - is RoomDetailActions.SendMessage -> handleSendMessage(action) - is RoomDetailActions.SendMedia -> handleSendMedia(action) - is RoomDetailActions.TimelineEventTurnsVisible -> handleEventVisible(action) - is RoomDetailActions.TimelineEventTurnsInvisible -> handleEventInvisible(action) - is RoomDetailActions.LoadMoreTimelineEvents -> handleLoadMore(action) - is RoomDetailActions.SendReaction -> handleSendReaction(action) - is RoomDetailActions.AcceptInvite -> handleAcceptInvite() - is RoomDetailActions.RejectInvite -> handleRejectInvite() - is RoomDetailActions.RedactAction -> handleRedactEvent(action) - is RoomDetailActions.UndoReaction -> handleUndoReact(action) - is RoomDetailActions.UpdateQuickReactAction -> handleUpdateQuickReaction(action) - is RoomDetailActions.ExitSpecialMode -> handleExitSpecialMode(action) - is RoomDetailActions.EnterEditMode -> handleEditAction(action) - is RoomDetailActions.EnterQuoteMode -> handleQuoteAction(action) - is RoomDetailActions.EnterReplyMode -> handleReplyAction(action) - is RoomDetailActions.DownloadFile -> handleDownloadFile(action) - is RoomDetailActions.NavigateToEvent -> handleNavigateToEvent(action) - is RoomDetailActions.HandleTombstoneEvent -> handleTombstoneEvent(action) - is RoomDetailActions.ResendMessage -> handleResendEvent(action) - is RoomDetailActions.RemoveFailedEcho -> handleRemove(action) - is RoomDetailActions.ClearSendQueue -> handleClearSendQueue() - is RoomDetailActions.ResendAll -> handleResendAll() - is RoomDetailActions.SetReadMarkerAction -> handleSetReadMarkerAction(action) - is RoomDetailActions.MarkAllAsRead -> handleMarkAllAsRead() - is RoomDetailActions.ReportContent -> handleReportContent(action) - is RoomDetailActions.IgnoreUser -> handleIgnoreUser(action) + is RoomDetailAction.SaveDraft -> handleSaveDraft(action) + is RoomDetailAction.SendMessage -> handleSendMessage(action) + is RoomDetailAction.SendMedia -> handleSendMedia(action) + is RoomDetailAction.TimelineEventTurnsVisible -> handleEventVisible(action) + is RoomDetailAction.TimelineEventTurnsInvisible -> handleEventInvisible(action) + is RoomDetailAction.LoadMoreTimelineEvents -> handleLoadMore(action) + is RoomDetailAction.SendReaction -> handleSendReaction(action) + is RoomDetailAction.AcceptInvite -> handleAcceptInvite() + is RoomDetailAction.RejectInvite -> handleRejectInvite() + is RoomDetailAction.RedactAction -> handleRedactEvent(action) + is RoomDetailAction.UndoReaction -> handleUndoReact(action) + is RoomDetailAction.UpdateQuickReactAction -> handleUpdateQuickReaction(action) + is RoomDetailAction.ExitSpecialMode -> handleExitSpecialMode(action) + is RoomDetailAction.EnterEditMode -> handleEditAction(action) + is RoomDetailAction.EnterQuoteMode -> handleQuoteAction(action) + is RoomDetailAction.EnterReplyMode -> handleReplyAction(action) + is RoomDetailAction.DownloadFile -> handleDownloadFile(action) + is RoomDetailAction.NavigateToEvent -> handleNavigateToEvent(action) + is RoomDetailAction.HandleTombstoneEvent -> handleTombstoneEvent(action) + is RoomDetailAction.ResendMessage -> handleResendEvent(action) + is RoomDetailAction.RemoveFailedEcho -> handleRemove(action) + is RoomDetailAction.ClearSendQueue -> handleClearSendQueue() + is RoomDetailAction.ResendAll -> handleResendAll() + is RoomDetailAction.SetReadMarkerAction -> handleSetReadMarkerAction(action) + is RoomDetailAction.MarkAllAsRead -> handleMarkAllAsRead() + is RoomDetailAction.ReportContent -> handleReportContent(action) + is RoomDetailAction.IgnoreUser -> handleIgnoreUser(action) } } - private fun handleEventInvisible(action: RoomDetailActions.TimelineEventTurnsInvisible) { + private fun handleEventInvisible(action: RoomDetailAction.TimelineEventTurnsInvisible) { invisibleEventsObservable.accept(action) } /** * Convert a send mode to a draft and save the draft */ - private fun handleSaveDraft(action: RoomDetailActions.SaveDraft) { + private fun handleSaveDraft(action: RoomDetailAction.SaveDraft) { withState { when (it.sendMode) { is SendMode.REGULAR -> room.saveDraft(UserDraft.REGULAR(action.draft)) @@ -211,7 +211,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro .disposeOnClear() } - private fun handleTombstoneEvent(action: RoomDetailActions.HandleTombstoneEvent) { + private fun handleTombstoneEvent(action: RoomDetailAction.HandleTombstoneEvent) { val tombstoneContent = action.event.getClearContent().toModel() ?: return @@ -267,7 +267,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro // PRIVATE METHODS ***************************************************************************** - private fun handleSendMessage(action: RoomDetailActions.SendMessage) { + private fun handleSendMessage(action: RoomDetailAction.SendMessage) { withState { state -> when (state.sendMode) { is SendMode.REGULAR -> { @@ -458,20 +458,20 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro }) } - private fun handleSendReaction(action: RoomDetailActions.SendReaction) { + private fun handleSendReaction(action: RoomDetailAction.SendReaction) { room.sendReaction(action.targetEventId, action.reaction) } - private fun handleRedactEvent(action: RoomDetailActions.RedactAction) { + private fun handleRedactEvent(action: RoomDetailAction.RedactAction) { val event = room.getTimeLineEvent(action.targetEventId) ?: return room.redactEvent(event.root, action.reason) } - private fun handleUndoReact(action: RoomDetailActions.UndoReaction) { + private fun handleUndoReact(action: RoomDetailAction.UndoReaction) { room.undoReaction(action.targetEventId, action.reaction) } - private fun handleUpdateQuickReaction(action: RoomDetailActions.UpdateQuickReactAction) { + private fun handleUpdateQuickReaction(action: RoomDetailAction.UpdateQuickReactAction) { if (action.add) { room.sendReaction(action.targetEventId, action.selectedReaction) } else { @@ -479,7 +479,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleSendMedia(action: RoomDetailActions.SendMedia) { + private fun handleSendMedia(action: RoomDetailAction.SendMedia) { val attachments = action.attachments val homeServerCapabilities = session.getHomeServerCapabilities() val maxUploadFileSize = homeServerCapabilities.maxUploadFileSize @@ -496,19 +496,19 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleEventVisible(action: RoomDetailActions.TimelineEventTurnsVisible) { + private fun handleEventVisible(action: RoomDetailAction.TimelineEventTurnsVisible) { if (action.event.root.sendState.isSent()) { // ignore pending/local events visibleEventsObservable.accept(action) } // We need to update this with the related m.replace also (to move read receipt) action.event.annotations?.editSummary?.sourceEvents?.forEach { room.getTimeLineEvent(it)?.let { event -> - visibleEventsObservable.accept(RoomDetailActions.TimelineEventTurnsVisible(event)) + visibleEventsObservable.accept(RoomDetailAction.TimelineEventTurnsVisible(event)) } } } - private fun handleLoadMore(action: RoomDetailActions.LoadMoreTimelineEvents) { + private fun handleLoadMore(action: RoomDetailAction.LoadMoreTimelineEvents) { timeline.paginate(action.direction, PAGINATION_COUNT) } @@ -520,7 +520,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro room.join(callback = object : MatrixCallback {}) } - private fun handleEditAction(action: RoomDetailActions.EnterEditMode) { + private fun handleEditAction(action: RoomDetailAction.EnterEditMode) { saveCurrentDraft(action.draft) room.getTimeLineEvent(action.eventId)?.let { timelineEvent -> @@ -530,7 +530,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleQuoteAction(action: RoomDetailActions.EnterQuoteMode) { + private fun handleQuoteAction(action: RoomDetailAction.EnterQuoteMode) { saveCurrentDraft(action.draft) room.getTimeLineEvent(action.eventId)?.let { timelineEvent -> @@ -547,7 +547,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleReplyAction(action: RoomDetailActions.EnterReplyMode) { + private fun handleReplyAction(action: RoomDetailAction.EnterReplyMode) { saveCurrentDraft(action.draft) room.getTimeLineEvent(action.eventId)?.let { timelineEvent -> @@ -578,7 +578,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleExitSpecialMode(action: RoomDetailActions.ExitSpecialMode) { + private fun handleExitSpecialMode(action: RoomDetailAction.ExitSpecialMode) { withState { state -> // For edit, just delete the current draft if (state.sendMode is SendMode.EDIT) { @@ -590,7 +590,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleDownloadFile(action: RoomDetailActions.DownloadFile) { + private fun handleDownloadFile(action: RoomDetailAction.DownloadFile) { session.downloadFile( FileService.DownloadMode.TO_EXPORT, action.eventId, @@ -616,7 +616,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro }) } - private fun handleNavigateToEvent(action: RoomDetailActions.NavigateToEvent) { + private fun handleNavigateToEvent(action: RoomDetailAction.NavigateToEvent) { val targetEventId: String = action.eventId val correctedEventId = timeline.getFirstDisplayableEventId(targetEventId) ?: targetEventId val indexOfEvent = timeline.getIndexOfEvent(correctedEventId) @@ -630,7 +630,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro _navigateToEvent.postLiveEvent(correctedEventId) } - private fun handleResendEvent(action: RoomDetailActions.ResendMessage) { + private fun handleResendEvent(action: RoomDetailAction.ResendMessage) { val targetEventId = action.eventId room.getTimeLineEvent(targetEventId)?.let { // State must be UNDELIVERED or Failed @@ -648,7 +648,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro } } - private fun handleRemove(action: RoomDetailActions.RemoveFailedEcho) { + private fun handleRemove(action: RoomDetailAction.RemoveFailedEcho) { val targetEventId = action.eventId room.getTimeLineEvent(targetEventId)?.let { // State must be UNDELIVERED or Failed @@ -683,7 +683,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro .disposeOnClear() } - private fun handleSetReadMarkerAction(action: RoomDetailActions.SetReadMarkerAction) = withState { + private fun handleSetReadMarkerAction(action: RoomDetailAction.SetReadMarkerAction) = withState { var readMarkerId = action.eventId val indexOfEvent = timeline.getIndexOfEvent(readMarkerId) // force to set the read marker on the next event @@ -699,7 +699,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro room.markAllAsRead(object : MatrixCallback {}) } - private fun handleReportContent(action: RoomDetailActions.ReportContent) { + private fun handleReportContent(action: RoomDetailAction.ReportContent) { room.reportContent(action.eventId, -100, action.reason, object : MatrixCallback { override fun onSuccess(data: Unit) { _requestLiveData.postValue(LiveEvent(Success(action))) @@ -711,7 +711,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro }) } - private fun handleIgnoreUser(action: RoomDetailActions.IgnoreUser) { + private fun handleIgnoreUser(action: RoomDetailAction.IgnoreUser) { if (action.userId.isNullOrEmpty()) { return } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerAction.kt similarity index 91% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerAction.kt index 1e5fccfe49..5d60fa1cef 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerAction.kt @@ -18,6 +18,6 @@ package im.vector.riotx.features.home.room.detail.composer import im.vector.riotx.core.platform.VectorViewModelAction -sealed class TextComposerActions : VectorViewModelAction { - data class QueryUsers(val query: CharSequence?) : TextComposerActions() +sealed class TextComposerAction : VectorViewModelAction { + data class QueryUsers(val query: CharSequence?) : TextComposerAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt index 5915ffa9db..88548e12b4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerViewModel.kt @@ -36,7 +36,7 @@ typealias AutocompleteUserQuery = CharSequence class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: TextComposerViewState, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val room = session.getRoom(initialState.roomId)!! private val roomId = initialState.roomId @@ -61,13 +61,13 @@ class TextComposerViewModel @AssistedInject constructor(@Assisted initialState: observeUsersQuery() } - override fun handle(action: TextComposerActions) { + override fun handle(action: TextComposerAction) { when (action) { - is TextComposerActions.QueryUsers -> handleQueryUsers(action) + is TextComposerAction.QueryUsers -> handleQueryUsers(action) } } - private fun handleQueryUsers(action: TextComposerActions.QueryUsers) { + private fun handleQueryUsers(action: TextComposerAction.QueryUsers) { val query = Option.fromNullable(action.query) usersQueryObservable.accept(query) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsAction.kt similarity index 86% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsAction.kt index 02c0eebe69..fe8a10d364 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsAction.kt @@ -18,6 +18,6 @@ package im.vector.riotx.features.home.room.detail.timeline.action import im.vector.riotx.core.platform.VectorViewModelAction -sealed class MessageActionsActions : VectorViewModelAction { - object ToggleReportMenu : MessageActionsActions() +sealed class MessageActionsAction : VectorViewModelAction { + object ToggleReportMenu : MessageActionsAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index 84c8ed6886..1a8f31bb50 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -72,7 +72,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun didSelectMenuAction(eventAction: EventSharedAction) { if (eventAction is EventSharedAction.ReportContent) { // Toggle report menu - viewModel.handle(MessageActionsActions.ToggleReportMenu) + viewModel.handle(MessageActionsAction.ToggleReportMenu) } else { messageActionsStore.post(eventAction) dismiss() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 83045ce9bb..575f835bb4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -85,7 +85,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted private val session: Session, private val noticeEventFormatter: NoticeEventFormatter, private val stringProvider: StringProvider -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val eventId = initialState.eventId private val informationData = initialState.informationData @@ -112,9 +112,9 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted observeEventAction() } - override fun handle(action: MessageActionsActions) { + override fun handle(action: MessageActionsAction) { when (action) { - MessageActionsActions.ToggleReportMenu -> toggleReportMenu() + MessageActionsAction.ToggleReportMenu -> toggleReportMenu() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListAction.kt similarity index 76% rename from vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListAction.kt index 25308dc3f9..9db7374169 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListAction.kt @@ -20,13 +20,13 @@ import im.vector.matrix.android.api.session.room.model.RoomSummary import im.vector.matrix.android.api.session.room.notification.RoomNotificationState import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomListActions : VectorViewModelAction { - data class SelectRoom(val roomSummary: RoomSummary) : RoomListActions() - data class ToggleCategory(val category: RoomCategory) : RoomListActions() - data class AcceptInvitation(val roomSummary: RoomSummary) : RoomListActions() - data class RejectInvitation(val roomSummary: RoomSummary) : RoomListActions() - data class FilterWith(val filter: String) : RoomListActions() - data class ChangeRoomNotificationState(val roomId: String, val notificationState: RoomNotificationState) : RoomListActions() - data class LeaveRoom(val roomId: String) : RoomListActions() - object MarkAllRoomsRead : RoomListActions() +sealed class RoomListAction : VectorViewModelAction { + data class SelectRoom(val roomSummary: RoomSummary) : RoomListAction() + data class ToggleCategory(val category: RoomCategory) : RoomListAction() + data class AcceptInvitation(val roomSummary: RoomSummary) : RoomListAction() + data class RejectInvitation(val roomSummary: RoomSummary) : RoomListAction() + data class FilterWith(val filter: String) : RoomListAction() + data class ChangeRoomNotificationState(val roomId: String, val notificationState: RoomNotificationState) : RoomListAction() + data class LeaveRoom(val roomId: String) : RoomListAction() + object MarkAllRoomsRead : RoomListAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index f177847448..47ef255fa8 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -85,7 +85,7 @@ class RoomListFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_home_mark_all_as_read -> { - roomListViewModel.handle(RoomListActions.MarkAllRoomsRead) + roomListViewModel.handle(RoomListAction.MarkAllRoomsRead) return true } } @@ -183,7 +183,7 @@ class RoomListFragment @Inject constructor( // Scroll the list to top roomListEpoxyRecyclerView.scrollToPosition(0) - roomListViewModel.handle(RoomListActions.FilterWith(filter)) + roomListViewModel.handle(RoomListAction.FilterWith(filter)) } override fun openRoomDirectory(initialFilter: String) { @@ -219,16 +219,16 @@ class RoomListFragment @Inject constructor( private fun handleQuickActions(quickAction: RoomListQuickActionsSharedAction) { when (quickAction) { is RoomListQuickActionsSharedAction.NotificationsAllNoisy -> { - roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) + roomListViewModel.handle(RoomListAction.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES_NOISY)) } is RoomListQuickActionsSharedAction.NotificationsAll -> { - roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) + roomListViewModel.handle(RoomListAction.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.ALL_MESSAGES)) } is RoomListQuickActionsSharedAction.NotificationsMentionsOnly -> { - roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) + roomListViewModel.handle(RoomListAction.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MENTIONS_ONLY)) } is RoomListQuickActionsSharedAction.NotificationsMute -> { - roomListViewModel.handle(RoomListActions.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) + roomListViewModel.handle(RoomListAction.ChangeRoomNotificationState(quickAction.roomId, RoomNotificationState.MUTE)) } is RoomListQuickActionsSharedAction.Settings -> { vectorBaseActivity.notImplemented("Opening room settings") @@ -238,7 +238,7 @@ class RoomListFragment @Inject constructor( .setTitle(R.string.room_participants_leave_prompt_title) .setMessage(R.string.room_participants_leave_prompt_msg) .setPositiveButton(R.string.leave) { _, _ -> - roomListViewModel.handle(RoomListActions.LeaveRoom(quickAction.roomId)) + roomListViewModel.handle(RoomListAction.LeaveRoom(quickAction.roomId)) } .setNegativeButton(R.string.cancel, null) .show() @@ -342,7 +342,7 @@ class RoomListFragment @Inject constructor( // RoomSummaryController.Callback ************************************************************** override fun onRoomClicked(room: RoomSummary) { - roomListViewModel.handle(RoomListActions.SelectRoom(room)) + roomListViewModel.handle(RoomListAction.SelectRoom(room)) } override fun onRoomLongClicked(room: RoomSummary): Boolean { @@ -354,16 +354,16 @@ class RoomListFragment @Inject constructor( override fun onAcceptRoomInvitation(room: RoomSummary) { notificationDrawerManager.clearMemberShipNotificationForRoom(room.roomId) - roomListViewModel.handle(RoomListActions.AcceptInvitation(room)) + roomListViewModel.handle(RoomListAction.AcceptInvitation(room)) } override fun onRejectRoomInvitation(room: RoomSummary) { notificationDrawerManager.clearMemberShipNotificationForRoom(room.roomId) - roomListViewModel.handle(RoomListActions.RejectInvitation(room)) + roomListViewModel.handle(RoomListAction.RejectInvitation(room)) } override fun onToggleRoomCategory(roomCategory: RoomCategory) { - roomListViewModel.handle(RoomListActions.ToggleCategory(roomCategory)) + roomListViewModel.handle(RoomListAction.ToggleCategory(roomCategory)) } override fun createRoom(initialName: String) { diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt index 8094f42afb..6fd5d9763c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListViewModel.kt @@ -36,7 +36,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, private val roomSummariesSource: DataSource>, private val alphabeticalRoomComparator: AlphabeticalRoomComparator, private val chronologicalRoomComparator: ChronologicalRoomComparator) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { interface Factory { fun create(initialState: RoomListViewState): RoomListViewModel @@ -61,30 +61,30 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, observeRoomSummaries() } - override fun handle(action: RoomListActions) { + override fun handle(action: RoomListAction) { when (action) { - is RoomListActions.SelectRoom -> handleSelectRoom(action) - is RoomListActions.ToggleCategory -> handleToggleCategory(action) - is RoomListActions.AcceptInvitation -> handleAcceptInvitation(action) - is RoomListActions.RejectInvitation -> handleRejectInvitation(action) - is RoomListActions.FilterWith -> handleFilter(action) - is RoomListActions.MarkAllRoomsRead -> handleMarkAllRoomsRead() - is RoomListActions.LeaveRoom -> handleLeaveRoom(action) - is RoomListActions.ChangeRoomNotificationState -> handleChangeNotificationMode(action) + is RoomListAction.SelectRoom -> handleSelectRoom(action) + is RoomListAction.ToggleCategory -> handleToggleCategory(action) + is RoomListAction.AcceptInvitation -> handleAcceptInvitation(action) + is RoomListAction.RejectInvitation -> handleRejectInvitation(action) + is RoomListAction.FilterWith -> handleFilter(action) + is RoomListAction.MarkAllRoomsRead -> handleMarkAllRoomsRead() + is RoomListAction.LeaveRoom -> handleLeaveRoom(action) + is RoomListAction.ChangeRoomNotificationState -> handleChangeNotificationMode(action) } } // PRIVATE METHODS ***************************************************************************** - private fun handleSelectRoom(action: RoomListActions.SelectRoom) { + private fun handleSelectRoom(action: RoomListAction.SelectRoom) { _viewEvents.post(RoomListViewEvents.SelectRoom(action.roomSummary.roomId)) } - private fun handleToggleCategory(action: RoomListActions.ToggleCategory) = setState { + private fun handleToggleCategory(action: RoomListAction.ToggleCategory) = setState { this.toggle(action.category) } - private fun handleFilter(action: RoomListActions.FilterWith) { + private fun handleFilter(action: RoomListAction.FilterWith) { setState { copy( roomFilter = action.filter @@ -112,7 +112,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, } } - private fun handleAcceptInvitation(action: RoomListActions.AcceptInvitation) = withState { state -> + private fun handleAcceptInvitation(action: RoomListAction.AcceptInvitation) = withState { state -> val roomId = action.roomSummary.roomId if (state.joiningRoomsIds.contains(roomId) || state.rejectingRoomsIds.contains(roomId)) { @@ -147,7 +147,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, }) } - private fun handleRejectInvitation(action: RoomListActions.RejectInvitation) = withState { state -> + private fun handleRejectInvitation(action: RoomListAction.RejectInvitation) = withState { state -> val roomId = action.roomSummary.roomId if (state.joiningRoomsIds.contains(roomId) || state.rejectingRoomsIds.contains(roomId)) { @@ -193,7 +193,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, ?.let { session.markAllAsRead(it, object : MatrixCallback {}) } } - private fun handleChangeNotificationMode(action: RoomListActions.ChangeRoomNotificationState) { + private fun handleChangeNotificationMode(action: RoomListAction.ChangeRoomNotificationState) { session.getRoom(action.roomId)?.setRoomNotificationState(action.notificationState, object : MatrixCallback { override fun onFailure(failure: Throwable) { _viewEvents.post(RoomListViewEvents.Failure(failure)) @@ -201,7 +201,7 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, }) } - private fun handleLeaveRoom(action: RoomListActions.LeaveRoom) { + private fun handleLeaveRoom(action: RoomListAction.LeaveRoom) { session.getRoom(action.roomId)?.leave(object : MatrixCallback { override fun onFailure(failure: Throwable) { _viewEvents.post(RoomListViewEvents.Failure(failure)) diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginAction.kt similarity index 90% rename from vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt rename to vector/src/main/java/im/vector/riotx/features/login/LoginAction.kt index 628c75e483..bb42bc8e0c 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginAction.kt @@ -19,10 +19,10 @@ package im.vector.riotx.features.login import im.vector.matrix.android.api.auth.data.Credentials import im.vector.riotx.core.platform.VectorViewModelAction -sealed class LoginActions : VectorViewModelAction { - data class UpdateHomeServer(val homeServerUrl: String) : LoginActions() - data class Login(val login: String, val password: String) : LoginActions() - data class SsoLoginSuccess(val credentials: Credentials) : LoginActions() - data class NavigateTo(val target: LoginActivity.Navigation) : LoginActions() - data class InitWith(val loginConfig: LoginConfig) : LoginActions() +sealed class LoginAction : VectorViewModelAction { + data class UpdateHomeServer(val homeServerUrl: String) : LoginAction() + data class Login(val login: String, val password: String) : LoginAction() + data class SsoLoginSuccess(val credentials: Credentials) : LoginAction() + data class NavigateTo(val target: LoginActivity.Navigation) : LoginAction() + data class InitWith(val loginConfig: LoginConfig) : LoginAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginActivity.kt index 86156bc4d4..abed22cb5e 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginActivity.kt @@ -57,7 +57,7 @@ class LoginActivity : VectorBaseActivity() { // Get config extra val loginConfig = intent.getParcelableExtra(EXTRA_CONFIG) if (loginConfig != null && isFirstCreation()) { - loginViewModel.handle(LoginActions.InitWith(loginConfig)) + loginViewModel.handle(LoginAction.InitWith(loginConfig)) } loginViewModel.navigationLiveData.observeEvent(this) { diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginFragment.kt index 7da8a79ac8..f8295310f9 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginFragment.kt @@ -59,14 +59,14 @@ class LoginFragment @Inject constructor() : VectorBaseFragment() { homeServerField.focusChanges() .subscribe { if (!it) { - viewModel.handle(LoginActions.UpdateHomeServer(homeServerField.text.toString())) + viewModel.handle(LoginAction.UpdateHomeServer(homeServerField.text.toString())) } } .disposeOnDestroy() homeServerField.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { - viewModel.handle(LoginActions.UpdateHomeServer(homeServerField.text.toString())) + viewModel.handle(LoginAction.UpdateHomeServer(homeServerField.text.toString())) return@setOnEditorActionListener true } return@setOnEditorActionListener false @@ -78,7 +78,7 @@ class LoginFragment @Inject constructor() : VectorBaseFragment() { } else { homeServerField.setText(ServerUrlsRepository.getDefaultHomeServerUrl(requireContext())) } - viewModel.handle(LoginActions.UpdateHomeServer(homeServerField.text.toString())) + viewModel.handle(LoginAction.UpdateHomeServer(homeServerField.text.toString())) } private fun setupNotice() { @@ -93,7 +93,7 @@ class LoginFragment @Inject constructor() : VectorBaseFragment() { val login = loginField.text?.trim().toString() val password = passwordField.text?.trim().toString() - viewModel.handle(LoginActions.Login(login, password)) + viewModel.handle(LoginAction.Login(login, password)) } private fun setupAuthButton() { @@ -114,7 +114,7 @@ class LoginFragment @Inject constructor() : VectorBaseFragment() { } private fun openSso() { - viewModel.handle(LoginActions.NavigateTo(LoginActivity.Navigation.OpenSsoLoginFallback)) + viewModel.handle(LoginAction.NavigateTo(LoginActivity.Navigation.OpenSsoLoginFallback)) } private fun setupPasswordReveal() { diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginSsoFallbackFragment.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginSsoFallbackFragment.kt index 9e0cd611d1..38deccccaf 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginSsoFallbackFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginSsoFallbackFragment.kt @@ -143,7 +143,7 @@ class LoginSsoFallbackFragment @Inject constructor() : VectorBaseFragment(), OnB super.onReceivedError(view, errorCode, description, failingUrl) // on error case, close this fragment - viewModel.handle(LoginActions.NavigateTo(LoginActivity.Navigation.GoBack)) + viewModel.handle(LoginAction.NavigateTo(LoginActivity.Navigation.GoBack)) } override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { @@ -253,7 +253,7 @@ class LoginSsoFallbackFragment @Inject constructor() : VectorBaseFragment(), OnB refreshToken = null ) - viewModel.handle(LoginActions.SsoLoginSuccess(safeCredentials)) + viewModel.handle(LoginAction.SsoLoginSuccess(safeCredentials)) } } } catch (e: Exception) { @@ -278,7 +278,7 @@ class LoginSsoFallbackFragment @Inject constructor() : VectorBaseFragment(), OnB refreshToken = null ) - viewModel.handle(LoginActions.SsoLoginSuccess(credentials)) + viewModel.handle(LoginAction.SsoLoginSuccess(credentials)) } } } diff --git a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt index 5890e71b32..5a9c682f61 100644 --- a/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/login/LoginViewModel.kt @@ -42,7 +42,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi private val activeSessionHolder: ActiveSessionHolder, private val pushRuleTriggerListener: PushRuleTriggerListener, private val sessionListener: SessionListener) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -67,21 +67,21 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi private var homeServerConnectionConfig: HomeServerConnectionConfig? = null private var currentTask: Cancelable? = null - override fun handle(action: LoginActions) { + override fun handle(action: LoginAction) { when (action) { - is LoginActions.InitWith -> handleInitWith(action) - is LoginActions.UpdateHomeServer -> handleUpdateHomeserver(action) - is LoginActions.Login -> handleLogin(action) - is LoginActions.SsoLoginSuccess -> handleSsoLoginSuccess(action) - is LoginActions.NavigateTo -> handleNavigation(action) + is LoginAction.InitWith -> handleInitWith(action) + is LoginAction.UpdateHomeServer -> handleUpdateHomeserver(action) + is LoginAction.Login -> handleLogin(action) + is LoginAction.SsoLoginSuccess -> handleSsoLoginSuccess(action) + is LoginAction.NavigateTo -> handleNavigation(action) } } - private fun handleInitWith(action: LoginActions.InitWith) { + private fun handleInitWith(action: LoginAction.InitWith) { loginConfig = action.loginConfig } - private fun handleLogin(action: LoginActions.Login) { + private fun handleLogin(action: LoginAction.Login) { val homeServerConnectionConfigFinal = homeServerConnectionConfig if (homeServerConnectionConfigFinal == null) { @@ -124,7 +124,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } } - private fun handleSsoLoginSuccess(action: LoginActions.SsoLoginSuccess) { + private fun handleSsoLoginSuccess(action: LoginAction.SsoLoginSuccess) { val homeServerConnectionConfigFinal = homeServerConnectionConfig if (homeServerConnectionConfigFinal == null) { @@ -137,7 +137,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } } - private fun handleUpdateHomeserver(action: LoginActions.UpdateHomeServer) = withState { state -> + private fun handleUpdateHomeserver(action: LoginAction.UpdateHomeServer) = withState { state -> var newConfig: HomeServerConnectionConfig? = null Try { @@ -197,7 +197,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi } } - private fun handleNavigation(action: LoginActions.NavigateTo) { + private fun handleNavigation(action: LoginAction.NavigateTo) { _navigationLiveData.postValue(LiveEvent(action.target)) } diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt index 83d3077708..8b739ce794 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt @@ -201,7 +201,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), tabLayout.isVisible = false emojiPickerWholeListFragmentContainer.isVisible = false emojiPickerFilteredListFragmentContainer.isVisible = true - searchResultViewModel.handle(EmojiSearchActions.UpdateQuery(query)) + searchResultViewModel.handle(EmojiSearchAction.UpdateQuery(query)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchAction.kt similarity index 91% rename from vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt rename to vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchAction.kt index 43fe45f2e3..badc6ea1e4 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchAction.kt @@ -18,6 +18,6 @@ package im.vector.riotx.features.reactions import im.vector.riotx.core.platform.VectorViewModelAction -sealed class EmojiSearchActions : VectorViewModelAction { - data class UpdateQuery(val queryString: String) : EmojiSearchActions() +sealed class EmojiSearchAction : VectorViewModelAction { + data class UpdateQuery(val queryString: String) : EmojiSearchAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt index d89d1fa22e..8225fa7bd6 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt @@ -26,15 +26,15 @@ data class EmojiSearchResultViewState( ) : MvRxState class EmojiSearchResultViewModel(val dataSource: EmojiDataSource, initialState: EmojiSearchResultViewState) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { - override fun handle(action: EmojiSearchActions) { + override fun handle(action: EmojiSearchAction) { when (action) { - is EmojiSearchActions.UpdateQuery -> updateQuery(action) + is EmojiSearchAction.UpdateQuery -> updateQuery(action) } } - private fun updateQuery(action: EmojiSearchActions.UpdateQuery) { + private fun updateQuery(action: EmojiSearchAction.UpdateQuery) { setState { copy( query = action.queryString, diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index ea46671e12..80ee2ba014 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -66,7 +66,7 @@ class PublicRoomsFragment @Inject constructor( publicRoomsFilter.queryTextChanges() .debounce(500, TimeUnit.MILLISECONDS) .subscribeBy { - viewModel.handle(RoomDirectoryActions.FilterWith(it.toString())) + viewModel.handle(RoomDirectoryAction.FilterWith(it.toString())) } .disposeOnDestroy() @@ -130,11 +130,11 @@ class PublicRoomsFragment @Inject constructor( override fun onPublicRoomJoin(publicRoom: PublicRoom) { Timber.v("PublicRoomJoinClicked: $publicRoom") - viewModel.handle(RoomDirectoryActions.JoinRoom(publicRoom.roomId)) + viewModel.handle(RoomDirectoryAction.JoinRoom(publicRoom.roomId)) } override fun loadMore() { - viewModel.handle(RoomDirectoryActions.LoadMore) + viewModel.handle(RoomDirectoryAction.LoadMore) } private var initialValueSet = false diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt similarity index 86% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt index 0bb6658f2b..8b32726370 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryAction.kt @@ -19,9 +19,9 @@ package im.vector.riotx.features.roomdirectory import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomDirectoryActions : VectorViewModelAction { - data class SetRoomDirectoryData(val roomDirectoryData: RoomDirectoryData) : RoomDirectoryActions() - data class FilterWith(val filter: String) : RoomDirectoryActions() - object LoadMore : RoomDirectoryActions() - data class JoinRoom(val roomId: String) : RoomDirectoryActions() +sealed class RoomDirectoryAction : VectorViewModelAction { + data class SetRoomDirectoryData(val roomDirectoryData: RoomDirectoryData) : RoomDirectoryAction() + data class FilterWith(val filter: String) : RoomDirectoryAction() + object LoadMore : RoomDirectoryAction() + data class JoinRoom(val roomId: String) : RoomDirectoryAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index 574b461b16..7252e7f271 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -26,7 +26,7 @@ import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.extensions.addFragment import im.vector.riotx.core.extensions.addFragmentToBackstack import im.vector.riotx.core.platform.VectorBaseActivity -import im.vector.riotx.features.roomdirectory.createroom.CreateRoomActions +import im.vector.riotx.features.roomdirectory.createroom.CreateRoomAction import im.vector.riotx.features.roomdirectory.createroom.CreateRoomFragment import im.vector.riotx.features.roomdirectory.createroom.CreateRoomViewModel import im.vector.riotx.features.roomdirectory.picker.RoomDirectoryPickerFragment @@ -51,7 +51,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) if (isFirstCreation()) { - roomDirectoryViewModel.handle(RoomDirectoryActions.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) + roomDirectoryViewModel.handle(RoomDirectoryAction.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) } actionViewModel.observe() @@ -67,7 +67,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { roomDirectoryViewModel.selectSubscribe(this, PublicRoomsViewState::currentFilter) { currentFilter -> // Transmit the filter to the createRoomViewModel - createRoomViewModel.handle(CreateRoomActions.SetName(currentFilter)) + createRoomViewModel.handle(CreateRoomAction.SetName(currentFilter)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt index 085d5dfe5f..685e1aa282 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt @@ -40,7 +40,7 @@ private const val PUBLIC_ROOMS_LIMIT = 20 class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: PublicRoomsViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -103,16 +103,16 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: .disposeOnClear() } - override fun handle(action: RoomDirectoryActions) { + override fun handle(action: RoomDirectoryAction) { when (action) { - is RoomDirectoryActions.SetRoomDirectoryData -> setRoomDirectoryData(action) - is RoomDirectoryActions.FilterWith -> filterWith(action) - RoomDirectoryActions.LoadMore -> loadMore() - is RoomDirectoryActions.JoinRoom -> joinRoom(action) + is RoomDirectoryAction.SetRoomDirectoryData -> setRoomDirectoryData(action) + is RoomDirectoryAction.FilterWith -> filterWith(action) + RoomDirectoryAction.LoadMore -> loadMore() + is RoomDirectoryAction.JoinRoom -> joinRoom(action) } } - private fun setRoomDirectoryData(action: RoomDirectoryActions.SetRoomDirectoryData) { + private fun setRoomDirectoryData(action: RoomDirectoryAction.SetRoomDirectoryData) { if (this.roomDirectoryData == action.roomDirectoryData) { return } @@ -123,7 +123,7 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: load("") } - private fun filterWith(action: RoomDirectoryActions.FilterWith) = withState { state -> + private fun filterWith(action: RoomDirectoryAction.FilterWith) = withState { state -> if (state.currentFilter != action.filter) { currentTask?.cancel() @@ -201,7 +201,7 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: }) } - private fun joinRoom(action: RoomDirectoryActions.JoinRoom) = withState { state -> + private fun joinRoom(action: RoomDirectoryAction.JoinRoom) = withState { state -> if (state.joiningRoomsIds.contains(action.roomId)) { // Request already sent, should not happen Timber.w("Try to join an already joining room. Should not happen") diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomAction.kt similarity index 81% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomAction.kt index 7c07143a53..333834ca3c 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomAction.kt @@ -18,9 +18,9 @@ package im.vector.riotx.features.roomdirectory.createroom import im.vector.riotx.core.platform.VectorViewModelAction -sealed class CreateRoomActions : VectorViewModelAction { - data class SetName(val name: String) : CreateRoomActions() - data class SetIsPublic(val isPublic: Boolean) : CreateRoomActions() - data class SetIsInRoomDirectory(val isInRoomDirectory: Boolean) : CreateRoomActions() - object Create : CreateRoomActions() +sealed class CreateRoomAction : VectorViewModelAction { + data class SetName(val name: String) : CreateRoomAction() + data class SetIsPublic(val isPublic: Boolean) : CreateRoomAction() + data class SetIsInRoomDirectory(val isInRoomDirectory: Boolean) : CreateRoomAction() + object Create : CreateRoomAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 1e91a7224f..26c4f233f7 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -49,7 +49,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun initUiAndData() { if (isFirstCreation()) { addFragment(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) - createRoomViewModel.handle(CreateRoomActions.SetName(intent?.getStringExtra(INITIAL_NAME) ?: "")) + createRoomViewModel.handle(CreateRoomAction.SetName(intent?.getStringExtra(INITIAL_NAME) ?: "")) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index 285276ca7d..ee0a03ce7d 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -53,7 +53,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_create_room -> { - viewModel.handle(CreateRoomActions.Create) + viewModel.handle(CreateRoomAction.Create) true } else -> @@ -71,20 +71,20 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C } override fun onNameChange(newName: String) { - viewModel.handle(CreateRoomActions.SetName(newName)) + viewModel.handle(CreateRoomAction.SetName(newName)) } override fun setIsPublic(isPublic: Boolean) { - viewModel.handle(CreateRoomActions.SetIsPublic(isPublic)) + viewModel.handle(CreateRoomAction.SetIsPublic(isPublic)) } override fun setIsInRoomDirectory(isInRoomDirectory: Boolean) { - viewModel.handle(CreateRoomActions.SetIsInRoomDirectory(isInRoomDirectory)) + viewModel.handle(CreateRoomAction.SetIsInRoomDirectory(isInRoomDirectory)) } override fun retry() { Timber.v("Retry") - viewModel.handle(CreateRoomActions.Create) + viewModel.handle(CreateRoomAction.Create) } override fun invalidate() = withState(viewModel) { state -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt index 3e794bceac..dcc124b568 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt @@ -30,7 +30,7 @@ import im.vector.riotx.features.roomdirectory.RoomDirectoryActivity class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: CreateRoomViewState, private val session: Session -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -51,20 +51,20 @@ class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: Cr } } - override fun handle(action: CreateRoomActions) { + override fun handle(action: CreateRoomAction) { when (action) { - is CreateRoomActions.SetName -> setName(action) - is CreateRoomActions.SetIsPublic -> setIsPublic(action) - is CreateRoomActions.SetIsInRoomDirectory -> setIsInRoomDirectory(action) - is CreateRoomActions.Create -> doCreateRoom() + is CreateRoomAction.SetName -> setName(action) + is CreateRoomAction.SetIsPublic -> setIsPublic(action) + is CreateRoomAction.SetIsInRoomDirectory -> setIsInRoomDirectory(action) + is CreateRoomAction.Create -> doCreateRoom() } } - private fun setName(action: CreateRoomActions.SetName) = setState { copy(roomName = action.name) } + private fun setName(action: CreateRoomAction.SetName) = setState { copy(roomName = action.name) } - private fun setIsPublic(action: CreateRoomActions.SetIsPublic) = setState { copy(isPublic = action.isPublic) } + private fun setIsPublic(action: CreateRoomAction.SetIsPublic) = setState { copy(isPublic = action.isPublic) } - private fun setIsInRoomDirectory(action: CreateRoomActions.SetIsInRoomDirectory) = setState { copy(isInRoomDirectory = action.isInRoomDirectory) } + private fun setIsInRoomDirectory(action: CreateRoomAction.SetIsInRoomDirectory) = setState { copy(isInRoomDirectory = action.isInRoomDirectory) } private fun doCreateRoom() = withState { state -> if (state.asyncCreateRoomRequest is Loading || state.asyncCreateRoomRequest is Success) { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerAction.kt similarity index 86% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerAction.kt index fe07ce4ac3..157025bb0c 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerAction.kt @@ -18,6 +18,6 @@ package im.vector.riotx.features.roomdirectory.picker import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomDirectoryPickerActions : VectorViewModelAction { - object Retry : RoomDirectoryPickerActions() +sealed class RoomDirectoryPickerAction : VectorViewModelAction { + object Retry : RoomDirectoryPickerAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index f2daacb576..ce4a3b52b0 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -27,7 +27,7 @@ import com.airbnb.mvrx.withState import im.vector.matrix.android.api.session.room.model.thirdparty.RoomDirectoryData import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment -import im.vector.riotx.features.roomdirectory.RoomDirectoryActions +import im.vector.riotx.features.roomdirectory.RoomDirectoryAction import im.vector.riotx.features.roomdirectory.RoomDirectorySharedAction import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import im.vector.riotx.features.roomdirectory.RoomDirectoryViewModel @@ -87,14 +87,14 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onRoomDirectoryClicked(roomDirectoryData: RoomDirectoryData) { Timber.v("onRoomDirectoryClicked: $roomDirectoryData") - viewModel.handle(RoomDirectoryActions.SetRoomDirectoryData(roomDirectoryData)) + viewModel.handle(RoomDirectoryAction.SetRoomDirectoryData(roomDirectoryData)) actionViewModel.post(RoomDirectorySharedAction.Back) } override fun retry() { Timber.v("Retry") - pickerViewModel.handle(RoomDirectoryPickerActions.Retry) + pickerViewModel.handle(RoomDirectoryPickerAction.Retry) } override fun invalidate() = withState(pickerViewModel) { state -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt index 92abdb0b98..b7bdaea495 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerViewModel.kt @@ -26,7 +26,7 @@ import im.vector.riotx.core.platform.VectorViewModel class RoomDirectoryPickerViewModel @AssistedInject constructor(@Assisted initialState: RoomDirectoryPickerViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -62,9 +62,9 @@ class RoomDirectoryPickerViewModel @AssistedInject constructor(@Assisted initial }) } - override fun handle(action: RoomDirectoryPickerActions) { + override fun handle(action: RoomDirectoryPickerAction) { when (action) { - RoomDirectoryPickerActions.Retry -> load() + RoomDirectoryPickerAction.Retry -> load() } } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewAction.kt similarity index 88% rename from vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt rename to vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewAction.kt index ceedaba274..426078fa3d 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewActions.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewAction.kt @@ -18,6 +18,6 @@ package im.vector.riotx.features.roomdirectory.roompreview import im.vector.riotx.core.platform.VectorViewModelAction -sealed class RoomPreviewActions : VectorViewModelAction { - object Join : RoomPreviewActions() +sealed class RoomPreviewAction : VectorViewModelAction { + object Join : RoomPreviewAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt index 7bb2655605..38e74c035a 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -72,7 +72,7 @@ class RoomPreviewNoPreviewFragment @Inject constructor( roomPreviewNoPreviewJoin.callback = object : ButtonStateView.Callback { override fun onButtonClicked() { - roomPreviewViewModel.handle(RoomPreviewActions.Join) + roomPreviewViewModel.handle(RoomPreviewAction.Join) } override fun onRetryClicked() { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt index f1f3bc98ed..9ffb64556f 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/roompreview/RoomPreviewViewModel.kt @@ -31,7 +31,7 @@ import timber.log.Timber class RoomPreviewViewModel @AssistedInject constructor(@Assisted initialState: RoomPreviewViewState, private val session: Session) - : VectorViewModel(initialState) { + : VectorViewModel(initialState) { @AssistedInject.Factory interface Factory { @@ -77,9 +77,9 @@ class RoomPreviewViewModel @AssistedInject constructor(@Assisted initialState: R .disposeOnClear() } - override fun handle(action: RoomPreviewActions) { + override fun handle(action: RoomPreviewAction) { when (action) { - RoomPreviewActions.Join -> joinRoom() + RoomPreviewAction.Join -> joinRoom() } } From 631448335dfa8d4ada43e55a2e5c73feabcd23a5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 15:36:12 +0100 Subject: [PATCH 09/16] Rename stuff for code coherence --- .../java/im/vector/riotx/features/home/HomeActivity.kt | 10 +++++----- .../vector/riotx/features/home/HomeDetailFragment.kt | 6 +++--- .../home/createdirect/CreateDirectRoomActivity.kt | 10 +++++----- .../CreateDirectRoomDirectoryUsersFragment.kt | 8 ++++---- .../createdirect/CreateDirectRoomKnownUsersFragment.kt | 6 +++--- .../riotx/features/home/group/GroupListFragment.kt | 6 +++--- .../features/home/room/detail/RoomDetailFragment.kt | 8 ++++---- .../timeline/action/MessageActionsBottomSheet.kt | 6 +++--- ...nsDispatcher.kt => MessageSharedActionViewModel.kt} | 2 +- .../riotx/features/home/room/list/RoomListFragment.kt | 8 ++++---- .../list/actions/RoomListQuickActionsBottomSheet.kt | 6 +++--- ...kt => RoomListQuickActionsSharedActionViewModel.kt} | 2 +- .../features/roomdirectory/PublicRoomsFragment.kt | 8 ++++---- .../features/roomdirectory/RoomDirectoryActivity.kt | 10 +++++----- .../roomdirectory/createroom/CreateRoomActivity.kt | 10 +++++----- .../roomdirectory/createroom/CreateRoomFragment.kt | 8 ++++---- .../picker/RoomDirectoryPickerFragment.kt | 6 +++--- 17 files changed, 60 insertions(+), 60 deletions(-) rename vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/{MessageActionsDispatcher.kt => MessageSharedActionViewModel.kt} (90%) rename vector/src/main/java/im/vector/riotx/features/home/room/list/actions/{RoomListQuickActionsStore.kt => RoomListQuickActionsSharedActionViewModel.kt} (87%) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index f4694bff38..18366a73cc 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -47,7 +47,7 @@ import javax.inject.Inject class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { - private lateinit var actionViewModel: HomeSharedActionViewModel + private lateinit var sharedActionViewModel: HomeSharedActionViewModel @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var vectorUncaughtExceptionHandler: VectorUncaughtExceptionHandler @@ -69,16 +69,16 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FcmHelper.ensureFcmTokenIsRetrieved(this, pushManager) - actionViewModel = ViewModelProviders.of(this).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(this).get(HomeSharedActionViewModel::class.java) drawerLayout.addDrawerListener(drawerListener) if (isFirstCreation()) { replaceFragment(R.id.homeDetailFragmentContainer, LoadingFragment::class.java) replaceFragment(R.id.homeDrawerFragmentContainer, HomeDrawerFragment::class.java) } - actionViewModel.observe() - .subscribe { navigation -> - when (navigation) { + sharedActionViewModel.observe() + .subscribe { sharedAction -> + when (sharedAction) { is HomeActivitySharedAction.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) is HomeActivitySharedAction.OpenGroup -> { drawerLayout.closeDrawer(GravityCompat.START) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 944d323306..03be7d881e 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -54,7 +54,7 @@ class HomeDetailFragment @Inject constructor( private val unreadCounterBadgeViews = arrayListOf() private val viewModel: HomeDetailViewModel by fragmentViewModel() - private lateinit var actionViewModel: HomeSharedActionViewModel + private lateinit var sharedActionViewModel: HomeSharedActionViewModel override fun getLayoutResId(): Int { return R.layout.fragment_home_detail @@ -63,7 +63,7 @@ class HomeDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) setupBottomNavigationView() setupToolbar() @@ -129,7 +129,7 @@ class HomeDetailFragment @Inject constructor( } groupToolbar.title = "" groupToolbarAvatarImageView.setOnClickListener { - actionViewModel.post(HomeActivitySharedAction.OpenDrawer) + sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index 379611d970..311d88995c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -39,7 +39,7 @@ import javax.inject.Inject class CreateDirectRoomActivity : SimpleFragmentActivity() { private val viewModel: CreateDirectRoomViewModel by viewModel() - private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel + private lateinit var sharedActionViewModel: CreateDirectRoomSharedActionViewModel @Inject lateinit var createDirectRoomViewModelFactory: CreateDirectRoomViewModel.Factory @Inject lateinit var errorFormatter: ErrorFormatter @@ -51,10 +51,10 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) toolbar.visibility = View.GONE - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) - actionViewModel.observe() - .subscribe { navigation -> - when (navigation) { + sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel.observe() + .subscribe { sharedAction -> + when (sharedAction) { CreateDirectRoomSharedAction.OpenUsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) CreateDirectRoomSharedAction.Close -> finish() CreateDirectRoomSharedAction.GoBack -> onBackPressed() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 23bff0fced..6d506e4af3 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -39,11 +39,11 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel + private lateinit var sharedActionViewModel: CreateDirectRoomSharedActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) setupRecyclerView() setupSearchByMatrixIdView() setupCloseView() @@ -70,7 +70,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( private fun setupCloseView() { createDirectRoomClose.setOnClickListener { - actionViewModel.post(CreateDirectRoomSharedAction.GoBack) + sharedActionViewModel.post(CreateDirectRoomSharedAction.GoBack) } } @@ -81,7 +81,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onItemClick(user: User) { view?.hideKeyboard() viewModel.handle(CreateDirectRoomAction.SelectUser(user)) - actionViewModel.post(CreateDirectRoomSharedAction.GoBack) + sharedActionViewModel.post(CreateDirectRoomSharedAction.GoBack) } override fun retryDirectoryUsersRequest() { diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 24fea9e42c..8d47b5224b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -49,11 +49,11 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun getMenuRes() = R.menu.vector_create_direct_room private val viewModel: CreateDirectRoomViewModel by activityViewModel() - private lateinit var actionViewModel: CreateDirectRoomSharedActionViewModel + private lateinit var sharedActionViewModel: CreateDirectRoomSharedActionViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) vectorBaseActivity.setSupportActionBar(createDirectRoomToolbar) setupRecyclerView() setupFilterView() @@ -89,7 +89,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( private fun setupAddByMatrixIdView() { addByMatrixId.setOnClickListener { - actionViewModel.post(CreateDirectRoomSharedAction.OpenUsersDirectory) + sharedActionViewModel.post(CreateDirectRoomSharedAction.OpenUsersDirectory) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 5875336d69..34258f6e00 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -36,20 +36,20 @@ class GroupListFragment @Inject constructor( private val groupController: GroupSummaryController ) : VectorBaseFragment(), GroupSummaryController.Callback { - private lateinit var actionViewModel: HomeSharedActionViewModel + private lateinit var sharedActionViewModel: HomeSharedActionViewModel private val viewModel: GroupListViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_group_list override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) groupController.callback = this stateView.contentView = groupListEpoxyRecyclerView groupListEpoxyRecyclerView.setController(groupController) viewModel.subscribe { renderState(it) } viewModel.openGroupLiveData.observeEvent(this) { - actionViewModel.post(HomeActivitySharedAction.OpenGroup) + sharedActionViewModel.post(HomeActivitySharedAction.OpenGroup) } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 681952f4d4..8bfce87879 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -98,7 +98,7 @@ import im.vector.riotx.features.home.room.detail.composer.TextComposerViewState import im.vector.riotx.features.home.room.detail.readreceipts.DisplayReadReceiptsBottomSheet import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsBottomSheet -import im.vector.riotx.features.home.room.detail.timeline.action.MessageActionsDispatcher +import im.vector.riotx.features.home.room.detail.timeline.action.MessageSharedActionViewModel import im.vector.riotx.features.home.room.detail.timeline.action.EventSharedAction import im.vector.riotx.features.home.room.detail.timeline.edithistory.ViewEditHistoryBottomSheet import im.vector.riotx.features.home.room.detail.timeline.item.* @@ -193,7 +193,7 @@ class RoomDetailFragment @Inject constructor( override fun getMenuRes() = R.menu.menu_timeline - private lateinit var messageActionsDispatcher: MessageActionsDispatcher + private lateinit var sharedActionViewModel: MessageSharedActionViewModel private lateinit var layoutManager: LinearLayoutManager private lateinit var attachmentsHelper: AttachmentsHelper private lateinit var keyboardStateUtils: KeyboardStateUtils @@ -206,7 +206,7 @@ class RoomDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - messageActionsDispatcher = ViewModelProviders.of(requireActivity()).get(MessageActionsDispatcher::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(MessageSharedActionViewModel::class.java) attachmentsHelper = AttachmentsHelper.create(this, this).register() keyboardStateUtils = KeyboardStateUtils(requireActivity()) setupToolbar(roomToolbar) @@ -225,7 +225,7 @@ class RoomDetailFragment @Inject constructor( val message = requireContext().getString(pair.first, *pair.second.toTypedArray()) showSnackWithMessage(message, Snackbar.LENGTH_LONG) } - messageActionsDispatcher + sharedActionViewModel .observe() .subscribe { handleActions(it) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index 1a8f31bb50..dfb84a0b4a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -47,7 +47,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override val showExpanded = true - private lateinit var messageActionsStore: MessageActionsDispatcher + private lateinit var sharedActionViewModel: MessageSharedActionViewModel override fun injectWith(screenComponent: ScreenComponent) { screenComponent.inject(this) @@ -61,7 +61,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - messageActionsStore = ViewModelProviders.of(requireActivity()).get(MessageActionsDispatcher::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(MessageSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = messageActionsEpoxyController.adapter // Disable item animation @@ -74,7 +74,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message // Toggle report menu viewModel.handle(MessageActionsAction.ToggleReportMenu) } else { - messageActionsStore.post(eventAction) + sharedActionViewModel.post(eventAction) dismiss() } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt similarity index 90% rename from vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt index 0d4cd201d8..ff35c04044 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsDispatcher.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt @@ -20,4 +20,4 @@ import im.vector.riotx.core.platform.VectorSharedActionViewModel /** * Activity shared view model to handle message actions */ -class MessageActionsDispatcher : VectorSharedActionViewModel() +class MessageSharedActionViewModel : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 47ef255fa8..326a95ca7a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -41,7 +41,7 @@ import im.vector.riotx.core.platform.StateView import im.vector.riotx.core.platform.VectorBaseFragment import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsSharedAction import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsBottomSheet -import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsStore +import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel import im.vector.riotx.features.home.room.list.widget.FabMenuView import im.vector.riotx.features.notifications.NotificationDrawerManager import im.vector.riotx.features.share.SharedData @@ -72,7 +72,7 @@ class RoomListFragment @Inject constructor( SHARE(/* Not used */ 0) } - private lateinit var quickActionsDispatcher: RoomListQuickActionsStore + private lateinit var sharedActionViewModel: RoomListQuickActionsSharedActionViewModel private val roomListParams: RoomListParams by args() private val roomListViewModel: RoomListViewModel by fragmentViewModel() @@ -100,7 +100,7 @@ class RoomListFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - quickActionsDispatcher = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsStore::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsSharedActionViewModel::class.java) setupCreateRoomButton() setupRecyclerView() roomListViewModel.subscribe { renderState(it) } @@ -118,7 +118,7 @@ class RoomListFragment @Inject constructor( createChatFabMenu.listener = this - quickActionsDispatcher + sharedActionViewModel .observe() .subscribe { handleQuickActions(it) } .disposeOnDestroy() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index d23183f077..06bed66135 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -45,7 +45,7 @@ data class RoomListActionsArgs( */ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), RoomListQuickActionsEpoxyController.Listener { - private lateinit var actionsDispatcher: RoomListQuickActionsStore + private lateinit var sharedActionViewModel: RoomListQuickActionsSharedActionViewModel @Inject lateinit var roomListActionsViewModelFactory: RoomListQuickActionsViewModel.Factory @Inject lateinit var roomListActionsEpoxyController: RoomListQuickActionsEpoxyController @Inject lateinit var navigator: Navigator @@ -69,7 +69,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionsDispatcher = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsStore::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = roomListActionsEpoxyController.adapter // Disable item animation @@ -83,7 +83,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R } override fun didSelectMenuAction(quickAction: RoomListQuickActionsSharedAction) { - actionsDispatcher.post(quickAction) + sharedActionViewModel.post(quickAction) dismiss() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt similarity index 87% rename from vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt rename to vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt index fb4b7c0455..9b9a7eb281 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsStore.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt @@ -21,4 +21,4 @@ import im.vector.riotx.core.platform.VectorSharedActionViewModel /** * Activity shared view model to handle room list quick actions */ -class RoomListQuickActionsStore : VectorSharedActionViewModel() +class RoomListQuickActionsSharedActionViewModel : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 80ee2ba014..3d8838a842 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -47,7 +47,7 @@ class PublicRoomsFragment @Inject constructor( ) : VectorBaseFragment(), PublicRoomsController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var actionViewModel: RoomDirectorySharedActionViewModel + private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutResId() = R.layout.fragment_public_rooms @@ -71,7 +71,7 @@ class PublicRoomsFragment @Inject constructor( .disposeOnDestroy() publicRoomsCreateNewRoom.setOnClickListener { - actionViewModel.post(RoomDirectorySharedAction.CreateRoom) + sharedActionViewModel.post(RoomDirectorySharedAction.CreateRoom) } viewModel.joinRoomErrorLiveData.observeEvent(this) { throwable -> @@ -83,7 +83,7 @@ class PublicRoomsFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.menu_room_directory_change_protocol -> { - actionViewModel.post(RoomDirectorySharedAction.ChangeProtocol) + sharedActionViewModel.post(RoomDirectorySharedAction.ChangeProtocol) true } else -> @@ -93,7 +93,7 @@ class PublicRoomsFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index 7252e7f271..85405f00f6 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -38,7 +38,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { @Inject lateinit var roomDirectoryViewModelFactory: RoomDirectoryViewModel.Factory private val roomDirectoryViewModel: RoomDirectoryViewModel by viewModel() private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var actionViewModel: RoomDirectorySharedActionViewModel + private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -48,15 +48,15 @@ class RoomDirectoryActivity : VectorBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) if (isFirstCreation()) { roomDirectoryViewModel.handle(RoomDirectoryAction.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) } - actionViewModel.observe() - .subscribe { navigation -> - when (navigation) { + sharedActionViewModel.observe() + .subscribe { sharedAction -> + when (sharedAction) { is RoomDirectorySharedAction.Back -> onBackPressed() is RoomDirectorySharedAction.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) is RoomDirectorySharedAction.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 26c4f233f7..e5df1a55ca 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -38,7 +38,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { @Inject lateinit var createRoomViewModelFactory: CreateRoomViewModel.Factory private val createRoomViewModel: CreateRoomViewModel by viewModel() - private lateinit var actionViewModel: RoomDirectorySharedActionViewModel + private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel override fun getLayoutRes() = R.layout.activity_simple @@ -55,10 +55,10 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - actionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) - actionViewModel.observe() - .subscribe { navigation -> - when (navigation) { + sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel.observe() + .subscribe { sharedAction -> + when (sharedAction) { is RoomDirectorySharedAction.Back, is RoomDirectorySharedAction.Close -> finish() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index ee0a03ce7d..b1e451f893 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -33,7 +33,7 @@ import javax.inject.Inject class CreateRoomFragment @Inject constructor(private val createRoomController: CreateRoomController) : VectorBaseFragment(), CreateRoomController.Listener { - private lateinit var actionViewModel: RoomDirectorySharedActionViewModel + private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel private val viewModel: CreateRoomViewModel by activityViewModel() override fun getLayoutResId() = R.layout.fragment_create_room @@ -43,10 +43,10 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) vectorBaseActivity.setSupportActionBar(createRoomToolbar) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { - actionViewModel.post(RoomDirectorySharedAction.Back) + sharedActionViewModel.post(RoomDirectorySharedAction.Back) } } @@ -93,7 +93,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C // Navigate to freshly created room navigator.openRoom(requireActivity(), async()) - actionViewModel.post(RoomDirectorySharedAction.Close) + sharedActionViewModel.post(RoomDirectorySharedAction.Close) } else { // Populate list with Epoxy createRoomController.setData(state) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index ce4a3b52b0..8d610823fb 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -42,7 +42,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie ) : VectorBaseFragment(), RoomDirectoryPickerController.Callback { private val viewModel: RoomDirectoryViewModel by activityViewModel() - private lateinit var actionViewModel: RoomDirectorySharedActionViewModel + private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel private val pickerViewModel: RoomDirectoryPickerViewModel by fragmentViewModel() override fun getLayoutResId() = R.layout.fragment_room_directory_picker @@ -72,7 +72,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - actionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } @@ -89,7 +89,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie Timber.v("onRoomDirectoryClicked: $roomDirectoryData") viewModel.handle(RoomDirectoryAction.SetRoomDirectoryData(roomDirectoryData)) - actionViewModel.post(RoomDirectorySharedAction.Back) + sharedActionViewModel.post(RoomDirectorySharedAction.Back) } override fun retry() { From 590a13334dfc9d818f1f44da90b0e3a31da43aab Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 16:04:41 +0100 Subject: [PATCH 10/16] ktlint --- .../java/im/vector/riotx/core/platform/VectorEventViewModel.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt index 4bf21c9aa9..e928be3343 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorEventViewModel.kt @@ -20,7 +20,6 @@ import androidx.lifecycle.ViewModel import im.vector.riotx.core.utils.MutableDataSource import im.vector.riotx.core.utils.PublishDataSource - interface VectorSharedAction /** From ea7213a5aec0154becc6dbd0225765b527554e3d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 16:16:42 +0100 Subject: [PATCH 11/16] Split long lines --- .../java/im/vector/riotx/features/home/HomeActivity.kt | 3 ++- .../home/createdirect/CreateDirectRoomActivity.kt | 6 ++++-- .../list/actions/RoomListQuickActionsSharedAction.kt | 6 +++++- .../features/roomdirectory/RoomDirectoryActivity.kt | 9 ++++++--- .../roomdirectory/createroom/CreateRoomActivity.kt | 3 ++- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index 18366a73cc..5e8700e1eb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -76,7 +76,8 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { replaceFragment(R.id.homeDrawerFragmentContainer, HomeDrawerFragment::class.java) } - sharedActionViewModel.observe() + sharedActionViewModel + .observe() .subscribe { sharedAction -> when (sharedAction) { is HomeActivitySharedAction.OpenDrawer -> drawerLayout.openDrawer(GravityCompat.START) diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index 311d88995c..6ec0a1e16c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -52,10 +52,12 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { super.onCreate(savedInstanceState) toolbar.visibility = View.GONE sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) - sharedActionViewModel.observe() + sharedActionViewModel + .observe() .subscribe { sharedAction -> when (sharedAction) { - CreateDirectRoomSharedAction.OpenUsersDirectory -> addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) + CreateDirectRoomSharedAction.OpenUsersDirectory -> + addFragmentToBackstack(R.id.container, CreateDirectRoomDirectoryUsersFragment::class.java) CreateDirectRoomSharedAction.Close -> finish() CreateDirectRoomSharedAction.GoBack -> onBackPressed() } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt index 5e0ca770dc..ca006ddd7d 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedAction.kt @@ -21,7 +21,11 @@ import androidx.annotation.StringRes import im.vector.riotx.R import im.vector.riotx.core.platform.VectorSharedAction -sealed class RoomListQuickActionsSharedAction(@StringRes val titleRes: Int, @DrawableRes val iconResId: Int, val destructive: Boolean = false) : VectorSharedAction { +sealed class RoomListQuickActionsSharedAction( + @StringRes val titleRes: Int, + @DrawableRes val iconResId: Int, + val destructive: Boolean = false) + : VectorSharedAction { data class NotificationsAllNoisy(val roomId: String) : RoomListQuickActionsSharedAction( R.string.room_list_quick_actions_notifications_all_noisy, diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index 85405f00f6..bea8e365b8 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -54,12 +54,15 @@ class RoomDirectoryActivity : VectorBaseActivity() { roomDirectoryViewModel.handle(RoomDirectoryAction.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) } - sharedActionViewModel.observe() + sharedActionViewModel + .observe() .subscribe { sharedAction -> when (sharedAction) { is RoomDirectorySharedAction.Back -> onBackPressed() - is RoomDirectorySharedAction.CreateRoom -> addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) - is RoomDirectorySharedAction.ChangeProtocol -> addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) + is RoomDirectorySharedAction.CreateRoom -> + addFragmentToBackstack(R.id.simpleFragmentContainer, CreateRoomFragment::class.java) + is RoomDirectorySharedAction.ChangeProtocol -> + addFragmentToBackstack(R.id.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) is RoomDirectorySharedAction.Close -> finish() } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index e5df1a55ca..feb23f46c0 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -56,7 +56,8 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) - sharedActionViewModel.observe() + sharedActionViewModel + .observe() .subscribe { sharedAction -> when (sharedAction) { is RoomDirectorySharedAction.Back, From a6df63f6d9ffb976755a5e52ec2309b5b6060533 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 16:56:45 +0100 Subject: [PATCH 12/16] Fix crash --- .../vector/riotx/core/di/ViewModelModule.kt | 24 +++++++++++++++++++ .../VectorBaseBottomSheetDialogFragment.kt | 5 +++- .../KeysBackupRestoreFromKeyFragment.kt | 5 +--- ...KeysBackupRestoreFromPassphraseFragment.kt | 4 +--- .../KeysBackupRestoreSuccessFragment.kt | 4 +--- .../setup/KeysBackupSetupStep1Fragment.kt | 4 +--- .../setup/KeysBackupSetupStep2Fragment.kt | 4 +--- .../setup/KeysBackupSetupStep3Fragment.kt | 4 +--- .../SASVerificationIncomingFragment.kt | 4 +--- .../SASVerificationShortCodeFragment.kt | 4 +--- .../SASVerificationVerifiedFragment.kt | 4 +--- .../riotx/features/home/HomeActivity.kt | 4 ++-- .../riotx/features/home/HomeDetailFragment.kt | 2 +- .../home/HomeSharedActionViewModel.kt | 3 ++- .../CreateDirectRoomSharedActionViewModel.kt | 3 ++- .../features/home/group/GroupListFragment.kt | 2 +- .../home/room/detail/RoomDetailFragment.kt | 2 +- .../action/MessageActionsBottomSheet.kt | 2 +- .../action/MessageSharedActionViewModel.kt | 3 ++- .../home/room/list/RoomListFragment.kt | 2 +- .../RoomListQuickActionsBottomSheet.kt | 2 +- ...omListQuickActionsSharedActionViewModel.kt | 3 ++- .../reactions/EmojiChooserFragment.kt | 4 +--- .../roomdirectory/PublicRoomsFragment.kt | 2 +- .../RoomDirectorySharedActionViewModel.kt | 3 ++- .../createroom/CreateRoomFragment.kt | 2 +- .../picker/RoomDirectoryPickerFragment.kt | 2 +- 27 files changed, 59 insertions(+), 48 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt b/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt index d2b8abb9c4..d4e55e6080 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt @@ -27,6 +27,10 @@ import im.vector.riotx.features.crypto.keysbackup.restore.KeysBackupRestoreFromP import im.vector.riotx.features.crypto.keysbackup.restore.KeysBackupRestoreSharedViewModel import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupSharedViewModel import im.vector.riotx.features.crypto.verification.SasVerificationViewModel +import im.vector.riotx.features.home.HomeSharedActionViewModel +import im.vector.riotx.features.home.createdirect.CreateDirectRoomSharedActionViewModel +import im.vector.riotx.features.home.room.detail.timeline.action.MessageSharedActionViewModel +import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel import im.vector.riotx.features.reactions.EmojiChooserViewModel import im.vector.riotx.features.workers.signout.SignOutViewModel @@ -82,4 +86,24 @@ interface ViewModelModule { @IntoMap @ViewModelKey(ConfigurationViewModel::class) fun bindConfigurationViewModel(viewModel: ConfigurationViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(CreateDirectRoomSharedActionViewModel::class) + fun bindCreateDirectRoomSharedActionViewModel(viewModel: CreateDirectRoomSharedActionViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(HomeSharedActionViewModel::class) + fun bindHomeSharedActionViewModel(viewModel: HomeSharedActionViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(MessageSharedActionViewModel::class) + fun bindMessageSharedActionViewModel(viewModel: MessageSharedActionViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(RoomListQuickActionsSharedActionViewModel::class) + fun bindRoomListQuickActionsSharedActionViewModel(viewModel: RoomListQuickActionsSharedActionViewModel): ViewModel } diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt index 1b07d739b5..6f8128e12a 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt @@ -21,6 +21,7 @@ import android.os.Bundle import android.os.Parcelable import android.widget.FrameLayout import androidx.annotation.CallSuper +import androidx.lifecycle.ViewModelProvider import com.airbnb.mvrx.MvRx import com.airbnb.mvrx.MvRxView import com.airbnb.mvrx.MvRxViewModelStore @@ -30,7 +31,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import im.vector.riotx.core.di.DaggerScreenComponent import im.vector.riotx.core.di.ScreenComponent import im.vector.riotx.core.utils.DimensionConverter -import java.util.UUID +import java.util.* /** * Add MvRx capabilities to bottomsheetdialog (like BaseMvRxFragment) @@ -40,6 +41,7 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment() override val mvrxViewModelStore by lazy { MvRxViewModelStore(viewModelStore) } private lateinit var mvrxPersistedViewId: String private lateinit var screenComponent: ScreenComponent + protected lateinit var viewModelFactory: ViewModelProvider.Factory final override val mvrxViewId: String by lazy { mvrxPersistedViewId } private var bottomSheetBehavior: BottomSheetBehavior? = null @@ -52,6 +54,7 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment() override fun onAttach(context: Context) { screenComponent = DaggerScreenComponent.factory().create(vectorBaseActivity.getVectorComponent(), vectorBaseActivity) + viewModelFactory = screenComponent.viewModelFactory() super.onAttach(context) injectWith(screenComponent) } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt index c30393dd5f..fbeeb273f0 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt @@ -54,10 +54,7 @@ class KeysBackupRestoreFromKeyFragment @Inject constructor() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreFromKeyViewModel::class.java) - sharedViewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") - + sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) mKeyTextEdit.setText(viewModel.recoveryCode.value) mKeyTextEdit.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt index d4468081b8..ad4b9e885d 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt @@ -65,9 +65,7 @@ class KeysBackupRestoreFromPassphraseFragment @Inject constructor(): VectorBaseF super.onActivityCreated(savedInstanceState) viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreFromPassphraseViewModel::class.java) - sharedViewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") + sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) viewModel.passphraseErrorText.observe(viewLifecycleOwner, Observer { newValue -> mPassphraseInputLayout.error = newValue diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt index 813bb9ca72..806a29b0e3 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt @@ -38,9 +38,7 @@ class KeysBackupRestoreSuccessFragment @Inject constructor() : VectorBaseFragmen override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedViewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") + sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) sharedViewModel.importKeyResult?.let { val part1 = resources.getQuantityString(R.plurals.keys_backup_restore_success_description_part1, diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt index d018cc1ce9..0b0be672bc 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt @@ -44,9 +44,7 @@ class KeysBackupSetupStep1Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) viewModel.showManualExport.observe(viewLifecycleOwner, Observer { val showOption = it ?: false diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt index 21e4747a4e..fc9cff1b60 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt @@ -79,9 +79,7 @@ class KeysBackupSetupStep2Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) viewModel.shouldPromptOnBack = true bindViewToViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt index 008e1b8aef..cc84b7454e 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt @@ -58,9 +58,7 @@ class KeysBackupSetupStep3Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) viewModel.shouldPromptOnBack = false diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt index 9bb3661bd7..d5b160b5a0 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt @@ -51,9 +51,7 @@ class SASVerificationIncomingFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(SasVerificationViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) otherUserDisplayNameTextView.text = viewModel.otherUser?.displayName ?: viewModel.otherUserId otherUserIdTextView.text = viewModel.otherUserId diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt index da19d48bfe..c4e3463bc4 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt @@ -62,9 +62,7 @@ class SASVerificationShortCodeFragment @Inject constructor(): VectorBaseFragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(SasVerificationViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) viewModel.transaction?.let { if (it.supportsEmoji()) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt index 59825c8282..915610567f 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt @@ -31,9 +31,7 @@ class SASVerificationVerifiedFragment @Inject constructor() : VectorBaseFragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(SasVerificationViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) } @OnClick(R.id.sas_verification_verified_done_button) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index 5e8700e1eb..a4bdf0a030 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -69,7 +69,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FcmHelper.ensureFcmTokenIsRetrieved(this, pushManager) - sharedActionViewModel = ViewModelProviders.of(this).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(HomeSharedActionViewModel::class.java) drawerLayout.addDrawerListener(drawerListener) if (isFirstCreation()) { replaceFragment(R.id.homeDetailFragmentContainer, LoadingFragment::class.java) @@ -147,7 +147,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { } // Force remote backup state update to update the banner if needed - ViewModelProviders.of(this).get(SignOutViewModel::class.java).refreshRemoteStateIfNeeded() + ViewModelProviders.of(this, viewModelFactory).get(SignOutViewModel::class.java).refreshRemoteStateIfNeeded() } override fun configure(toolbar: Toolbar) { diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 03be7d881e..57325d1eda 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -63,7 +63,7 @@ class HomeDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(HomeSharedActionViewModel::class.java) setupBottomNavigationView() setupToolbar() diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt index 23baa53e3b..cd81448a0a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeSharedActionViewModel.kt @@ -17,5 +17,6 @@ package im.vector.riotx.features.home import im.vector.riotx.core.platform.VectorSharedActionViewModel +import javax.inject.Inject -class HomeSharedActionViewModel : VectorSharedActionViewModel() +class HomeSharedActionViewModel @Inject constructor() : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt index 7e5a2bbe93..590a4855f5 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomSharedActionViewModel.kt @@ -17,5 +17,6 @@ package im.vector.riotx.features.home.createdirect import im.vector.riotx.core.platform.VectorSharedActionViewModel +import javax.inject.Inject -class CreateDirectRoomSharedActionViewModel : VectorSharedActionViewModel() +class CreateDirectRoomSharedActionViewModel @Inject constructor() : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 34258f6e00..95bb097d42 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -43,7 +43,7 @@ class GroupListFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(HomeSharedActionViewModel::class.java) groupController.callback = this stateView.contentView = groupListEpoxyRecyclerView groupListEpoxyRecyclerView.setController(groupController) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 8bfce87879..e851ba58ce 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -206,7 +206,7 @@ class RoomDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(MessageSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(MessageSharedActionViewModel::class.java) attachmentsHelper = AttachmentsHelper.create(this, this).register() keyboardStateUtils = KeyboardStateUtils(requireActivity()) setupToolbar(roomToolbar) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index dfb84a0b4a..2502f37b0e 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -61,7 +61,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(MessageSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(MessageSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = messageActionsEpoxyController.adapter // Disable item animation diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt index ff35c04044..2e041fd2ea 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageSharedActionViewModel.kt @@ -16,8 +16,9 @@ package im.vector.riotx.features.home.room.detail.timeline.action import im.vector.riotx.core.platform.VectorSharedActionViewModel +import javax.inject.Inject /** * Activity shared view model to handle message actions */ -class MessageSharedActionViewModel : VectorSharedActionViewModel() +class MessageSharedActionViewModel @Inject constructor() : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 326a95ca7a..08c646917c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -100,7 +100,7 @@ class RoomListFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomListQuickActionsSharedActionViewModel::class.java) setupCreateRoomButton() setupRecyclerView() roomListViewModel.subscribe { renderState(it) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 06bed66135..77b60286ff 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -69,7 +69,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomListQuickActionsSharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomListQuickActionsSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = roomListActionsEpoxyController.adapter // Disable item animation diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt index 9b9a7eb281..2f7e8354bf 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsSharedActionViewModel.kt @@ -17,8 +17,9 @@ package im.vector.riotx.features.home.room.list.actions import im.vector.riotx.core.platform.VectorSharedActionViewModel +import javax.inject.Inject /** * Activity shared view model to handle room list quick actions */ -class RoomListQuickActionsSharedActionViewModel : VectorSharedActionViewModel() +class RoomListQuickActionsSharedActionViewModel @Inject constructor() : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt index 589fa5dbff..418aea9417 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt @@ -30,9 +30,7 @@ class EmojiChooserFragment @Inject constructor() : VectorBaseFragment() { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = activity?.run { - ViewModelProviders.of(this, viewModelFactory).get(EmojiChooserViewModel::class.java) - } ?: throw Exception("Invalid Activity") + viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(EmojiChooserViewModel::class.java) viewModel.initWithContext(context!!) (view as? RecyclerView)?.let { it.adapter = viewModel.adapter diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 3d8838a842..6220a34da5 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -93,7 +93,7 @@ class PublicRoomsFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt index 257ad782fe..12ae9c1cb5 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectorySharedActionViewModel.kt @@ -17,5 +17,6 @@ package im.vector.riotx.features.roomdirectory import im.vector.riotx.core.platform.VectorSharedActionViewModel +import javax.inject.Inject -class RoomDirectorySharedActionViewModel : VectorSharedActionViewModel() +class RoomDirectorySharedActionViewModel @Inject constructor() : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index b1e451f893..71f5669118 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -43,7 +43,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) vectorBaseActivity.setSupportActionBar(createRoomToolbar) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { sharedActionViewModel.post(RoomDirectorySharedAction.Back) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index 8d610823fb..750561ebf7 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -72,7 +72,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity()).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } From ec4d7e29ec0be6be1438c0d22ab55e2c54ab7392 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 17:08:29 +0100 Subject: [PATCH 13/16] Ensure we use the correct viewModelProvider --- .../riotx/core/platform/VectorBaseActivity.kt | 10 +++++++++- .../VectorBaseBottomSheetDialogFragment.kt | 18 +++++++++++++++++- .../riotx/core/platform/VectorBaseFragment.kt | 14 +++++++++++++- .../restore/KeysBackupRestoreActivity.kt | 2 +- .../KeysBackupRestoreFromKeyFragment.kt | 4 ++-- .../KeysBackupRestoreFromPassphraseFragment.kt | 4 ++-- .../KeysBackupRestoreSuccessFragment.kt | 2 +- .../setup/KeysBackupSetupActivity.kt | 2 +- .../setup/KeysBackupSetupStep1Fragment.kt | 2 +- .../setup/KeysBackupSetupStep2Fragment.kt | 2 +- .../setup/KeysBackupSetupStep3Fragment.kt | 2 +- .../verification/SASVerificationActivity.kt | 2 +- .../SASVerificationIncomingFragment.kt | 2 +- .../SASVerificationShortCodeFragment.kt | 2 +- .../SASVerificationStartFragment.kt | 2 +- .../SASVerificationVerifiedFragment.kt | 2 +- .../vector/riotx/features/home/HomeActivity.kt | 4 ++-- .../riotx/features/home/HomeDetailFragment.kt | 5 ++--- .../createdirect/CreateDirectRoomActivity.kt | 2 +- .../CreateDirectRoomDirectoryUsersFragment.kt | 2 +- .../CreateDirectRoomKnownUsersFragment.kt | 2 +- .../features/home/group/GroupListFragment.kt | 2 +- .../home/room/detail/RoomDetailFragment.kt | 2 +- .../action/MessageActionsBottomSheet.kt | 2 +- .../home/room/list/RoomListFragment.kt | 2 +- .../actions/RoomListQuickActionsBottomSheet.kt | 2 +- .../features/reactions/EmojiChooserFragment.kt | 2 +- .../reactions/EmojiReactionPickerActivity.kt | 2 +- .../reactions/EmojiSearchResultFragment.kt | 2 +- .../roomdirectory/PublicRoomsFragment.kt | 2 +- .../roomdirectory/RoomDirectoryActivity.kt | 2 +- .../createroom/CreateRoomActivity.kt | 2 +- .../createroom/CreateRoomFragment.kt | 2 +- .../createroom/CreateRoomViewModel.kt | 2 +- .../picker/RoomDirectoryPickerFragment.kt | 2 +- 35 files changed, 75 insertions(+), 40 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt index ede99e4f28..0cbc4e9b1d 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt @@ -69,11 +69,19 @@ abstract class VectorBaseActivity : BaseMvRxActivity(), HasScreenInjector { @BindView(R.id.vector_coordinator_layout) var coordinatorLayout: CoordinatorLayout? = null + /* ========================================================================================== + * View model + * ========================================================================================== */ + + private lateinit var viewModelFactory: ViewModelProvider.Factory + + protected val viewModelProvider + get() = ViewModelProviders.of(this, viewModelFactory) + /* ========================================================================================== * DATA * ========================================================================================== */ - protected lateinit var viewModelFactory: ViewModelProvider.Factory private lateinit var configurationViewModel: ConfigurationViewModel private lateinit var sessionListener: SessionListener protected lateinit var bugReporter: BugReporter diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt index 6f8128e12a..2c8f840a41 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt @@ -22,6 +22,7 @@ import android.os.Parcelable import android.widget.FrameLayout import androidx.annotation.CallSuper import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.MvRx import com.airbnb.mvrx.MvRxView import com.airbnb.mvrx.MvRxViewModelStore @@ -41,9 +42,24 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment() override val mvrxViewModelStore by lazy { MvRxViewModelStore(viewModelStore) } private lateinit var mvrxPersistedViewId: String private lateinit var screenComponent: ScreenComponent - protected lateinit var viewModelFactory: ViewModelProvider.Factory final override val mvrxViewId: String by lazy { mvrxPersistedViewId } + /* ========================================================================================== + * View model + * ========================================================================================== */ + + private lateinit var viewModelFactory: ViewModelProvider.Factory + + protected val activityViewModelProvider + get() = ViewModelProviders.of(requireActivity(), viewModelFactory) + + protected val fragmentViewModelProvider + get() = ViewModelProviders.of(this, viewModelFactory) + + /* ========================================================================================== + * BottomSheetBehavior + * ========================================================================================== */ + private var bottomSheetBehavior: BottomSheetBehavior? = null val vectorBaseActivity: VectorBaseActivity by lazy { diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt index 206a1bab06..255e18608a 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt @@ -25,6 +25,7 @@ import androidx.annotation.LayoutRes import androidx.annotation.MainThread import androidx.appcompat.widget.Toolbar import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import butterknife.ButterKnife import butterknife.Unbinder import com.airbnb.mvrx.BaseMvRxFragment @@ -51,10 +52,21 @@ abstract class VectorBaseFragment : BaseMvRxFragment(), HasScreenInjector { * Navigator * ========================================================================================== */ - protected lateinit var viewModelFactory: ViewModelProvider.Factory protected lateinit var navigator: Navigator private lateinit var screenComponent: ScreenComponent + /* ========================================================================================== + * View model + * ========================================================================================== */ + + private lateinit var viewModelFactory: ViewModelProvider.Factory + + protected val activityViewModelProvider + get() = ViewModelProviders.of(requireActivity(), viewModelFactory) + + protected val fragmentViewModelProvider + get() = ViewModelProviders.of(this, viewModelFactory) + /* ========================================================================================== * Life cycle * ========================================================================================== */ diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt index cd5dc38c3d..7befd54ccd 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt @@ -43,7 +43,7 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() { override fun initUiAndData() { super.initUiAndData() - viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) + viewModel = viewModelProvider.get(KeysBackupRestoreSharedViewModel::class.java) viewModel.initSession(session) viewModel.keyVersionResult.observe(this, Observer { keyVersion -> diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt index fbeeb273f0..38bb08688d 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt @@ -53,8 +53,8 @@ class KeysBackupRestoreFromKeyFragment @Inject constructor() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreFromKeyViewModel::class.java) - sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) + viewModel = fragmentViewModelProvider.get(KeysBackupRestoreFromKeyViewModel::class.java) + sharedViewModel = activityViewModelProvider.get(KeysBackupRestoreSharedViewModel::class.java) mKeyTextEdit.setText(viewModel.recoveryCode.value) mKeyTextEdit.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt index ad4b9e885d..e75163f45c 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt @@ -64,8 +64,8 @@ class KeysBackupRestoreFromPassphraseFragment @Inject constructor(): VectorBaseF override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupRestoreFromPassphraseViewModel::class.java) - sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) + viewModel = fragmentViewModelProvider.get(KeysBackupRestoreFromPassphraseViewModel::class.java) + sharedViewModel = activityViewModelProvider.get(KeysBackupRestoreSharedViewModel::class.java) viewModel.passphraseErrorText.observe(viewLifecycleOwner, Observer { newValue -> mPassphraseInputLayout.error = newValue diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt index 806a29b0e3..e938abf54f 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt @@ -38,7 +38,7 @@ class KeysBackupRestoreSuccessFragment @Inject constructor() : VectorBaseFragmen override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupRestoreSharedViewModel::class.java) + sharedViewModel = activityViewModelProvider.get(KeysBackupRestoreSharedViewModel::class.java) sharedViewModel.importKeyResult?.let { val part1 = resources.getQuantityString(R.plurals.keys_backup_restore_success_description_part1, diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt index 8491435d3a..49149e5d98 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt @@ -43,7 +43,7 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() { replaceFragment(R.id.container, KeysBackupSetupStep1Fragment::class.java) } - viewModel = ViewModelProviders.of(this, viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) + viewModel = viewModelProvider.get(KeysBackupSetupSharedViewModel::class.java) viewModel.showManualExport.value = intent.getBooleanExtra(EXTRA_SHOW_MANUAL_EXPORT, false) viewModel.initSession(session) diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt index 0b0be672bc..efa10d8e84 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt @@ -44,7 +44,7 @@ class KeysBackupSetupStep1Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) + viewModel = activityViewModelProvider.get(KeysBackupSetupSharedViewModel::class.java) viewModel.showManualExport.observe(viewLifecycleOwner, Observer { val showOption = it ?: false diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt index fc9cff1b60..8e27c57af6 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt @@ -79,7 +79,7 @@ class KeysBackupSetupStep2Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) + viewModel = activityViewModelProvider.get(KeysBackupSetupSharedViewModel::class.java) viewModel.shouldPromptOnBack = true bindViewToViewModel() diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt index cc84b7454e..41de7c9a8a 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt @@ -58,7 +58,7 @@ class KeysBackupSetupStep3Fragment @Inject constructor() : VectorBaseFragment() override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(KeysBackupSetupSharedViewModel::class.java) + viewModel = activityViewModelProvider.get(KeysBackupSetupSharedViewModel::class.java) viewModel.shouldPromptOnBack = false diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt index 3890479d91..3e0ecbc39f 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt @@ -83,7 +83,7 @@ class SASVerificationActivity : SimpleFragmentActivity() { override fun initUiAndData() { super.initUiAndData() - viewModel = ViewModelProviders.of(this, viewModelFactory).get(SasVerificationViewModel::class.java) + viewModel = viewModelProvider.get(SasVerificationViewModel::class.java) val transactionID: String? = intent.getStringExtra(EXTRA_TRANSACTION_ID) if (isFirstCreation()) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt index d5b160b5a0..c5c697277e 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt @@ -51,7 +51,7 @@ class SASVerificationIncomingFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) + viewModel = activityViewModelProvider.get(SasVerificationViewModel::class.java) otherUserDisplayNameTextView.text = viewModel.otherUser?.displayName ?: viewModel.otherUserId otherUserIdTextView.text = viewModel.otherUserId diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt index c4e3463bc4..c4b9d39f39 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt @@ -62,7 +62,7 @@ class SASVerificationShortCodeFragment @Inject constructor(): VectorBaseFragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) + viewModel = activityViewModelProvider.get(SasVerificationViewModel::class.java) viewModel.transaction?.let { if (it.supportsEmoji()) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt index 97a29d9b7b..94539e8c68 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt @@ -53,7 +53,7 @@ class SASVerificationStartFragment @Inject constructor(): VectorBaseFragment() { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(vectorBaseActivity, viewModelFactory).get(SasVerificationViewModel::class.java) + viewModel = activityViewModelProvider.get(SasVerificationViewModel::class.java) viewModel.transactionState.observe(viewLifecycleOwner, Observer { val uxState = (viewModel.transaction as? OutgoingSasVerificationRequest)?.uxState when (uxState) { diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt index 915610567f..bc9bb71143 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt @@ -31,7 +31,7 @@ class SASVerificationVerifiedFragment @Inject constructor() : VectorBaseFragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(SasVerificationViewModel::class.java) + viewModel = activityViewModelProvider.get(SasVerificationViewModel::class.java) } @OnClick(R.id.sas_verification_verified_done_button) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index a4bdf0a030..c12f6fc32f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -69,7 +69,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FcmHelper.ensureFcmTokenIsRetrieved(this, pushManager) - sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = viewModelProvider.get(HomeSharedActionViewModel::class.java) drawerLayout.addDrawerListener(drawerListener) if (isFirstCreation()) { replaceFragment(R.id.homeDetailFragmentContainer, LoadingFragment::class.java) @@ -147,7 +147,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { } // Force remote backup state update to update the banner if needed - ViewModelProviders.of(this, viewModelFactory).get(SignOutViewModel::class.java).refreshRemoteStateIfNeeded() + viewModelProvider.get(SignOutViewModel::class.java).refreshRemoteStateIfNeeded() } override fun configure(toolbar: Toolbar) { diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 57325d1eda..77d606b14e 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -20,7 +20,6 @@ import android.os.Bundle import android.view.LayoutInflater import androidx.core.view.forEachIndexed import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.bottomnavigation.BottomNavigationItemView @@ -63,7 +62,7 @@ class HomeDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(HomeSharedActionViewModel::class.java) setupBottomNavigationView() setupToolbar() @@ -91,7 +90,7 @@ class HomeDetailFragment @Inject constructor( private fun setupKeysBackupBanner() { // Keys backup banner // Use the SignOutViewModel, it observe the keys backup state and this is what we need here - val model = ViewModelProviders.of(this, viewModelFactory).get(SignOutViewModel::class.java) + val model = fragmentViewModelProvider.get(SignOutViewModel::class.java) model.init(session) diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index 6ec0a1e16c..c32fe36bbc 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -51,7 +51,7 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) toolbar.visibility = View.GONE - sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel = viewModelProvider.get(CreateDirectRoomSharedActionViewModel::class.java) sharedActionViewModel .observe() .subscribe { sharedAction -> diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 6d506e4af3..07dccf1f80 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -43,7 +43,7 @@ class CreateDirectRoomDirectoryUsersFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(CreateDirectRoomSharedActionViewModel::class.java) setupRecyclerView() setupSearchByMatrixIdView() setupCloseView() diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 8d47b5224b..4e87d59f62 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -53,7 +53,7 @@ class CreateDirectRoomKnownUsersFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(CreateDirectRoomSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(CreateDirectRoomSharedActionViewModel::class.java) vectorBaseActivity.setSupportActionBar(createDirectRoomToolbar) setupRecyclerView() setupFilterView() diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index 95bb097d42..fbc9f5ca4c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -43,7 +43,7 @@ class GroupListFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(HomeSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(HomeSharedActionViewModel::class.java) groupController.callback = this stateView.contentView = groupListEpoxyRecyclerView groupListEpoxyRecyclerView.setController(groupController) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index e851ba58ce..969bacaf6d 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -206,7 +206,7 @@ class RoomDetailFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(MessageSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(MessageSharedActionViewModel::class.java) attachmentsHelper = AttachmentsHelper.create(this, this).register() keyboardStateUtils = KeyboardStateUtils(requireActivity()) setupToolbar(roomToolbar) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index 2502f37b0e..a0bf43e6db 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -61,7 +61,7 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(MessageSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(MessageSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = messageActionsEpoxyController.adapter // Disable item animation diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 08c646917c..9c575c5dd2 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -100,7 +100,7 @@ class RoomListFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomListQuickActionsSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(RoomListQuickActionsSharedActionViewModel::class.java) setupCreateRoomButton() setupRecyclerView() roomListViewModel.subscribe { renderState(it) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 77b60286ff..f1350a9b0b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -69,7 +69,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomListQuickActionsSharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(RoomListQuickActionsSharedActionViewModel::class.java) recyclerView.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) recyclerView.adapter = roomListActionsEpoxyController.adapter // Disable item animation diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt index 418aea9417..4bfde22774 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt @@ -30,7 +30,7 @@ class EmojiChooserFragment @Inject constructor() : VectorBaseFragment() { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(EmojiChooserViewModel::class.java) + viewModel = activityViewModelProvider.get(EmojiChooserViewModel::class.java) viewModel.initWithContext(context!!) (view as? RecyclerView)?.let { it.adapter = viewModel.adapter diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt index 8b739ce794..966329e8d8 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt @@ -90,7 +90,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), tabLayout = findViewById(R.id.tabs) - viewModel = ViewModelProviders.of(this, viewModelFactory).get(EmojiChooserViewModel::class.java) + viewModel = viewModelProvider.get(EmojiChooserViewModel::class.java) viewModel.eventId = intent.getStringExtra(EXTRA_EVENT_ID) diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt index 04fc99bbaa..2c97d9fee5 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt @@ -41,7 +41,7 @@ class EmojiSearchResultFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(EmojiChooserViewModel::class.java) + sharedViewModel = activityViewModelProvider.get(EmojiChooserViewModel::class.java) epoxyController.listener = object : ReactionClickListener { override fun onReactionSelected(reaction: String) { diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index 6220a34da5..cf60ba68a0 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -93,7 +93,7 @@ class PublicRoomsFragment @Inject constructor( override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index bea8e365b8..5ba20e0e53 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -48,7 +48,7 @@ class RoomDirectoryActivity : VectorBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = viewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) if (isFirstCreation()) { roomDirectoryViewModel.handle(RoomDirectoryAction.FilterWith(intent?.getStringExtra(INITIAL_FILTER) ?: "")) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index feb23f46c0..64f3563e20 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -55,7 +55,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarConfigurable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(this, viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = viewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) sharedActionViewModel .observe() .subscribe { sharedAction -> diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index 71f5669118..cdf006a4e7 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -43,7 +43,7 @@ class CreateRoomFragment @Inject constructor(private val createRoomController: C override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) vectorBaseActivity.setSupportActionBar(createRoomToolbar) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() createRoomClose.setOnClickListener { sharedActionViewModel.post(RoomDirectorySharedAction.Back) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt index dcc124b568..ff4aa332f4 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomViewModel.kt @@ -46,7 +46,7 @@ class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: Cr return when (activity) { is CreateRoomActivity -> activity.createRoomViewModelFactory.create(state) is RoomDirectoryActivity -> activity.createRoomViewModelFactory.create(state) - else -> throw IllegalStateException("Wrong activity") + else -> error("Wrong activity") } } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index 750561ebf7..11a08c6291 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -72,7 +72,7 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - sharedActionViewModel = ViewModelProviders.of(requireActivity(), viewModelFactory).get(RoomDirectorySharedActionViewModel::class.java) + sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) setupRecyclerView() } From bb237e3bbb54c69a390ffe5ecfc2e799ff6371b0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 17:21:46 +0100 Subject: [PATCH 14/16] Fix ViewModel for Signout --- .../riotx/core/platform/VectorBaseActivity.kt | 2 +- .../riotx/features/home/HomeDetailFragment.kt | 2 - .../SignOutBottomSheetDialogFragment.kt | 29 +++--------- .../workers/signout/SignOutViewModel.kt | 44 +++++-------------- 4 files changed, 18 insertions(+), 59 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt index 0cbc4e9b1d..f0f6eea91d 100644 --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt @@ -138,7 +138,7 @@ abstract class VectorBaseActivity : BaseMvRxActivity(), HasScreenInjector { supportFragmentManager.fragmentFactory = screenComponent.fragmentFactory() super.onCreate(savedInstanceState) viewModelFactory = screenComponent.viewModelFactory() - configurationViewModel = ViewModelProviders.of(this, viewModelFactory).get(ConfigurationViewModel::class.java) + configurationViewModel = viewModelProvider.get(ConfigurationViewModel::class.java) bugReporter = screenComponent.bugReporter() // Shake detector rageShake = screenComponent.rageShake() diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 77d606b14e..5b56a19648 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -92,8 +92,6 @@ class HomeDetailFragment @Inject constructor( // Use the SignOutViewModel, it observe the keys backup state and this is what we need here val model = fragmentViewModelProvider.get(SignOutViewModel::class.java) - model.init(session) - model.keysBackupState.observe(viewLifecycleOwner, Observer { keysBackupState -> when (keysBackupState) { null -> diff --git a/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutBottomSheetDialogFragment.kt index 32d67b87ca..94c718466f 100644 --- a/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutBottomSheetDialogFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutBottomSheetDialogFragment.kt @@ -18,7 +18,6 @@ package im.vector.riotx.features.workers.signout import android.app.Activity import android.app.Dialog -import android.content.Context import android.content.Intent import android.os.Bundle import android.view.LayoutInflater @@ -31,27 +30,19 @@ import android.widget.TextView import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.ViewModelProviders import androidx.transition.TransitionManager import butterknife.BindView import butterknife.ButterKnife import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog -import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.crypto.keysbackup.KeysBackupState import im.vector.riotx.R -import im.vector.riotx.core.di.DaggerScreenComponent -import im.vector.riotx.core.platform.VectorBaseActivity +import im.vector.riotx.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.riotx.core.utils.toast import im.vector.riotx.features.crypto.keysbackup.settings.KeysBackupManageActivity import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupActivity -class SignOutBottomSheetDialogFragment : BottomSheetDialogFragment() { - - lateinit var session: Session - lateinit var viewModelFactory: ViewModelProvider.Factory +class SignOutBottomSheetDialogFragment : VectorBaseBottomSheetDialogFragment() { @BindView(R.id.bottom_sheet_signout_warning_text) lateinit var sheetTitle: TextView @@ -97,20 +88,10 @@ class SignOutBottomSheetDialogFragment : BottomSheetDialogFragment() { private lateinit var viewModel: SignOutViewModel - override fun onAttach(context: Context) { - super.onAttach(context) - val vectorBaseActivity = activity as VectorBaseActivity - val screenComponent = DaggerScreenComponent.factory().create(vectorBaseActivity.getVectorComponent(), vectorBaseActivity) - viewModelFactory = screenComponent.viewModelFactory() - session = screenComponent.activeSessionHolder().getActiveSession() - } - override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - viewModel = ViewModelProviders.of(this, viewModelFactory).get(SignOutViewModel::class.java) - - viewModel.init(session) + viewModel = fragmentViewModelProvider.get(SignOutViewModel::class.java) setupClickableView.setOnClickListener { context?.let { context -> @@ -162,7 +143,7 @@ class SignOutBottomSheetDialogFragment : BottomSheetDialogFragment() { } } - viewModel.keysExportedToFile.observe(this, Observer { + viewModel.keysExportedToFile.observe(viewLifecycleOwner, Observer { val hasExportedToFile = it ?: false if (hasExportedToFile) { // We can allow to sign out @@ -177,7 +158,7 @@ class SignOutBottomSheetDialogFragment : BottomSheetDialogFragment() { } }) - viewModel.keysBackupState.observe(this, Observer { + viewModel.keysBackupState.observe(viewLifecycleOwner, Observer { if (viewModel.keysExportedToFile.value == true) { // ignore this return@Observer diff --git a/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutViewModel.kt b/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutViewModel.kt index c32d6f6631..8964b29952 100644 --- a/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/workers/signout/SignOutViewModel.kt @@ -23,59 +23,43 @@ import im.vector.matrix.android.api.session.crypto.keysbackup.KeysBackupState import im.vector.matrix.android.api.session.crypto.keysbackup.KeysBackupStateListener import javax.inject.Inject -class SignOutViewModel @Inject constructor() : ViewModel(), KeysBackupStateListener { +class SignOutViewModel @Inject constructor(private val session: Session) : ViewModel(), KeysBackupStateListener { // Keys exported manually var keysExportedToFile = MutableLiveData() var keysBackupState = MutableLiveData() - private var mxSession: Session? = null + init { + session.getKeysBackupService().addListener(this) - fun init(session: Session) { - if (mxSession == null) { - mxSession = session - - mxSession?.getKeysBackupService() - ?.addListener(this) - } - - keysBackupState.value = mxSession?.getKeysBackupService() - ?.state + keysBackupState.value = session.getKeysBackupService().state } /** * Safe way to get the current KeysBackup version */ fun getCurrentBackupVersion(): String { - return mxSession - ?.getKeysBackupService() - ?.currentBackupVersion - ?: "" + return session.getKeysBackupService().currentBackupVersion ?: "" } /** * Safe way to get the number of keys to backup */ fun getNumberOfKeysToBackup(): Int { - return mxSession - ?.inboundGroupSessionsCount(false) - ?: 0 + return session.inboundGroupSessionsCount(false) } /** * Safe way to tell if there are more keys on the server */ fun canRestoreKeys(): Boolean { - return mxSession - ?.getKeysBackupService() - ?.canRestoreKeys() == true + return session.getKeysBackupService().canRestoreKeys() } override fun onCleared() { super.onCleared() - mxSession?.getKeysBackupService() - ?.removeListener(this) + session.getKeysBackupService().removeListener(this) } override fun onStateChange(newState: KeysBackupState) { @@ -84,7 +68,7 @@ class SignOutViewModel @Inject constructor() : ViewModel(), KeysBackupStateListe fun refreshRemoteStateIfNeeded() { if (keysBackupState.value == KeysBackupState.Disabled) { - mxSession?.getKeysBackupService()?.checkAndStartKeysBackup() + session.getKeysBackupService().checkAndStartKeysBackup() } } @@ -92,13 +76,9 @@ class SignOutViewModel @Inject constructor() : ViewModel(), KeysBackupStateListe /** * The backup check on logout flow has to be displayed if there are keys in the store, and the keys backup state is not Ready */ - fun doYouNeedToBeDisplayed(session: Session?): Boolean { - return session - ?.inboundGroupSessionsCount(false) - ?: 0 > 0 - && session - ?.getKeysBackupService() - ?.state != KeysBackupState.ReadyToBackUp + fun doYouNeedToBeDisplayed(session: Session): Boolean { + return session.inboundGroupSessionsCount(false) > 0 + && session.getKeysBackupService().state != KeysBackupState.ReadyToBackUp } } } From 50e2e6a82355055add1c3e363ae50eae8daef5a0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 17:23:21 +0100 Subject: [PATCH 15/16] Cleanup --- .../crypto/keysbackup/restore/KeysBackupRestoreActivity.kt | 1 - .../keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt | 1 - .../restore/KeysBackupRestoreFromPassphraseFragment.kt | 1 - .../keysbackup/restore/KeysBackupRestoreSuccessFragment.kt | 1 - .../features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt | 1 - .../crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt | 1 - .../crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt | 1 - .../crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt | 1 - .../features/crypto/verification/SASVerificationActivity.kt | 1 - .../crypto/verification/SASVerificationIncomingFragment.kt | 1 - .../crypto/verification/SASVerificationShortCodeFragment.kt | 1 - .../features/crypto/verification/SASVerificationStartFragment.kt | 1 - .../crypto/verification/SASVerificationVerifiedFragment.kt | 1 - .../src/main/java/im/vector/riotx/features/home/HomeActivity.kt | 1 - .../riotx/features/home/createdirect/CreateDirectRoomActivity.kt | 1 - .../home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt | 1 - .../home/createdirect/CreateDirectRoomKnownUsersFragment.kt | 1 - .../im/vector/riotx/features/home/group/GroupListFragment.kt | 1 - .../vector/riotx/features/home/room/detail/RoomDetailFragment.kt | 1 - .../room/detail/timeline/action/MessageActionsBottomSheet.kt | 1 - .../im/vector/riotx/features/home/room/list/RoomListFragment.kt | 1 - .../home/room/list/actions/RoomListQuickActionsBottomSheet.kt | 1 - .../im/vector/riotx/features/reactions/EmojiChooserFragment.kt | 1 - .../riotx/features/reactions/EmojiReactionPickerActivity.kt | 1 - .../vector/riotx/features/reactions/EmojiSearchResultFragment.kt | 1 - .../vector/riotx/features/roomdirectory/PublicRoomsFragment.kt | 1 - .../vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt | 1 - .../features/roomdirectory/createroom/CreateRoomActivity.kt | 1 - .../features/roomdirectory/createroom/CreateRoomFragment.kt | 1 - .../features/roomdirectory/picker/RoomDirectoryPickerFragment.kt | 1 - 30 files changed, 30 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt index 7befd54ccd..a12a43d06f 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt @@ -21,7 +21,6 @@ import android.content.Intent import androidx.appcompat.app.AlertDialog import androidx.fragment.app.FragmentManager import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import im.vector.riotx.R import im.vector.riotx.core.extensions.addFragmentToBackstack import im.vector.riotx.core.extensions.observeEvent diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt index 38bb08688d..730c92a319 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromKeyFragment.kt @@ -22,7 +22,6 @@ import android.text.Editable import android.view.inputmethod.EditorInfo import android.widget.EditText import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import butterknife.OnTextChanged diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt index e75163f45c..a9bdeee2d6 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreFromPassphraseFragment.kt @@ -27,7 +27,6 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.text.set import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import butterknife.OnTextChanged diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt index e938abf54f..0f681af737 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/restore/KeysBackupRestoreSuccessFragment.kt @@ -17,7 +17,6 @@ package im.vector.riotx.features.crypto.keysbackup.restore import android.os.Bundle import android.widget.TextView -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import im.vector.riotx.R diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt index 49149e5d98..b77620b15b 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt @@ -21,7 +21,6 @@ import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.fragment.app.FragmentManager import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import im.vector.matrix.android.api.MatrixCallback import im.vector.riotx.R import im.vector.riotx.core.dialogs.ExportKeysDialog diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt index efa10d8e84..a9bfbd83b0 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep1Fragment.kt @@ -21,7 +21,6 @@ import android.view.View import android.widget.Button import android.widget.TextView import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import im.vector.riotx.R diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt index 8e27c57af6..3522c5a752 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep2Fragment.kt @@ -22,7 +22,6 @@ import android.view.inputmethod.EditorInfo import android.widget.EditText import android.widget.ImageView import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import androidx.transition.TransitionManager import butterknife.BindView import butterknife.OnClick diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt index 41de7c9a8a..52470a47b2 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt @@ -24,7 +24,6 @@ import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import arrow.core.Try import butterknife.BindView import butterknife.OnClick diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt index 3e0ecbc39f..cb5391be3c 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationActivity.kt @@ -21,7 +21,6 @@ import android.content.Intent import android.view.MenuItem import androidx.appcompat.app.AlertDialog import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import im.vector.matrix.android.api.session.crypto.sas.CancelCode import im.vector.matrix.android.api.session.crypto.sas.IncomingSasVerificationTransaction import im.vector.matrix.android.api.session.crypto.sas.OutgoingSasVerificationRequest diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt index c5c697277e..88df53d0f3 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationIncomingFragment.kt @@ -19,7 +19,6 @@ import android.os.Bundle import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import im.vector.matrix.android.api.session.crypto.sas.IncomingSasVerificationTransaction diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt index c4b9d39f39..ec9a943449 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationShortCodeFragment.kt @@ -21,7 +21,6 @@ import android.widget.TextView import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import butterknife.BindView import butterknife.OnClick import im.vector.matrix.android.api.session.crypto.sas.IncomingSasVerificationTransaction diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt index 94539e8c68..d9c3b1d155 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationStartFragment.kt @@ -23,7 +23,6 @@ import android.widget.TextView import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import androidx.transition.TransitionManager import butterknife.BindView import butterknife.OnClick diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt index bc9bb71143..17beb21aff 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SASVerificationVerifiedFragment.kt @@ -16,7 +16,6 @@ package im.vector.riotx.features.crypto.verification import android.os.Bundle -import androidx.lifecycle.ViewModelProviders import butterknife.OnClick import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index c12f6fc32f..104aa301cb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -26,7 +26,6 @@ import androidx.core.view.GravityCompat import androidx.core.view.isVisible import androidx.drawerlayout.widget.DrawerLayout import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import im.vector.riotx.R import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.di.ScreenComponent diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt index c32fe36bbc..f7a68d4552 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomActivity.kt @@ -23,7 +23,6 @@ import android.content.Intent import android.os.Bundle import android.view.View import androidx.appcompat.app.AlertDialog -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.* import im.vector.matrix.android.api.session.room.failure.CreateRoomFailure import im.vector.riotx.R diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt index 07dccf1f80..fe43b89a52 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomDirectoryUsersFragment.kt @@ -19,7 +19,6 @@ package im.vector.riotx.features.home.createdirect import android.content.Context import android.os.Bundle import android.view.inputmethod.InputMethodManager -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.withState import com.jakewharton.rxbinding3.widget.textChanges diff --git a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt index 4e87d59f62..26265c8d56 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/createdirect/CreateDirectRoomKnownUsersFragment.kt @@ -23,7 +23,6 @@ import android.view.Menu import android.view.MenuItem import android.widget.ScrollView import androidx.core.view.size -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.withState import com.google.android.material.chip.Chip diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt index fbc9f5ca4c..bc39491773 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListFragment.kt @@ -17,7 +17,6 @@ package im.vector.riotx.features.home.group import android.os.Bundle -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.Incomplete import com.airbnb.mvrx.Success import com.airbnb.mvrx.fragmentViewModel diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 969bacaf6d..f085eca233 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -40,7 +40,6 @@ import androidx.core.content.ContextCompat import androidx.core.util.Pair import androidx.core.view.ViewCompat import androidx.core.view.forEach -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index a0bf43e6db..3f4171f733 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -19,7 +19,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import butterknife.BindView diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 9c575c5dd2..9c78b8688a 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -24,7 +24,6 @@ import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.view.isVisible -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.airbnb.mvrx.* diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index f1350a9b0b..3a85cf26fa 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -21,7 +21,6 @@ import android.os.Parcelable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import butterknife.BindView diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt index 4bfde22774..a32fa27bd5 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiChooserFragment.kt @@ -16,7 +16,6 @@ package im.vector.riotx.features.reactions import android.os.Bundle -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView import im.vector.riotx.R import im.vector.riotx.core.platform.VectorBaseFragment diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt index 966329e8d8..85e4eecf21 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiReactionPickerActivity.kt @@ -27,7 +27,6 @@ import android.widget.SearchView import androidx.appcompat.widget.Toolbar import androidx.core.view.isVisible import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.viewModel import com.google.android.material.tabs.TabLayout import com.jakewharton.rxbinding3.widget.queryTextChanges diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt index 2c97d9fee5..ca4f18fe83 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultFragment.kt @@ -16,7 +16,6 @@ package im.vector.riotx.features.reactions import android.os.Bundle -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt index cf60ba68a0..21eedb4b24 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/PublicRoomsFragment.kt @@ -19,7 +19,6 @@ package im.vector.riotx.features.roomdirectory import android.os.Bundle import android.view.MenuItem import android.view.View -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import com.airbnb.epoxy.EpoxyVisibilityTracker import com.airbnb.mvrx.activityViewModel diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt index 5ba20e0e53..e5ae0d4f54 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryActivity.kt @@ -19,7 +19,6 @@ package im.vector.riotx.features.roomdirectory import android.content.Context import android.content.Intent import android.os.Bundle -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.viewModel import im.vector.riotx.R import im.vector.riotx.core.di.ScreenComponent diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt index 64f3563e20..a83208c98a 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -20,7 +20,6 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.appcompat.widget.Toolbar -import androidx.lifecycle.ViewModelProviders import com.airbnb.mvrx.viewModel import im.vector.riotx.R import im.vector.riotx.core.extensions.addFragment diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt index cdf006a4e7..0399ea0b57 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -18,7 +18,6 @@ package im.vector.riotx.features.roomdirectory.createroom import android.os.Bundle import android.view.MenuItem -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import com.airbnb.mvrx.Success import com.airbnb.mvrx.activityViewModel diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index 11a08c6291..bad8486405 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -19,7 +19,6 @@ package im.vector.riotx.features.roomdirectory.picker import android.os.Bundle import android.view.MenuItem import android.view.View -import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.fragmentViewModel From 603b8fae45104bfd2733541b6083d6ed1adc6ba9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Nov 2019 17:30:04 +0100 Subject: [PATCH 16/16] Add missing binding --- .../main/java/im/vector/riotx/core/di/ViewModelModule.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt b/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt index d4e55e6080..cc1e4dabc7 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/ViewModelModule.kt @@ -32,6 +32,7 @@ import im.vector.riotx.features.home.createdirect.CreateDirectRoomSharedActionVi import im.vector.riotx.features.home.room.detail.timeline.action.MessageSharedActionViewModel import im.vector.riotx.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel import im.vector.riotx.features.reactions.EmojiChooserViewModel +import im.vector.riotx.features.roomdirectory.RoomDirectorySharedActionViewModel import im.vector.riotx.features.workers.signout.SignOutViewModel @Module @@ -106,4 +107,9 @@ interface ViewModelModule { @IntoMap @ViewModelKey(RoomListQuickActionsSharedActionViewModel::class) fun bindRoomListQuickActionsSharedActionViewModel(viewModel: RoomListQuickActionsSharedActionViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(RoomDirectorySharedActionViewModel::class) + fun bindRoomDirectorySharedActionViewModel(viewModel: RoomDirectorySharedActionViewModel): ViewModel }