Skip to content

Commit a0dc9a4

Browse files
committed
Committed CodeRabbit suggestions for error handling and caching for performance.
1 parent 2c5e1c3 commit a0dc9a4

File tree

1 file changed

+42
-18
lines changed

1 file changed

+42
-18
lines changed

components/microsoft_teams/microsoft_teams.app.mjs

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -69,30 +69,44 @@ export default {
6969
const myTenantId = await this.getAuthenticatedUserTenant();
7070
const options = [];
7171

72+
this._userCache = this._userCache || new Map();
73+
7274
for (const chat of response.value) {
7375
const messages = await this.makeRequest({
7476
path: `/chats/${chat.id}/messages?$top=50`,
7577
});
7678

7779
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);
8782

8883
if (!displayName) {
8984
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);
94101
} 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);
96110
}
97111
}
98112

@@ -179,10 +193,20 @@ export default {
179193
}, api);
180194
},
181195
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+
}
186210
},
187211
async authenticatedUserId() {
188212
const { id } = await this.client()

0 commit comments

Comments
 (0)