@@ -176,10 +176,12 @@ export class ChatService {
176176 }
177177 }
178178
179- public getMessages = async ( { spaceName, unreadOnly, pageSize, pageToken } : { spaceName : string , unreadOnly ?: boolean , pageSize ?: number , pageToken ?: string } ) => {
179+ public getMessages = async ( { spaceName, unreadOnly, pageSize, pageToken, orderBy } : { spaceName : string , unreadOnly ?: boolean , pageSize ?: number , pageToken ?: string , orderBy ?: string } ) => {
180180 logToFile ( `Listing messages for space: ${ spaceName } ` ) ;
181181 try {
182182 const chat = await this . getChatClient ( ) ;
183+ let filter : string | undefined ;
184+
183185 if ( unreadOnly ) {
184186 const people = await this . getPeopleClient ( ) ;
185187 const person = await people . people . get ( {
@@ -203,47 +205,33 @@ export class ChatService {
203205
204206 const lastReadTime = currentUserMember ?. lastReadTime ;
205207
206- if ( ! lastReadTime ) {
208+ if ( lastReadTime ) {
209+ filter = `createTime > "${ lastReadTime } "` ;
210+ } else {
207211 logToFile ( `No last read time found for user in space: ${ spaceName } ` ) ;
208- // This can happen if the user has never read messages in the space.
209- // In this case, all messages are unread.
210- const res = await chat . spaces . messages . list ( { parent : spaceName , pageSize, pageToken } ) ;
211- const messages = res . data . messages || [ ] ;
212- logToFile ( `Successfully listed ${ messages . length } unread messages for space: ${ spaceName } ` ) ;
213- return { content : [ { type : "text" as const , text : JSON . stringify ( { messages, nextPageToken : res . data . nextPageToken } ) } ] } ;
214212 }
213+ }
215214
216- const res = await chat . spaces . messages . list ( {
217- parent : spaceName ,
218- filter : `createTime > "${ lastReadTime } "` ,
219- pageSize,
220- pageToken,
221- } ) ;
215+ const res = await chat . spaces . messages . list ( {
216+ parent : spaceName ,
217+ filter,
218+ pageSize,
219+ pageToken,
220+ orderBy,
221+ } ) ;
222222
223- const messages = res . data . messages || [ ] ;
224- logToFile ( `Successfully listed ${ messages . length } unread messages for space: ${ spaceName } ` ) ;
225- return {
226- content : [ {
227- type : "text" as const ,
228- text : JSON . stringify ( { messages, nextPageToken : res . data . nextPageToken } )
229- } ]
230- } ;
223+ const messages = res . data . messages || [ ] ;
224+ const logMessage = unreadOnly
225+ ? `Successfully listed ${ messages . length } unread messages for space: ${ spaceName } `
226+ : `Successfully listed ${ messages . length } messages for space: ${ spaceName } ` ;
227+ logToFile ( logMessage ) ;
231228
232- } else {
233- const res = await chat . spaces . messages . list ( {
234- parent : spaceName ,
235- pageSize,
236- pageToken,
237- } ) ;
238- const messages = res . data . messages || [ ] ;
239- logToFile ( `Successfully listed ${ messages . length } messages for space: ${ spaceName } ` ) ;
240- return {
241- content : [ {
242- type : "text" as const ,
243- text : JSON . stringify ( { messages, nextPageToken : res . data . nextPageToken } )
244- } ]
245- } ;
246- }
229+ return {
230+ content : [ {
231+ type : "text" as const ,
232+ text : JSON . stringify ( { messages, nextPageToken : res . data . nextPageToken } )
233+ } ]
234+ } ;
247235 } catch ( error ) {
248236 const errorMessage = error instanceof Error ? error . message : String ( error ) ;
249237 logToFile ( `Error during chat.getMessages: ${ errorMessage } ` ) ;
@@ -263,6 +251,7 @@ export class ChatService {
263251 }
264252 }
265253
254+
266255 public sendDm = async ( { email, message } : { email : string , message : string } ) => {
267256 logToFile ( `chat.sendDm called with: email=${ email } , message=${ message } ` ) ;
268257 try {
0 commit comments