@@ -69,30 +69,44 @@ export default {
69
69
const myTenantId = await this . getAuthenticatedUserTenant ( ) ;
70
70
const options = [ ] ;
71
71
72
+ this . _userCache = this . _userCache || new Map ( ) ;
73
+
72
74
for ( const chat of response . value ) {
73
75
const messages = await this . makeRequest ( {
74
76
path : `/chats/${ chat . id } /messages?$top=50` ,
75
77
} ) ;
76
78
77
79
const members = await Promise . all ( chat . members . map ( async ( member ) => {
78
- let displayName = member . displayName ;
79
-
80
- if ( ! displayName && messages . value . length > 0 ) {
81
- const userMessage = messages . value . find ( ( msg ) =>
82
- msg . from ?. user ?. id === member . userId ) ;
83
- if ( userMessage ?. from ?. user ?. displayName ) {
84
- displayName = userMessage . from . user . displayName ;
85
- }
86
- }
80
+ const cacheKey = `user_${ member . userId } ` ;
81
+ let displayName = member . displayName || this . _userCache . get ( cacheKey ) ;
87
82
88
83
if ( ! displayName ) {
89
84
try {
90
- const userDetails = await this . makeRequest ( {
91
- path : `/users/${ member . userId } ` ,
92
- } ) ;
93
- displayName = userDetails . displayName ;
85
+ if ( messages ?. value ?. length > 0 ) {
86
+ const userMessage = messages . value . find ( ( msg ) =>
87
+ msg . from ?. user ?. id === member . userId ) ;
88
+ if ( userMessage ?. from ?. user ?. displayName ) {
89
+ displayName = userMessage . from . user . displayName ;
90
+ }
91
+ }
92
+
93
+ if ( ! displayName ) {
94
+ const userDetails = await this . makeRequest ( {
95
+ path : `/users/${ member . userId } ` ,
96
+ } ) ;
97
+ displayName = userDetails . displayName ;
98
+ }
99
+
100
+ this . _userCache . set ( cacheKey , displayName ) ;
94
101
} catch ( err ) {
95
- displayName = "Unknown User" ;
102
+ if ( err . statusCode === 404 ) {
103
+ displayName = "User Not Found" ;
104
+ } else if ( err . statusCode === 403 ) {
105
+ displayName = "Access Denied" ;
106
+ } else {
107
+ displayName = "Unknown User" ;
108
+ }
109
+ console . error ( `Failed to fetch user details for ${ member . userId } :` , err ) ;
96
110
}
97
111
}
98
112
@@ -179,10 +193,20 @@ export default {
179
193
} , api ) ;
180
194
} ,
181
195
async getAuthenticatedUserTenant ( ) {
182
- const { value } = await this . client ( )
183
- . api ( "/organization" )
184
- . get ( ) ;
185
- return value [ 0 ] . id ;
196
+ try {
197
+ const { value } = await this . client ( )
198
+ . api ( "/organization" )
199
+ . get ( ) ;
200
+
201
+ if ( ! value || value . length === 0 ) {
202
+ throw new Error ( "No organization found" ) ;
203
+ }
204
+
205
+ return value [ 0 ] . id ;
206
+ } catch ( error ) {
207
+ console . error ( "Failed to fetch tenant ID:" , error ) ;
208
+ throw new Error ( "Unable to determine tenant ID" ) ;
209
+ }
186
210
} ,
187
211
async authenticatedUserId ( ) {
188
212
const { id } = await this . client ( )
0 commit comments