import { useAPIClient, useRequest } from '@nocobase/client';
import { Spin } from 'antd';
import React, { createContext, useContext, useEffect } from 'react';
import { useLocation } from 'react-router-dom';
export const ChartQueryMetadataContext = createContext({
refresh: () => {},
data: [] as any[],
});
export const ChartQueryMetadataProvider: React.FC = (props) => {
const api = useAPIClient();
const options = {
resource: 'chartsQueries',
action: 'listMetadata',
params: {
paginate: false,
sort: ['-id'],
},
};
const location = useLocation();
const service = useRequest(options, {
manual: true,
});
const isAdminPage = location.pathname.startsWith('/admin');
const token = api.auth.getToken() || '';
useEffect(() => {
if (isAdminPage && token) {
service.run();
}
}, [isAdminPage, token]);
const refresh = async () => {
const { data } = await api.request(options);
service.mutate(data);
return data?.data || [];
};
if (service.loading) {
return ;
}
return (
{props.children}
);
};
export const useChartQueryMetadataContext = () => {
return useContext(ChartQueryMetadataContext);
};