From 04576ba7fdef0fb7425c3512cdb5f5312ce9d203 Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 6 Jun 2019 12:26:38 +0200 Subject: [PATCH] Permalink message action + Fix crash on injection of navigator --- .../vector/riotredesign/core/di/AppModule.kt | 5 ++-- .../features/home/HomeDrawerFragment.kt | 2 +- .../features/home/HomeNavigator.kt | 2 +- .../home/room/detail/RoomDetailFragment.kt | 18 ++++++++---- .../timeline/action/MessageMenuViewModel.kt | 6 ++-- .../home/room/list/RoomListFragment.kt | 4 +-- .../features/navigation/DefaultNavigator.kt | 28 +++++++++---------- .../features/navigation/Navigator.kt | 9 +++--- .../roomdirectory/PublicRoomsFragment.kt | 4 +-- .../RoomPreviewNoPreviewFragment.kt | 2 +- 10 files changed, 44 insertions(+), 36 deletions(-) diff --git a/vector/src/main/java/im/vector/riotredesign/core/di/AppModule.kt b/vector/src/main/java/im/vector/riotredesign/core/di/AppModule.kt index 542c0953..28ae4e1a 100644 --- a/vector/src/main/java/im/vector/riotredesign/core/di/AppModule.kt +++ b/vector/src/main/java/im/vector/riotredesign/core/di/AppModule.kt @@ -18,7 +18,6 @@ package im.vector.riotredesign.core.di import android.content.Context import android.content.Context.MODE_PRIVATE -import androidx.fragment.app.Fragment import im.vector.matrix.android.api.Matrix import im.vector.riotredesign.EmojiCompatFontProvider import im.vector.riotredesign.core.error.ErrorFormatter @@ -87,8 +86,8 @@ class AppModule(private val context: Context) { Matrix.getInstance().currentSession!! } - factory { (fragment: Fragment) -> - DefaultNavigator(fragment) as Navigator + factory { + DefaultNavigator() as Navigator } single { diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/home/HomeDrawerFragment.kt index ff08720d..97baa539 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/HomeDrawerFragment.kt @@ -54,7 +54,7 @@ class HomeDrawerFragment : VectorBaseFragment() { } } homeDrawerHeaderSettingsView.setOnClickListener { - navigator.openSettings() + navigator.openSettings(requireActivity()) } // Debug menu diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/HomeNavigator.kt b/vector/src/main/java/im/vector/riotredesign/features/home/HomeNavigator.kt index 8d29c0ab..e46fd7f5 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/HomeNavigator.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/HomeNavigator.kt @@ -48,7 +48,7 @@ class HomeNavigator { activity?.let { //TODO enable eventId permalink. It doesn't work enough at the moment. it.drawerLayout?.closeDrawer(GravityCompat.START) - navigator.openRoom(roomId) + navigator.openRoom(roomId, it) } } diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/RoomDetailFragment.kt index 3d3667b3..1da6ed9d 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/RoomDetailFragment.kt @@ -53,6 +53,7 @@ import com.jaiselrahman.filepicker.model.MediaFile import com.otaliastudios.autocomplete.Autocomplete import com.otaliastudios.autocomplete.AutocompleteCallback import com.otaliastudios.autocomplete.CharPolicy +import im.vector.matrix.android.api.permalinks.PermalinkFactory import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.events.model.toModel import im.vector.matrix.android.api.session.room.model.EditAggregatedSummary @@ -622,16 +623,16 @@ class RoomDetailFragment : startActivityForResult(EmojiReactionPickerActivity.intent(requireContext(), eventId), REACTION_SELECT_REQUEST_CODE) } MessageMenuViewModel.ACTION_VIEW_REACTIONS -> { - val messageInformationData = actionData.data as? MessageInformationData ?: return - ViewReactionBottomSheet.newInstance(roomDetailArgs.roomId,messageInformationData) + val messageInformationData = actionData.data as? MessageInformationData + ?: return + ViewReactionBottomSheet.newInstance(roomDetailArgs.roomId, messageInformationData) .show(requireActivity().supportFragmentManager, "DISPLAY_REACTIONS") } MessageMenuViewModel.ACTION_COPY -> { //I need info about the current selected message :/ copyToClipboard(requireContext(), actionData.data?.toString() ?: "", false) - val snack = Snackbar.make(view!!, requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) - snack.view.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.notification_accent_color)) - snack.show() + val msg = requireContext().getString(R.string.copied_to_clipboard) + showSnackWithMessage(msg, Snackbar.LENGTH_SHORT) } MessageMenuViewModel.ACTION_DELETE -> { val eventId = actionData.data?.toString() ?: return @@ -698,6 +699,13 @@ class RoomDetailFragment : val eventId = actionData.data.toString() roomDetailViewModel.process(RoomDetailActions.EnterReplyMode(eventId)) } + MessageMenuViewModel.ACTION_COPY_PERMALINK -> { + val eventId = actionData.data.toString() + val permalink = PermalinkFactory.createPermalink(roomDetailArgs.roomId, eventId) + copyToClipboard(requireContext(), permalink, false) + showSnackWithMessage(requireContext().getString(R.string.copied_to_clipboard), Snackbar.LENGTH_SHORT) + + } else -> { Toast.makeText(context, "Action ${actionData.actionId} not implemented", Toast.LENGTH_LONG).show() } diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageMenuViewModel.kt b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageMenuViewModel.kt index 6a77c970..ca422f72 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageMenuViewModel.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageMenuViewModel.kt @@ -64,7 +64,7 @@ class MessageMenuViewModel(initialState: MessageMenuState) : VectorViewModel().apply { if (event.sendState == SendState.SENDING) { @@ -123,7 +123,7 @@ class MessageMenuViewModel(initialState: MessageMenuState) : VectorViewModel { - navigator.openRoom(publicRoom.roomId) + navigator.openRoom(publicRoom.roomId, requireActivity()) } JoinState.NOT_JOINED, JoinState.JOINING_ERROR -> { // ROOM PREVIEW - navigator.openRoomPreview(publicRoom) + navigator.openRoomPreview(publicRoom, requireActivity()) } else -> { Snackbar.make(publicRoomsCoordinator, getString(R.string.please_wait), Snackbar.LENGTH_SHORT) diff --git a/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt index 07499555..3f389a46 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -108,7 +108,7 @@ class RoomPreviewNoPreviewFragment : VectorBaseFragment() { // Quit this screen requireActivity().finish() // Open room - navigator.openRoom(roomPreviewData.roomId) + navigator.openRoom(roomPreviewData.roomId, requireActivity()) } } } \ No newline at end of file