|
22 | 22 | * - Works with object/api/value data providers |
23 | 23 | */ |
24 | 24 |
|
25 | | -import React, { useEffect, useState, useCallback, useMemo } from 'react'; |
| 25 | +import React, { useEffect, useState, useCallback, useMemo, useRef } from 'react'; |
26 | 26 | import type { ObjectGridSchema, DataSource, ViewData, CalendarConfig } from '@object-ui/types'; |
27 | 27 | import { CalendarView, type CalendarEvent } from './CalendarView'; |
28 | 28 | import { usePullToRefresh } from '@object-ui/mobile'; |
@@ -183,6 +183,10 @@ export const ObjectCalendar: React.FC<ObjectCalendarProps> = ({ |
183 | 183 | ]); |
184 | 184 | const hasInlineData = dataConfig?.provider === 'value'; |
185 | 185 |
|
| 186 | + // Use ref for objectSchema to avoid double-fetch on mount |
| 187 | + const objectSchemaRef = useRef<any>(null); |
| 188 | + objectSchemaRef.current = objectSchema; |
| 189 | + |
186 | 190 | // Fetch data based on provider |
187 | 191 | useEffect(() => { |
188 | 192 | let isMounted = true; |
@@ -216,7 +220,7 @@ export const ObjectCalendar: React.FC<ObjectCalendarProps> = ({ |
216 | 220 | if (dataConfig?.provider === 'object') { |
217 | 221 | const objectName = dataConfig.object; |
218 | 222 | // Auto-inject $expand for lookup/master_detail fields |
219 | | - const expand = buildExpandFields(objectSchema?.fields); |
| 223 | + const expand = buildExpandFields(objectSchemaRef.current?.fields); |
220 | 224 | const result = await dataSource.find(objectName, { |
221 | 225 | $filter: schema.filter, |
222 | 226 | $orderby: convertSortToQueryParams(schema.sort), |
@@ -245,7 +249,7 @@ export const ObjectCalendar: React.FC<ObjectCalendarProps> = ({ |
245 | 249 |
|
246 | 250 | fetchData(); |
247 | 251 | return () => { isMounted = false; }; |
248 | | - }, [dataConfig, dataSource, hasInlineData, schema.filter, schema.sort, refreshKey, objectSchema]); |
| 252 | + }, [dataConfig, dataSource, hasInlineData, schema.filter, schema.sort, refreshKey]); |
249 | 253 |
|
250 | 254 | // Fetch object schema for field metadata |
251 | 255 | useEffect(() => { |
|
0 commit comments