Merge branch 'develop' into feature-oled-black
This commit is contained in:
commit
f7cfa6cda8
428 changed files with 5680 additions and 2018 deletions
|
|
@ -432,6 +432,10 @@ class MessagesFlowNode(
|
|||
override fun handleForwardEventClick(eventId: EventId) {
|
||||
backstack.push(NavTarget.ForwardEvent(eventId = eventId, fromPinnedEvents = true))
|
||||
}
|
||||
|
||||
override fun navigateToThread(threadRootId: ThreadId) {
|
||||
backstack.push(NavTarget.Thread(threadRootId, null))
|
||||
}
|
||||
}
|
||||
createNode<PinnedMessagesListNode>(buildContext, plugins = listOf(callback))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -250,12 +250,11 @@ class MessagesPresenter(
|
|||
is MessagesEvent.OnUserClicked -> {
|
||||
roomMemberModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.user))
|
||||
}
|
||||
is MessagesEvent.MarkAsFullyReadAndExit -> coroutineScope.launch {
|
||||
if (!markingAsReadAndExiting.getAndSet(true)) {
|
||||
is MessagesEvent.MarkAsFullyReadAndExit -> if (!markingAsReadAndExiting.getAndSet(true)) {
|
||||
coroutineScope.launch {
|
||||
val latestEventId = room.liveTimeline.getLatestEventId().getOrElse {
|
||||
Timber.w(it, "Failed to get latest event id to mark as fully read")
|
||||
navigator.close()
|
||||
return@launch
|
||||
null
|
||||
}
|
||||
latestEventId?.let { eventId ->
|
||||
sessionCoroutineScope.launch {
|
||||
|
|
@ -263,7 +262,6 @@ class MessagesPresenter(
|
|||
}
|
||||
}
|
||||
navigator.close()
|
||||
markingAsReadAndExiting.set(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ package io.element.android.features.messages.impl.pinned.list
|
|||
|
||||
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
|
||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
|
||||
sealed interface PinnedMessagesListEvent {
|
||||
data class HandleAction(val action: TimelineItemAction, val event: TimelineItem.Event) : PinnedMessagesListEvent
|
||||
data class OpenThread(val threadRootId: ThreadId) : PinnedMessagesListEvent
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,10 +9,12 @@
|
|||
package io.element.android.features.messages.impl.pinned.list
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
|
||||
|
||||
interface PinnedMessagesListNavigator {
|
||||
fun viewInTimeline(eventId: EventId)
|
||||
fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo)
|
||||
fun forwardEvent(eventId: EventId)
|
||||
fun navigateToThread(threadRootId: ThreadId)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import io.element.android.libraries.androidutils.system.openUrlInExternalApp
|
|||
import io.element.android.libraries.architecture.callback
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.permalink.PermalinkData
|
||||
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
|
||||
|
|
@ -55,6 +56,7 @@ class PinnedMessagesListNode(
|
|||
fun handlePermalinkClick(data: PermalinkData.RoomLink)
|
||||
fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo)
|
||||
fun handleForwardEventClick(eventId: EventId)
|
||||
fun navigateToThread(threadRootId: ThreadId)
|
||||
}
|
||||
|
||||
private val callback: Callback = callback()
|
||||
|
|
@ -95,6 +97,10 @@ class PinnedMessagesListNode(
|
|||
callback.handleForwardEventClick(eventId)
|
||||
}
|
||||
|
||||
override fun navigateToThread(threadRootId: ThreadId) {
|
||||
callback.navigateToThread(threadRootId)
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun View(modifier: Modifier) {
|
||||
CompositionLocalProvider(
|
||||
|
|
|
|||
|
|
@ -137,6 +137,7 @@ class PinnedMessagesListPresenter(
|
|||
fun handleEvent(event: PinnedMessagesListEvent) {
|
||||
when (event) {
|
||||
is PinnedMessagesListEvent.HandleAction -> sessionCoroutineScope.handleTimelineAction(event.action, event.event)
|
||||
is PinnedMessagesListEvent.OpenThread -> navigator.navigateToThread(event.threadRootId)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import io.element.android.features.messages.impl.actionlist.ActionListView
|
|||
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
|
||||
import io.element.android.features.messages.impl.link.LinkEvent
|
||||
import io.element.android.features.messages.impl.link.LinkView
|
||||
import io.element.android.features.messages.impl.timeline.TimelineEvent
|
||||
import io.element.android.features.messages.impl.timeline.components.TimelineItemRow
|
||||
import io.element.android.features.messages.impl.timeline.components.event.TimelineItemEventContentView
|
||||
import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData
|
||||
|
|
@ -235,7 +236,12 @@ private fun PinnedMessagesListLoaded(
|
|||
onReadReceiptClick = {},
|
||||
onSwipeToReply = {},
|
||||
onJoinCallClick = {},
|
||||
eventSink = {},
|
||||
eventSink = { timelineItemEvent ->
|
||||
when (timelineItemEvent) {
|
||||
is TimelineEvent.OpenThread -> state.eventSink(PinnedMessagesListEvent.OpenThread(timelineItemEvent.threadRootEventId))
|
||||
else -> Unit
|
||||
}
|
||||
},
|
||||
eventContentView = { event, contentModifier, onContentLayoutChange ->
|
||||
TimelineItemEventContentViewWrapper(
|
||||
event = event,
|
||||
|
|
|
|||
|
|
@ -747,7 +747,7 @@ private fun MessageEventBubbleContent(
|
|||
}
|
||||
Box(
|
||||
modifier = talkbackCompatModifier
|
||||
.border(1.dp, ElementTheme.colors.borderInteractiveSecondary, RoundedCornerShape(6.dp))
|
||||
.border(1.dp, ElementTheme.colors.separatorPrimary, RoundedCornerShape(6.dp))
|
||||
.background(ElementTheme.colors.bgCanvasDefault, RoundedCornerShape(6.dp))
|
||||
.padding(4.dp)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<string name="screen_room_attachment_source_camera_video">"Registra video"</string>
|
||||
<string name="screen_room_attachment_source_files">"Allegato"</string>
|
||||
<string name="screen_room_attachment_source_gallery">"Libreria di foto e video"</string>
|
||||
<string name="screen_room_attachment_source_location">"Posizione"</string>
|
||||
<string name="screen_room_attachment_source_location">"Condividi posizione"</string>
|
||||
<string name="screen_room_attachment_source_poll">"Sondaggio"</string>
|
||||
<string name="screen_room_attachment_text_formatting">"Formattazione del testo"</string>
|
||||
<string name="screen_room_encrypted_history_banner">"La cronologia dei messaggi non è attualmente disponibile."</string>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="crypto_event_authenticity_mismatched_sender">"イベントの送信者と、使用された端末の所有者が一致しません。"</string>
|
||||
<string name="crypto_event_authenticity_not_guaranteed">"この暗号化されたメッセージの真正性を、この端末では保証できません。"</string>
|
||||
<string name="crypto_event_authenticity_previously_verified">"以前に検証されたユーザーにより暗号化されています。"</string>
|
||||
<string name="crypto_event_authenticity_sent_in_clear">"暗号化されていません。"</string>
|
||||
<string name="crypto_event_authenticity_unknown_device">"削除されたまたは不明な端末により暗号化されています。"</string>
|
||||
<string name="crypto_event_authenticity_unsigned_device">"所有者に検証されていない端末により暗号化されています。"</string>
|
||||
<string name="crypto_event_authenticity_unverified_identity">"未検証のユーザーにより暗号化されています。"</string>
|
||||
<string name="emoji_picker_category_activity">"アクティビティ"</string>
|
||||
<string name="emoji_picker_category_flags">"旗"</string>
|
||||
<string name="emoji_picker_category_foods">"食べ物"</string>
|
||||
<string name="emoji_picker_category_nature">"動物・自然"</string>
|
||||
<string name="emoji_picker_category_objects">"物"</string>
|
||||
<string name="emoji_picker_category_people">"顔・人"</string>
|
||||
<string name="emoji_picker_category_places">"旅・場所"</string>
|
||||
<string name="emoji_picker_category_recent">"最近使用"</string>
|
||||
<string name="emoji_picker_category_symbols">"記号"</string>
|
||||
<string name="screen_media_upload_preview_caption_warning">"古いアプリケーションを使用しているユーザーはキャプションを見られない可能性があります。"</string>
|
||||
<string name="screen_media_upload_preview_change_video_quality_prompt">"動画のアップロード画質を変更するにはタップしてください"</string>
|
||||
<string name="screen_media_upload_preview_error_could_not_be_uploaded">"ファイルをアップロードに失敗しました。"</string>
|
||||
<string name="screen_media_upload_preview_error_failed_processing">"ファイルの処理に失敗しました。再試行してください。"</string>
|
||||
<string name="screen_media_upload_preview_error_failed_sending">"ファイルのアップロードに失敗しました。再試行してください。"</string>
|
||||
<string name="screen_media_upload_preview_error_too_large_message">"許容されている最大サイズは %1$s です。"</string>
|
||||
<string name="screen_media_upload_preview_error_too_large_title">"ファイルが大きすぎるためアップロードできません"</string>
|
||||
<string name="screen_media_upload_preview_item_count">"個数 %1$d / %2$d"</string>
|
||||
<string name="screen_media_upload_preview_optimize_image_quality_title">"画像の品質を最適化"</string>
|
||||
<string name="screen_media_upload_preview_processing">"処理中…"</string>
|
||||
<string name="screen_report_content_block_user">"ユーザーをブロック"</string>
|
||||
<string name="screen_report_content_block_user_hint">"このユーザーからのメッセージをすべて非表示にする場合はチェックしてください。"</string>
|
||||
<string name="screen_report_content_explanation">"このメッセージはホームサーバーの管理者に報告されます。暗号化されたメッセージを確認することはできません。"</string>
|
||||
<string name="screen_report_content_hint">"このコンテンツを通報する理由"</string>
|
||||
<string name="screen_room_attachment_source_camera">"カメラ"</string>
|
||||
<string name="screen_room_attachment_source_camera_photo">"写真を撮影"</string>
|
||||
<string name="screen_room_attachment_source_camera_video">"動画を撮影"</string>
|
||||
<string name="screen_room_attachment_source_files">"添付ファイル"</string>
|
||||
<string name="screen_room_attachment_source_gallery">"アルバムの写真・動画"</string>
|
||||
<string name="screen_room_attachment_source_location">"場所を共有"</string>
|
||||
<string name="screen_room_attachment_source_poll">"投票"</string>
|
||||
<string name="screen_room_attachment_text_formatting">"書式設定"</string>
|
||||
<string name="screen_room_encrypted_history_banner">"過去のメッセージを現在表示できません。"</string>
|
||||
<string name="screen_room_encrypted_history_banner_unverified">"このルームの過去のメッセージを表示できません。確認するには、この端末を検証してください。"</string>
|
||||
<string name="screen_room_invite_again_alert_message">"招待し直しますか?"</string>
|
||||
<string name="screen_room_invite_again_alert_title">"このチャットにはあなた一人だけです"</string>
|
||||
<string name="screen_room_mentions_at_room_subtitle">"ルーム全体に通知"</string>
|
||||
<string name="screen_room_mentions_at_room_title">"全員"</string>
|
||||
<string name="screen_room_retry_send_menu_send_again_action">"再送信する"</string>
|
||||
<string name="screen_room_retry_send_menu_title">"メッセージの送信に失敗しました"</string>
|
||||
<string name="screen_room_timeline_add_reaction">"リアクションを追加"</string>
|
||||
<string name="screen_room_timeline_beginning_of_room">"%1$s の始まりです。"</string>
|
||||
<string name="screen_room_timeline_beginning_of_room_no_name">"ここが会話の開始点です。"</string>
|
||||
<string name="screen_room_timeline_legacy_call">"非対応の着信です。新しい Element X を使用できないか確認してください。"</string>
|
||||
<string name="screen_room_timeline_less_reactions">"一部を表示"</string>
|
||||
<string name="screen_room_timeline_message_copied">"メッセージをコピーしました"</string>
|
||||
<string name="screen_room_timeline_no_permission_to_post">"このルームに発言する権限がありません"</string>
|
||||
<plurals name="screen_room_timeline_reaction_a11y">
|
||||
<item quantity="other">"%1$d 人の反応 %2$s"</item>
|
||||
</plurals>
|
||||
<plurals name="screen_room_timeline_reaction_including_you_a11y">
|
||||
<item quantity="other">"あなたと %1$d 人の反応 %2$s"</item>
|
||||
</plurals>
|
||||
<string name="screen_room_timeline_reaction_you_a11y">"%1$s と反応"</string>
|
||||
<string name="screen_room_timeline_reactions_show_less">"一部を表示"</string>
|
||||
<string name="screen_room_timeline_reactions_show_more">"さらに表示"</string>
|
||||
<string name="screen_room_timeline_reactions_show_reactions_summary">"リアクションのまとめを表示"</string>
|
||||
<string name="screen_room_timeline_read_marker_title">"新着"</string>
|
||||
<plurals name="screen_room_timeline_state_changes">
|
||||
<item quantity="other">"%1$d 個のルーム更新点"</item>
|
||||
</plurals>
|
||||
<string name="screen_room_timeline_tombstoned_room_action">"新しいルームに移動"</string>
|
||||
<string name="screen_room_timeline_tombstoned_room_message">"このルームは移行して非アクティブ状態です"</string>
|
||||
<string name="screen_room_timeline_upgraded_room_action">"古いメッセージを表示"</string>
|
||||
<string name="screen_room_timeline_upgraded_room_message">"このルームは他のルームからの移行先です"</string>
|
||||
<plurals name="screen_room_typing_many_members">
|
||||
<item quantity="other">"%1$s, %2$s 他 %3$d 人"</item>
|
||||
</plurals>
|
||||
<plurals name="screen_room_typing_notification">
|
||||
<item quantity="other">"%1$s が入力中"</item>
|
||||
</plurals>
|
||||
<string name="screen_room_typing_two_members">"%1$s と %2$s"</string>
|
||||
</resources>
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
<string name="screen_room_attachment_source_camera_video">"Spela in video"</string>
|
||||
<string name="screen_room_attachment_source_files">"Bilaga"</string>
|
||||
<string name="screen_room_attachment_source_gallery">"Foto- och videobibliotek"</string>
|
||||
<string name="screen_room_attachment_source_location">"Plats"</string>
|
||||
<string name="screen_room_attachment_source_location">"Dela plats"</string>
|
||||
<string name="screen_room_attachment_source_poll">"Omröstning"</string>
|
||||
<string name="screen_room_attachment_text_formatting">"Textformatering"</string>
|
||||
<string name="screen_room_encrypted_history_banner">"Meddelandehistoriken är för närvarande otillgänglig."</string>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="crypto_event_authenticity_mismatched_sender">"Người gửi sự kiện không khớp với chủ sở hữu của thiết bị đã gửi nó."</string>
|
||||
<string name="crypto_event_authenticity_not_guaranteed">"Tin nhắn mã hóa này không thể được xác thực trên thiết bị này."</string>
|
||||
<string name="crypto_event_authenticity_previously_verified">"Được mã hóa bởi một người dùng đã từng được xác minh."</string>
|
||||
<string name="crypto_event_authenticity_sent_in_clear">"Không được mã hóa"</string>
|
||||
<string name="crypto_event_authenticity_unknown_device">"Được mã hóa bởi một thiết bị không xác định hoặc đã bị xóa."</string>
|
||||
<string name="crypto_event_authenticity_unsigned_device">"Được mã hóa bởi một thiết bị chưa được chủ sở hữu xác minh."</string>
|
||||
<string name="crypto_event_authenticity_unverified_identity">"Được mã hóa bởi một người dùng chưa được xác minh."</string>
|
||||
<string name="emoji_picker_category_activity">"Hoạt động"</string>
|
||||
<string name="emoji_picker_category_flags">"Cờ"</string>
|
||||
<string name="emoji_picker_category_foods">"Thực phẩm và đồ uống"</string>
|
||||
<string name="emoji_picker_category_nature">"Động vật và thiên nhiên"</string>
|
||||
<string name="emoji_picker_category_objects">"Đồ vật"</string>
|
||||
<string name="emoji_picker_category_people">"Mặt cười & mọi người"</string>
|
||||
<string name="emoji_picker_category_places">"Du lịch và địa danh"</string>
|
||||
<string name="emoji_picker_category_symbols">"Biểu tượng"</string>
|
||||
<string name="screen_media_upload_preview_error_failed_processing">"Xử lý phương tiện tải lên không thành công, vui lòng thử lại."</string>
|
||||
<string name="screen_media_upload_preview_error_failed_sending">"Không thể tải lên tệp phương tiện. Vui lòng thử lại."</string>
|
||||
<string name="screen_report_content_block_user">"Chặn người dùng"</string>
|
||||
<string name="screen_report_content_block_user_hint">"Chọn tùy chọn này nếu bạn muốn ẩn tất cả tin nhắn hiện tại và tương lai từ người dùng này."</string>
|
||||
<string name="screen_report_content_explanation">"Tin nhắn này sẽ được báo cáo cho quản trị viên máy chủ của bạn. Họ sẽ không thể đọc bất kỳ tin nhắn được mã hóa nào."</string>
|
||||
<string name="screen_report_content_hint">"Lý do báo cáo nội dung này"</string>
|
||||
<string name="screen_room_attachment_source_camera">"Máy ảnh"</string>
|
||||
<string name="screen_room_attachment_source_camera_photo">"Chụp ảnh"</string>
|
||||
<string name="screen_room_attachment_source_camera_video">"Quay video"</string>
|
||||
<string name="screen_room_attachment_source_files">"Tệp đính kèm"</string>
|
||||
<string name="screen_room_attachment_source_gallery">"Thư viện ảnh và video"</string>
|
||||
<string name="screen_room_attachment_source_location">"Chia sẻ vị trí"</string>
|
||||
<string name="screen_room_attachment_source_poll">"Bỏ phiếu"</string>
|
||||
<string name="screen_room_attachment_text_formatting">"Định dạng văn bản"</string>
|
||||
<string name="screen_room_encrypted_history_banner">"Lịch sử tin nhắn hiện không khả dụng."</string>
|
||||
<string name="screen_room_encrypted_history_banner_unverified">"Lịch sử tin nhắn không khả dụng trong phòng này. Vui lòng xác minh thiết bị này để xem lịch sử tin nhắn của bạn."</string>
|
||||
<string name="screen_room_invite_again_alert_message">"Bạn có muốn mời họ quay lại không?"</string>
|
||||
<string name="screen_room_invite_again_alert_title">"Bạn đang một mình trong cuộc trò chuyện này"</string>
|
||||
<string name="screen_room_mentions_at_room_subtitle">"Thông báo cho cả phòng"</string>
|
||||
<string name="screen_room_mentions_at_room_title">"Mọi người"</string>
|
||||
<string name="screen_room_retry_send_menu_send_again_action">"Gửi lại"</string>
|
||||
<string name="screen_room_retry_send_menu_title">"Gửi tin nhắn không thành công"</string>
|
||||
<string name="screen_room_timeline_add_reaction">"Thêm biểu cảm"</string>
|
||||
<string name="screen_room_timeline_beginning_of_room">"Đây là sự kiện khởi đầu của phòng %1$s ."</string>
|
||||
<string name="screen_room_timeline_beginning_of_room_no_name">"Đây là khởi đầu của cuộc trò chuyện này."</string>
|
||||
<string name="screen_room_timeline_legacy_call">"Cuộc gọi không được hỗ trợ. Hãy hỏi xem người gọi có thể sử dụng ứng dụng Element X mới hay không."</string>
|
||||
<string name="screen_room_timeline_less_reactions">"Thu gọn"</string>
|
||||
<string name="screen_room_timeline_message_copied">"Đã sao chép tin nhắn"</string>
|
||||
<string name="screen_room_timeline_no_permission_to_post">"Bạn không có quyền gửi tin nhắn trong phòng này"</string>
|
||||
<string name="screen_room_timeline_reactions_show_less">"Thu gọn"</string>
|
||||
<string name="screen_room_timeline_reactions_show_more">"Xem thêm"</string>
|
||||
<string name="screen_room_timeline_read_marker_title">"Mới"</string>
|
||||
<plurals name="screen_room_timeline_state_changes">
|
||||
<item quantity="other">"%1$d số lượng phòng thay đổi"</item>
|
||||
</plurals>
|
||||
<plurals name="screen_room_typing_many_members">
|
||||
<item quantity="other">"%1$s,%2$s và %3$d người khác"</item>
|
||||
</plurals>
|
||||
<plurals name="screen_room_typing_notification">
|
||||
<item quantity="other">"%1$s đang gõ"</item>
|
||||
</plurals>
|
||||
<string name="screen_room_typing_two_members">"%1$s và %2$s"</string>
|
||||
</resources>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
<string name="screen_media_upload_preview_item_count">"第%1$d/%2$d项"</string>
|
||||
<string name="screen_media_upload_preview_optimize_image_quality_title">"优化图像质量"</string>
|
||||
<string name="screen_media_upload_preview_processing">"处理中…"</string>
|
||||
<string name="screen_report_content_block_user">"封禁用户"</string>
|
||||
<string name="screen_report_content_block_user">"屏蔽用户"</string>
|
||||
<string name="screen_report_content_block_user_hint">"请确认是否要隐藏该用户当前和未来的所有信息"</string>
|
||||
<string name="screen_report_content_explanation">"此消息将举报给您的服务器管理员。他们无法读取任何加密消息。"</string>
|
||||
<string name="screen_report_content_hint">"举报此内容的原因"</string>
|
||||
|
|
@ -35,13 +35,13 @@
|
|||
<string name="screen_room_attachment_source_camera_video">"录制视频"</string>
|
||||
<string name="screen_room_attachment_source_files">"附件"</string>
|
||||
<string name="screen_room_attachment_source_gallery">"照片和视频库"</string>
|
||||
<string name="screen_room_attachment_source_location">"位置"</string>
|
||||
<string name="screen_room_attachment_source_location">"共享位置"</string>
|
||||
<string name="screen_room_attachment_source_poll">"投票"</string>
|
||||
<string name="screen_room_attachment_text_formatting">"文本格式化"</string>
|
||||
<string name="screen_room_encrypted_history_banner">"消息历史记录当前不可用。"</string>
|
||||
<string name="screen_room_encrypted_history_banner_unverified">"此聊天室无法查看消息历史记录。请验证此设备以查看之。"</string>
|
||||
<string name="screen_room_invite_again_alert_message">"您想邀请他们回来吗?"</string>
|
||||
<string name="screen_room_invite_again_alert_title">"聊天中只有你一个人"</string>
|
||||
<string name="screen_room_invite_again_alert_title">"此聊天室中只有您一个人"</string>
|
||||
<string name="screen_room_mentions_at_room_subtitle">"通知整个聊天室"</string>
|
||||
<string name="screen_room_mentions_at_room_title">"所有人"</string>
|
||||
<string name="screen_room_retry_send_menu_send_again_action">"再次发送"</string>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
package io.element.android.features.messages.impl.pinned.list
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
|
||||
|
||||
class FakePinnedMessagesListNavigator : PinnedMessagesListNavigator {
|
||||
|
|
@ -26,4 +27,9 @@ class FakePinnedMessagesListNavigator : PinnedMessagesListNavigator {
|
|||
override fun forwardEvent(eventId: EventId) {
|
||||
onForwardEventClickLambda?.invoke(eventId)
|
||||
}
|
||||
|
||||
var onOpenThreadLambda: ((ThreadId) -> Unit)? = null
|
||||
override fun navigateToThread(threadRootId: ThreadId) {
|
||||
onOpenThreadLambda?.invoke(threadRootId)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue