@@ -75,6 +75,22 @@ export const ChannelPreviewMessenger = themed(
7575 latestMessage : PropTypes . object ,
7676 /** Number of unread messages on channel */
7777 unread : PropTypes . number ,
78+ /** Length at which latest message should be truncated */
79+ latestMessageLength : PropTypes . number ,
80+ /**
81+ * Formatter function for date of latest message.
82+ * @param date Message date
83+ * @returns Formatted date string
84+ *
85+ * By default today's date is shown in 'HH:mm A' format and other dates
86+ * are displayed in 'DD/MM/YY' format. props.latestMessage.created_at is the
87+ * default formated date. This default logic is part of ChannelPreview component.
88+ */
89+ formatLatestMessageDate : PropTypes . func ,
90+ } ;
91+
92+ static defaultProps = {
93+ latestMessageLength : 30 ,
7894 } ;
7995
8096 onSelectChannel = ( ) => {
@@ -109,7 +125,7 @@ export const ChannelPreviewMessenger = themed(
109125 . map ( ( member ) => member . user . name || member . user . id || 'Unnamed User' )
110126 . join ( ', ' ) ;
111127 }
112-
128+ const formatLatestMessageDate = this . props . formatLatestMessageDate ;
113129 return (
114130 < Container onPress = { this . onSelectChannel } >
115131 { this . renderAvatar ( otherMembers ) }
@@ -118,17 +134,22 @@ export const ChannelPreviewMessenger = themed(
118134 < Title ellipsizeMode = "tail" numberOfLines = { 1 } >
119135 { name }
120136 </ Title >
121- < Date > { this . props . latestMessage . created_at } </ Date >
137+ < Date >
138+ { formatLatestMessageDate
139+ ? formatLatestMessageDate (
140+ this . props . latestMessage . messageObject . created_at ,
141+ )
142+ : this . props . latestMessage . created_at }
143+ </ Date >
122144 </ DetailsTop >
123145 < Message
124146 unread = { this . props . unread > 0 ? this . props . unread : undefined }
125147 >
126148 { ! this . props . latestMessage
127149 ? 'Nothing yet...'
128- : truncate (
129- this . props . latestMessage . text . replace ( / \n / g, ' ' ) ,
130- 14 ,
131- ) }
150+ : truncate ( this . props . latestMessage . text . replace ( / \n / g, ' ' ) , {
151+ length : this . props . latestMessageLength ,
152+ } ) }
132153 </ Message >
133154 </ Details >
134155 </ Container >
0 commit comments