Fixed the refresh bug

This commit is contained in:
Hein 2025-10-30 14:53:42 +02:00
parent 0ba8dca0b4
commit abcf08f98e
4 changed files with 18 additions and 16 deletions

View File

@ -135,7 +135,7 @@ export interface GridlerState {
_gridSelectionRows?: GridSelection['rows'];
_loadingList: CompactSelection;
_page_data: Record<number, Array<any>>;
_refresh: () => void;
_refresh: () => Promise<void>;
_scrollTimeout?: any | number;
_visibleArea: Rectangle;
_visiblePages: Rectangle;
@ -219,12 +219,11 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
_events: new EventTarget(),
_loadingList: CompactSelection.empty(),
_page_data: {},
_refresh: () => {
_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<GridlerStoreStat
isDivider: true,
},
{
id: 'refesh',
label: `Refresh`,
onClickAsync: async () => {
await s._refresh?.();
onClick: () => {
const s = get();
s._refresh?.();
},
},
];

View File

@ -19,13 +19,12 @@ export interface GlidlerAPIAdaptorForGoLangv2Props<T = unknown> extends APIOptio
}
function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForGoLangv2Props<T>) {
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<any> = useCallback(
@ -266,8 +265,10 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(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') {

View File

@ -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: <IconRefresh color="orange" size={16} />,
onClick: () => {
reload?.();
onClickAsync: async () => {
const _refresh = getState('_refresh');
await _refresh?.();
},
});

View File

@ -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={{