Rename to Shared

This commit is contained in:
Benoit Marty 2019-11-08 12:09:01 +01:00
parent c8bc553caa
commit 82f639b91f
29 changed files with 181 additions and 181 deletions

View File

@ -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

View File

@ -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)
}

View File

@ -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()
}

View File

@ -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)
}
}

View File

@ -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>()

View File

@ -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()

View File

@ -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() {

View File

@ -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)
}
}

View File

@ -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()
}

View File

@ -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>()

View File

@ -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)
}
}

View File

@ -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()
}
}

View File

@ -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)
}

View File

@ -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 {

View File

@ -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>()

View File

@ -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)
}
}

View File

@ -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))
}
}
}

View File

@ -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)

View File

@ -82,7 +82,7 @@ class RoomListQuickActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), R
super.invalidate()
}
override fun didSelectMenuAction(quickAction: RoomListQuickAction) {
override fun didSelectMenuAction(quickAction: RoomListQuickSharedAction) {
actionsDispatcher.post(quickAction)
dismiss()
}

View File

@ -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)
}
}

View File

@ -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>()

View File

@ -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

View File

@ -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()
}

View File

@ -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()

View File

@ -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()
}

View File

@ -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>()

View File

@ -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()

View File

@ -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)

View File

@ -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() {