Rename to Shared
This commit is contained in:
parent
c8bc553caa
commit
82f639b91f
|
@ -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<T : VectorAction>(private val store: MutableDataSource<T> = PublishDataSource())
|
||||
open class VectorSharedActionViewModel<T : VectorSharedAction>(private val store: MutableDataSource<T> = PublishDataSource())
|
||||
: ViewModel(), MutableDataSource<T> by store
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
|
@ -54,7 +54,7 @@ class HomeDetailFragment @Inject constructor(
|
|||
private val unreadCounterBadgeViews = arrayListOf<UnreadCounterBadgeView>()
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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<HomeActivityAction>()
|
||||
class HomeSharedActionViewModel : VectorSharedActionViewModel<HomeActivitySharedAction>()
|
|
@ -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()
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
|
@ -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<CreateDirectRoomAction>()
|
||||
class CreateDirectRoomSharedActionViewModel : VectorSharedActionViewModel<CreateDirectRoomSharedAction>()
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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<TextView>(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<TextView>(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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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<EventAction>()
|
||||
class MessageActionsDispatcher : VectorSharedActionViewModel<EventSharedAction>()
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ data class MessageActionState(
|
|||
// For quick reactions
|
||||
val quickStates: Async<List<ToggleState>> = Uninitialized,
|
||||
// For actions
|
||||
val actions: Async<List<EventAction>> = Uninitialized,
|
||||
val actions: Async<List<EventSharedAction>> = Uninitialized,
|
||||
val expendedReportContentMenu: Boolean = false
|
||||
) : MvRxState {
|
||||
|
||||
|
@ -184,63 +184,63 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
|
|||
}
|
||||
}
|
||||
|
||||
private fun actionsForEvent(optionalEvent: Optional<TimelineEvent>): List<EventAction> {
|
||||
private fun actionsForEvent(optionalEvent: Optional<TimelineEvent>): List<EventSharedAction> {
|
||||
val event = optionalEvent.getOrNull() ?: return emptyList()
|
||||
|
||||
val messageContent: MessageContent? = event.annotations?.editSummary?.aggregatedContent.toModel()
|
||||
?: event.root.getClearContent().toModel()
|
||||
val type = messageContent?.type
|
||||
|
||||
return arrayListOf<EventAction>().apply {
|
||||
return arrayListOf<EventSharedAction>().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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -82,7 +82,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R
|
|||
super.invalidate()
|
||||
}
|
||||
|
||||
override fun didSelectMenuAction(quickAction: RoomListQuickAction) {
|
||||
override fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) {
|
||||
actionsDispatcher.post(quickAction)
|
||||
dismiss()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<RoomListQuickAction>()
|
||||
class RoomListQuickActionsStore : VectorSharedActionViewModel<RoomListQuickSharedAction>()
|
||||
|
|
|
@ -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
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
}
|
|
@ -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<RoomDirectoryAction>()
|
||||
class RoomDirectorySharedActionViewModel : VectorSharedActionViewModel<RoomDirectorySharedAction>()
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue