mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
Add KDoc to the libraries/eventformatter API interfaces
Document RoomLatestEventFormatter, TimelineEventFormatter and PinnedMessagesBannerFormatter along with their members. The formatters return a nullable CharSequence, so each one now states what null means: the event is not rendered as text at all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
@@ -10,6 +10,12 @@ package io.element.android.libraries.eventformatter.api
|
|||||||
|
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats the short summary of a pinned event shown in the banner at the top of a room.
|
||||||
|
*/
|
||||||
interface PinnedMessagesBannerFormatter {
|
interface PinnedMessagesBannerFormatter {
|
||||||
|
/**
|
||||||
|
* @param event the pinned event to describe.
|
||||||
|
*/
|
||||||
fun format(event: EventTimelineItem): CharSequence
|
fun format(event: EventTimelineItem): CharSequence
|
||||||
}
|
}
|
||||||
|
|||||||
+18
@@ -10,7 +10,25 @@ package io.element.android.libraries.eventformatter.api
|
|||||||
|
|
||||||
import io.element.android.libraries.matrix.api.roomlist.LatestEventValue
|
import io.element.android.libraries.matrix.api.roomlist.LatestEventValue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats the one-line preview of a room's latest event, as shown in the room list.
|
||||||
|
*/
|
||||||
interface RoomLatestEventFormatter {
|
interface RoomLatestEventFormatter {
|
||||||
|
/**
|
||||||
|
* Formats an event that is still local, i.e. queued or being sent.
|
||||||
|
*
|
||||||
|
* @param latestEvent the local event to describe.
|
||||||
|
* @param isDmRoom whether the room is a direct message, which lets the sender name be left out.
|
||||||
|
* @return the preview text, or `null` when this kind of event should not be previewed.
|
||||||
|
*/
|
||||||
fun format(latestEvent: LatestEventValue.Local, isDmRoom: Boolean): CharSequence?
|
fun format(latestEvent: LatestEventValue.Local, isDmRoom: Boolean): CharSequence?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats an event that has been received from the server.
|
||||||
|
*
|
||||||
|
* @param latestEvent the remote event to describe.
|
||||||
|
* @param isDmRoom whether the room is a direct message, which lets the sender name be left out.
|
||||||
|
* @return the preview text, or `null` when this kind of event should not be previewed.
|
||||||
|
*/
|
||||||
fun format(latestEvent: LatestEventValue.Remote, isDmRoom: Boolean): CharSequence?
|
fun format(latestEvent: LatestEventValue.Remote, isDmRoom: Boolean): CharSequence?
|
||||||
}
|
}
|
||||||
|
|||||||
+16
@@ -13,7 +13,16 @@ import io.element.android.libraries.matrix.api.timeline.item.event.EventContent
|
|||||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.getDisambiguatedDisplayName
|
import io.element.android.libraries.matrix.api.timeline.item.event.getDisambiguatedDisplayName
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns a state or membership event into the human readable sentence shown in the timeline, such as "Alice joined the room".
|
||||||
|
*/
|
||||||
interface TimelineEventFormatter {
|
interface TimelineEventFormatter {
|
||||||
|
/**
|
||||||
|
* Convenience overload that reads the sender and ownership from the timeline item itself.
|
||||||
|
*
|
||||||
|
* @param event the timeline item to describe.
|
||||||
|
* @return the sentence to display, or `null` when this kind of event is not rendered as text.
|
||||||
|
*/
|
||||||
fun format(event: EventTimelineItem): CharSequence? {
|
fun format(event: EventTimelineItem): CharSequence? {
|
||||||
return format(
|
return format(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
@@ -22,5 +31,12 @@ interface TimelineEventFormatter {
|
|||||||
senderDisambiguatedDisplayName = event.senderProfile.getDisambiguatedDisplayName(event.sender),
|
senderDisambiguatedDisplayName = event.senderProfile.getDisambiguatedDisplayName(event.sender),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param content the event content to describe.
|
||||||
|
* @param isOutgoing whether the event was sent by the current user, which selects the first-person wording.
|
||||||
|
* @param sender the user who sent the event.
|
||||||
|
* @param senderDisambiguatedDisplayName the sender's display name, already suffixed with their id when it is ambiguous in the room.
|
||||||
|
* @return the sentence to display, or `null` when this kind of event is not rendered as text.
|
||||||
|
*/
|
||||||
fun format(content: EventContent, isOutgoing: Boolean, sender: UserId, senderDisambiguatedDisplayName: String): CharSequence?
|
fun format(content: EventContent, isOutgoing: Boolean, sender: UserId, senderDisambiguatedDisplayName: String): CharSequence?
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user