diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt index 6b51f78881..f261da2da9 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -29,7 +29,6 @@ import com.airbnb.mvrx.Success import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState -import im.vector.matrix.android.api.permalinks.PermalinkFactory import im.vector.matrix.android.api.util.MatrixItem import im.vector.riotx.R import im.vector.riotx.core.animations.AppBarStateChangeListener @@ -99,7 +98,7 @@ class RoomMemberProfileFragment @Inject constructor( is RoomMemberProfileViewEvents.Failure -> showFailure(it.throwable) is RoomMemberProfileViewEvents.OnIgnoreActionSuccess -> Unit is RoomMemberProfileViewEvents.StartVerification -> handleStartVerification(it) - is RoomMemberProfileViewEvents.ShareRoomMemberProfile -> handleShareRoomMemberProfile() + is RoomMemberProfileViewEvents.ShareRoomMemberProfile -> handleShareRoomMemberProfile(it.permalink) }.exhaustive } } @@ -225,9 +224,7 @@ class RoomMemberProfileFragment @Inject constructor( vectorBaseActivity.notImplemented("Mention") } - private fun handleShareRoomMemberProfile() = withState(viewModel) { - PermalinkFactory.createPermalink(it.userId)?.let { permalink -> - startSharePlainTextIntent(fragment = this, chooserTitle = null, text = permalink) - } + private fun handleShareRoomMemberProfile(permalink: String) = withState(viewModel) { + startSharePlainTextIntent(fragment = this, chooserTitle = null, text = permalink) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewEvents.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewEvents.kt index d590040180..5d8757a337 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewEvents.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewEvents.kt @@ -32,5 +32,5 @@ sealed class RoomMemberProfileViewEvents : VectorViewEvents { val canCrossSign: Boolean ) : RoomMemberProfileViewEvents() - object ShareRoomMemberProfile : RoomMemberProfileViewEvents() + data class ShareRoomMemberProfile(val permalink: String) : RoomMemberProfileViewEvents() } diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt index eaad2c52a2..e4fbe85806 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt @@ -26,6 +26,7 @@ import com.airbnb.mvrx.ViewModelContext import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.MatrixCallback +import im.vector.matrix.android.api.permalinks.PermalinkFactory import im.vector.matrix.android.api.query.QueryStringValue import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.events.model.EventType @@ -236,7 +237,9 @@ class RoomMemberProfileViewModel @AssistedInject constructor(@Assisted private v } } - private fun handleShareRoomMemberProfile() { - _viewEvents.post(RoomMemberProfileViewEvents.ShareRoomMemberProfile) + private fun handleShareRoomMemberProfile() = withState { state -> + PermalinkFactory.createPermalink(state.userId)?.let { permalink -> + _viewEvents.post(RoomMemberProfileViewEvents.ShareRoomMemberProfile(permalink)) + } } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileFragment.kt index ec0a8e51e1..2b2a879e7e 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileFragment.kt @@ -26,7 +26,6 @@ import androidx.core.view.isVisible import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState -import im.vector.matrix.android.api.permalinks.PermalinkFactory import im.vector.matrix.android.api.session.room.notification.RoomNotificationState import im.vector.matrix.android.api.util.toMatrixItem import im.vector.riotx.R @@ -94,7 +93,7 @@ class RoomProfileFragment @Inject constructor( is RoomProfileViewEvents.Loading -> showLoading(it.message) is RoomProfileViewEvents.Failure -> showFailure(it.throwable) is RoomProfileViewEvents.OnLeaveRoomSuccess -> onLeaveRoom() - is RoomProfileViewEvents.ShareRoomProfile -> onShareRoomProfile() + is RoomProfileViewEvents.ShareRoomProfile -> onShareRoomProfile(it.permalink) }.exhaustive } roomListQuickActionsSharedActionViewModel @@ -204,9 +203,7 @@ class RoomProfileFragment @Inject constructor( .show() } - private fun onShareRoomProfile() { - PermalinkFactory.createPermalink(roomProfileArgs.roomId)?.let { permalink -> - startSharePlainTextIntent(fragment = this, chooserTitle = null, text = permalink) - } + private fun onShareRoomProfile(permalink: String) { + startSharePlainTextIntent(fragment = this, chooserTitle = null, text = permalink) } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewEvents.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewEvents.kt index 50e4775252..7a08a08126 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewEvents.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewEvents.kt @@ -26,5 +26,5 @@ sealed class RoomProfileViewEvents : VectorViewEvents { data class Failure(val throwable: Throwable) : RoomProfileViewEvents() object OnLeaveRoomSuccess : RoomProfileViewEvents() - object ShareRoomProfile : RoomProfileViewEvents() + data class ShareRoomProfile(val permalink: String) : RoomProfileViewEvents() } diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewModel.kt index e291556bd4..261e5f04d0 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/RoomProfileViewModel.kt @@ -23,6 +23,7 @@ import com.airbnb.mvrx.ViewModelContext import com.squareup.inject.assisted.Assisted import com.squareup.inject.assisted.AssistedInject import im.vector.matrix.android.api.MatrixCallback +import im.vector.matrix.android.api.permalinks.PermalinkFactory import im.vector.matrix.android.api.session.Session import im.vector.matrix.rx.rx import im.vector.matrix.rx.unwrap @@ -90,7 +91,9 @@ class RoomProfileViewModel @AssistedInject constructor(@Assisted initialState: R }) } - private fun handleShareRoomProfile() { - _viewEvents.post(RoomProfileViewEvents.ShareRoomProfile) + private fun handleShareRoomProfile() = withState { state -> + PermalinkFactory.createPermalink(state.roomId)?.let { permalink -> + _viewEvents.post(RoomProfileViewEvents.ShareRoomProfile(permalink)) + } } } diff --git a/vector/src/main/res/drawable/ic_material_share.xml b/vector/src/main/res/drawable/ic_material_share.xml index fd72fa1c6d..5ecbfe3388 100644 --- a/vector/src/main/res/drawable/ic_material_share.xml +++ b/vector/src/main/res/drawable/ic_material_share.xml @@ -1,5 +1,24 @@ - + + + + + diff --git a/vector/src/main/res/layout/fragment_matrix_profile.xml b/vector/src/main/res/layout/fragment_matrix_profile.xml index cf31a6fe60..6e3eca06bf 100644 --- a/vector/src/main/res/layout/fragment_matrix_profile.xml +++ b/vector/src/main/res/layout/fragment_matrix_profile.xml @@ -15,7 +15,7 @@ \ No newline at end of file diff --git a/vector/src/main/res/menu/vector_room_profile.xml b/vector/src/main/res/menu/vector_room_profile.xml index 637cb9ef11..f6331018f0 100644 --- a/vector/src/main/res/menu/vector_room_profile.xml +++ b/vector/src/main/res/menu/vector_room_profile.xml @@ -5,6 +5,6 @@ android:id="@+id/roomProfileShareAction" android:icon="@drawable/ic_material_share" android:title="@string/share" - app:iconTint="@color/riotx_accent" + app:iconTint="?attr/colorAccent" app:showAsAction="ifRoom" /> \ No newline at end of file diff --git a/vector/src/main/res/values/styles_riot.xml b/vector/src/main/res/values/styles_riot.xml index 76d1988f61..c4b42fe4fe 100644 --- a/vector/src/main/res/values/styles_riot.xml +++ b/vector/src/main/res/values/styles_riot.xml @@ -30,6 +30,10 @@ "sans-serif" + +