Skip to content

Commit 9c9259b

Browse files
Avoid extra renders
1 parent 97eda52 commit 9c9259b

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

src/components/HelpMenu/hooks.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ export const isBusinessHoursResponse = (x: unknown): x is BusinessHoursResponse
7878
isBusinessHoursArray((x as any).businessHoursInfo.businessHours)
7979
);
8080

81+
const businessHoursResponseEqual = (a: BusinessHoursResponse | null, b: BusinessHoursResponse) => (
82+
a === b ||
83+
true === a?.businessHoursInfo.businessHours
84+
.map((h, idx) => [h, b.businessHoursInfo.businessHours[idx]])
85+
.every(([a, b]) => a.startTime === b.startTime && a.endTime === b.endTime)
86+
);
8187
const getEmbeddedService = () => (window as WindowWithEmbed).embeddedservice_bootstrap;
8288

8389
export const useScript = (src: string) => {
@@ -234,7 +240,7 @@ export const useBusinessHours = (businessHoursURL: string, timeout: number) => {
234240
setError(new Error('Invalid business hours response'));
235241
setHours(null);
236242
} else {
237-
setHours(data);
243+
setHours((prev) => businessHoursResponseEqual(prev, data) ? prev : data);
238244
}
239245

240246
lastFetchedAtRef.current = Date.now();

0 commit comments

Comments
 (0)