diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt index b2d4b377..5f268e61 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsBottomSheet.kt @@ -51,6 +51,9 @@ class MessageActionsBottomSheet : BaseMvRxBottomSheetDialog() { @BindView(R.id.bottom_sheet_message_preview_sender) lateinit var senderNameTextView: TextView + @BindView(R.id.bottom_sheet_message_preview_timestamp) + lateinit var messageTimestampText: TextView + @BindView(R.id.bottom_sheet_message_preview_body) lateinit var messageBodyTextView: TextView @@ -113,6 +116,7 @@ class MessageActionsBottomSheet : BaseMvRxBottomSheetDialog() { override fun invalidate() = withState(viewModel) { senderNameTextView.text = it.senderName messageBodyTextView.text = it.messageBody + messageTimestampText.text = it.ts GlideApp.with(this).clear(senderAvatarImageView) if (it.senderAvatarPath != null) { diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 7e08effe..3c6a0b65 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -6,15 +6,19 @@ import com.airbnb.mvrx.ViewModelContext 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.message.MessageContent +import im.vector.riotredesign.VectorApplication import im.vector.riotredesign.core.platform.VectorViewModel import org.koin.android.ext.android.get import timber.log.Timber +import java.text.SimpleDateFormat +import java.util.* data class MessageActionState( val userId: String, val senderName: String, val messageBody: String, + val ts: String?, val senderAvatarPath: String? = null) : MvRxState @@ -28,6 +32,8 @@ class MessageActionsViewModel(initialState: MessageActionState) : VectorViewMode // return MessageActionsViewModel(state/*,currentSession*/) // } + val dateFormat = SimpleDateFormat("EEE, d MMM yyyy HH:mm") + override fun initialState(viewModelContext: ViewModelContext): MessageActionState? { val currentSession = viewModelContext.activity.get() val parcel = viewModelContext.args as MessageActionsBottomSheet.ParcelableArgs @@ -36,11 +42,12 @@ class MessageActionsViewModel(initialState: MessageActionState) : VectorViewMode val event = currentSession.getRoom(parcel.roomId)?.getTimeLineEvent(parcel.eventId) return if (event != null) { val messageContent: MessageContent? = event.root.content.toModel() - + val originTs = event.root.originServerTs MessageActionState( event.root.sender ?: "", parcel.informationData.memberName.toString(), messageContent?.body ?: "", + dateFormat.format(Date(originTs ?: 0)), currentSession.contentUrlResolver().resolveFullSize(parcel.informationData.avatarUrl) ) } else { 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 6c975809..260d456c 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 @@ -60,7 +60,7 @@ class MessageMenuViewModel(initialState: MessageMenuState) : VectorViewModel + + diff --git a/vector/src/main/res/drawable/ic_permalink.xml b/vector/src/main/res/drawable/ic_permalink.xml index f8c74537..7c1aae16 100644 --- a/vector/src/main/res/drawable/ic_permalink.xml +++ b/vector/src/main/res/drawable/ic_permalink.xml @@ -1,24 +1,22 @@ + android:width="22dp" + android:height="22dp" + android:viewportWidth="22" + android:viewportHeight="22"> + android:strokeColor="#9E9E9E" + android:strokeLineCap="round"/> - + android:strokeColor="#9E9E9E" + android:strokeLineCap="round"/> diff --git a/vector/src/main/res/drawable/ic_quote.xml b/vector/src/main/res/drawable/ic_quote.xml new file mode 100644 index 00000000..0689651f --- /dev/null +++ b/vector/src/main/res/drawable/ic_quote.xml @@ -0,0 +1,14 @@ + + + diff --git a/vector/src/main/res/drawable/ic_view_source.xml b/vector/src/main/res/drawable/ic_view_source.xml index f139832b..c78a493d 100644 --- a/vector/src/main/res/drawable/ic_view_source.xml +++ b/vector/src/main/res/drawable/ic_view_source.xml @@ -1,24 +1,14 @@ + android:viewportHeight="14"> - - + android:strokeColor="#9E9E9E" + android:strokeLineCap="round"/> diff --git a/vector/src/main/res/layout/bottom_sheet_message_actions.xml b/vector/src/main/res/layout/bottom_sheet_message_actions.xml index f148068f..967bbe42 100644 --- a/vector/src/main/res/layout/bottom_sheet_message_actions.xml +++ b/vector/src/main/res/layout/bottom_sheet_message_actions.xml @@ -22,8 +22,8 @@ android:layout_height="60dp" android:layout_margin="@dimen/layout_horizontal_margin" android:adjustViewBounds="true" - android:contentDescription="@string/avatar" android:background="@drawable/circle" + android:contentDescription="@string/avatar" android:scaleType="centerCrop" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -37,8 +37,8 @@ android:layout_gravity="start" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" + android:layout_marginEnd="@dimen/layout_horizontal_margin" + android:layout_marginRight="@dimen/layout_horizontal_margin" android:ellipsize="end" android:fontFamily="sans-serif-bold" android:singleLine="true" @@ -53,24 +53,37 @@ android:id="@+id/bottom_sheet_message_preview_body" android:layout_width="0dp" - android:layout_height="0dp" + android:layout_height="wrap_content" android:layout_gravity="start" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" - android:layout_marginBottom="@dimen/layout_vertical_margin" + android:layout_marginEnd="@dimen/layout_horizontal_margin" + android:layout_marginRight="@dimen/layout_horizontal_margin" + android:layout_marginBottom="4dp" android:ellipsize="end" - android:maxLines="2" + android:maxLines="3" android:textColor="?android:textColorSecondary" android:textIsSelectable="false" android:textSize="14sp" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toTopOf="@id/bottom_sheet_message_preview_timestamp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/bottom_sheet_message_preview_avatar" app:layout_constraintTop_toBottomOf="@id/bottom_sheet_message_preview_sender" - tools:text="Quis harum id autem cumque consequatur laboriosam aliquam sed. Sint accusamus dignissimos nobis ullam earum debitis aspernatur. " /> + tools:text="Quis harum id autem cumque consequatur laboriosam aliquam sed. Sint accusamus dignissimos nobis ullam earum debitis aspernatur. Sint accusamus dignissimos nobis ullam earum debitis aspernatur. " /> + - - - - - - - - - - diff --git a/vector/src/main/res/layout/item_timeline_event_image_video_message.xml b/vector/src/main/res/layout/item_timeline_event_image_video_message.xml index b1da5882..17dd4f97 100644 --- a/vector/src/main/res/layout/item_timeline_event_image_video_message.xml +++ b/vector/src/main/res/layout/item_timeline_event_image_video_message.xml @@ -25,8 +25,8 @@