🔧 Functioning select with Metron API pre-fetching and autosuggest with pagination

This commit is contained in:
2022-01-04 20:29:44 -08:00
parent 8644b79b75
commit e4826c3272
2 changed files with 20 additions and 10 deletions

View File

@@ -1,20 +1,28 @@
import axios from "axios";
import { isNil } from "lodash";
import { METRON_SERVICE_URI } from "../constants/endpoints";
export const fetchMetronResource = async (options) => {
console.log(options);
const metronResourceResults = await axios.post(
`${METRON_SERVICE_URI}/fetchResource`,
options,
);
console.log(metronResourceResults);
const foo = metronResourceResults.data.results.map((result) => {
console.log("has more? ", !isNil(metronResourceResults.data.results.next));
const results = metronResourceResults.data.results.map((result) => {
return {
label: result.name,
value: result.id,
};
});
console.log({ options: foo, hasMore: false });
return { options: foo, hasMore: false };
return {
options: results,
hasMore: !isNil(metronResourceResults.data.next),
additional: {
page: !isNil(metronResourceResults.data.next)
? options.query.page + 1
: null,
},
};
};

View File

@@ -16,14 +16,15 @@ export const EditMetadataPanel = (props): ReactElement => {
};
const dispatch = useDispatch();
const [value, onChange] = useState(null);
const [isAddingInProgress, setIsAddingInProgress] = useState(false);
const mudasir = useCallback((query) => {
const mudasir = useCallback((query, loadedOptions, { page }) => {
return fetchMetronResource({
method: "GET",
resource: "publisher",
query: {
name: query,
page: 1,
page,
},
});
}, []);
@@ -119,13 +120,14 @@ export const EditMetadataPanel = (props): ReactElement => {
<p className="control is-expanded has-icons-left">
<CreatableAsyncPaginate
SelectComponent={Creatable}
debounceTimeout={3}
// isDisabled={isAddingInProgress}
debounceTimeout={200}
isDisabled={isAddingInProgress}
value={value}
loadOptions={(e) => mudasir(e)}
loadOptions={mudasir}
// onCreateOption={onCreateOption}
onChange={onChange}
// cacheUniqs={[cacheUniq]}
additional={{ page: 1 }}
/>
</p>
</div>