From abcf08f98eb0526ed48b503bb86281e3aff8eef9 Mon Sep 17 00:00:00 2001 From: Hein Date: Thu, 30 Oct 2025 14:53:42 +0200 Subject: [PATCH] Fixed the refresh bug --- src/Gridler/components/GridlerStore.tsx | 17 +++++++++-------- .../adaptors/GlidlerAPIAdaptorForGoLangv2.tsx | 7 ++++--- .../components/adaptors/GlidlerFormAdaptor.tsx | 8 ++++---- src/MantineBetterMenu/MenuRenderer.tsx | 2 +- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Gridler/components/GridlerStore.tsx b/src/Gridler/components/GridlerStore.tsx index b8a4e6e..b291665 100644 --- a/src/Gridler/components/GridlerStore.tsx +++ b/src/Gridler/components/GridlerStore.tsx @@ -135,7 +135,7 @@ export interface GridlerState { _gridSelectionRows?: GridSelection['rows']; _loadingList: CompactSelection; _page_data: Record>; - _refresh: () => void; + _refresh: () => Promise; _scrollTimeout?: any | number; _visibleArea: Rectangle; _visiblePages: Rectangle; @@ -219,12 +219,11 @@ const { Provider, useStore: useGridlerStore } = createSyncStore { + _refresh: async () => { const s = get(); - s.loadPage(0, 'all').then(() => { - s.refreshCells(); - s.reload?.(); - }); + await s.loadPage(0, 'all'); + await s.refreshCells(); + await s.reload?.(); }, _visibleArea: { height: 10000, width: 1000, x: 0, y: 0 }, _visiblePages: { height: 0, width: 0, x: 0, y: 0 }, @@ -717,9 +716,11 @@ const { Provider, useStore: useGridlerStore } = createSyncStore { - await s._refresh?.(); + onClick: () => { + const s = get(); + s._refresh?.(); }, }, ]; diff --git a/src/Gridler/components/adaptors/GlidlerAPIAdaptorForGoLangv2.tsx b/src/Gridler/components/adaptors/GlidlerAPIAdaptorForGoLangv2.tsx index 8a465a8..53ea50d 100644 --- a/src/Gridler/components/adaptors/GlidlerAPIAdaptorForGoLangv2.tsx +++ b/src/Gridler/components/adaptors/GlidlerAPIAdaptorForGoLangv2.tsx @@ -19,13 +19,12 @@ export interface GlidlerAPIAdaptorForGoLangv2Props extends APIOptio } function _GlidlerAPIAdaptorForGoLangv2(props: GlidlerAPIAdaptorForGoLangv2Props) { - const [setStateFN, setState, getState, addError, mounted, loadPage] = useGridlerStore((s) => [ + const [setStateFN, setState, getState, addError, mounted] = useGridlerStore((s) => [ s.setStateFN, s.setState, s.getState, s.addError, s.mounted, - s.loadPage, ]); const useAPIQuery: (index: number) => Promise = useCallback( @@ -266,8 +265,10 @@ function _GlidlerAPIAdaptorForGoLangv2(props: GlidlerAPIAdaptorForG setState('useAPIQuery', useAPIQuery); setState('askAPIRowNumber', askAPIRowNumber); + const _refresh = getState('_refresh'); + //Reset the loaded pages to new rules - loadPage(0, 'all').then(() => { + _refresh?.().then(() => { const onChange = getState('onChange'); const getGridSelectedRows = getState('getGridSelectedRows'); if (onChange && typeof onChange === 'function') { diff --git a/src/Gridler/components/adaptors/GlidlerFormAdaptor.tsx b/src/Gridler/components/adaptors/GlidlerFormAdaptor.tsx index 0797dd9..20c78a9 100644 --- a/src/Gridler/components/adaptors/GlidlerFormAdaptor.tsx +++ b/src/Gridler/components/adaptors/GlidlerFormAdaptor.tsx @@ -24,11 +24,10 @@ export function GlidlerFormAdaptor(props: { ) => void; showDescriptionInMenu?: boolean; }) { - const [getState, mounted, setState, reload, _events] = useGridlerStore((s) => [ + const [getState, mounted, setState, _events] = useGridlerStore((s) => [ s.getState, s.mounted, s.setState, - s.reload, s._events, ]); @@ -164,8 +163,9 @@ export function GlidlerFormAdaptor(props: { c: 'orange', label: 'Refresh', leftSection: , - onClick: () => { - reload?.(); + onClickAsync: async () => { + const _refresh = getState('_refresh'); + await _refresh?.(); }, }); diff --git a/src/MantineBetterMenu/MenuRenderer.tsx b/src/MantineBetterMenu/MenuRenderer.tsx index fd1aec6..47268c4 100644 --- a/src/MantineBetterMenu/MenuRenderer.tsx +++ b/src/MantineBetterMenu/MenuRenderer.tsx @@ -80,7 +80,7 @@ const MenuItemRenderer = ({ children, label, ...props }: MantineBetterMenuInstan props.onClick?.(e); if (props.onClickAsync) { setLoading(true); - props.onClickAsync().finally(() => setLoading(false)); + props.onClickAsync(e).finally(() => setLoading(false)); } }} styles={{