|
|
|
@ -1,5 +1,5 @@
|
|
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
|
|
import React, { useEffect } from 'react';
|
|
|
|
import React, { useCallback, useEffect } from 'react';
|
|
|
|
|
|
|
|
|
|
|
|
import type { APIOptions } from '../../utils/types';
|
|
|
|
import type { APIOptions } from '../../utils/types';
|
|
|
|
|
|
|
|
|
|
|
|
@ -20,7 +20,8 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForG
|
|
|
|
s.mounted,
|
|
|
|
s.mounted,
|
|
|
|
]);
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
const useAPIQuery: (index: number) => Promise<any> = async (index: number) => {
|
|
|
|
const useAPIQuery: (index: number) => Promise<any> = useCallback(
|
|
|
|
|
|
|
|
async (index: number) => {
|
|
|
|
const colSort = getState('colSort');
|
|
|
|
const colSort = getState('colSort');
|
|
|
|
const pageSize = getState('pageSize');
|
|
|
|
const pageSize = getState('pageSize');
|
|
|
|
const colFilters = getState('colFilters');
|
|
|
|
const colFilters = getState('colFilters');
|
|
|
|
@ -67,14 +68,21 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForG
|
|
|
|
r.controller?.abort?.();
|
|
|
|
r.controller?.abort?.();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
if (_active_requests && currentRequestIndex >= 0 && _active_requests[currentRequestIndex]) {
|
|
|
|
if (
|
|
|
|
|
|
|
|
_active_requests &&
|
|
|
|
|
|
|
|
currentRequestIndex >= 0 &&
|
|
|
|
|
|
|
|
_active_requests[currentRequestIndex]
|
|
|
|
|
|
|
|
) {
|
|
|
|
//console.log(`Already queued ${index}`, index, s._active_requests);
|
|
|
|
//console.log(`Already queued ${index}`, index, s._active_requests);
|
|
|
|
setState('loadingData', false);
|
|
|
|
setState('loadingData', false);
|
|
|
|
return undefined;
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const controller = new AbortController();
|
|
|
|
const controller = new AbortController();
|
|
|
|
await setStateFN('_active_requests', (cv) => [...(cv ?? []), { controller, page: index }]);
|
|
|
|
await setStateFN('_active_requests', (cv) => [
|
|
|
|
|
|
|
|
...(cv ?? []),
|
|
|
|
|
|
|
|
{ controller, page: index },
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
const res = await fetch(
|
|
|
|
const res = await fetch(
|
|
|
|
`${props.url}?x-limit=${String(pageSize ?? 50)}&x-offset=${String((pageSize ?? 50) * index)}`,
|
|
|
|
`${props.url}?x-limit=${String(pageSize ?? 50)}&x-offset=${String((pageSize ?? 50) * index)}`,
|
|
|
|
@ -107,9 +115,12 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForG
|
|
|
|
}
|
|
|
|
}
|
|
|
|
setState('loadingData', false);
|
|
|
|
setState('loadingData', false);
|
|
|
|
return [];
|
|
|
|
return [];
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
[getState, props.authtoken, props.url, props.options, setState, setStateFN, addError]
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
const askAPIRowNumber: (key: string) => Promise<number> = async (key: string) => {
|
|
|
|
const askAPIRowNumber: (key: string) => Promise<number> = useCallback(
|
|
|
|
|
|
|
|
async (key: string) => {
|
|
|
|
const colFilters = getState('colFilters');
|
|
|
|
const colFilters = getState('colFilters');
|
|
|
|
|
|
|
|
|
|
|
|
//console.log('APIAdaptorGoLangv2', { _active_requests, index, pageSize, props });
|
|
|
|
//console.log('APIAdaptorGoLangv2', { _active_requests, index, pageSize, props });
|
|
|
|
@ -130,6 +141,13 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForG
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (props.options && props.options.length > 0) {
|
|
|
|
|
|
|
|
const optionHeaders = GoAPIHeaders(props.options);
|
|
|
|
|
|
|
|
for (const oh in optionHeaders) {
|
|
|
|
|
|
|
|
head.set(oh, optionHeaders[oh]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const controller = new AbortController();
|
|
|
|
const controller = new AbortController();
|
|
|
|
|
|
|
|
|
|
|
|
const res = await fetch(`${props.url}?x-fetch-rownumber=${key}}`, {
|
|
|
|
const res = await fetch(`${props.url}?x-fetch-rownumber=${key}}`, {
|
|
|
|
@ -146,12 +164,14 @@ function _GlidlerAPIAdaptorForGoLangv2<T = unknown>(props: GlidlerAPIAdaptorForG
|
|
|
|
addError(`${res.status} ${res.statusText}`, 'api', props.url);
|
|
|
|
addError(`${res.status} ${res.statusText}`, 'api', props.url);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return [];
|
|
|
|
return [];
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
[props.url, props.authtoken, props.options, getState, addError]
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
useEffect(() => {
|
|
|
|
setState('useAPIQuery', useAPIQuery);
|
|
|
|
setState('useAPIQuery', useAPIQuery);
|
|
|
|
setState('askAPIRowNumber', askAPIRowNumber);
|
|
|
|
setState('askAPIRowNumber', askAPIRowNumber);
|
|
|
|
}, [props.url, props.authtoken, mounted, setState]);
|
|
|
|
}, [props.url, props.authtoken, props.options, mounted, setState]);
|
|
|
|
|
|
|
|
|
|
|
|
return <></>;
|
|
|
|
return <></>;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|