Fix ESLint warnings and and enable max warnings 0 to fail builds (#2101)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React, { createContext, useContext, useState, useEffect, useMemo } from 'react';
|
||||
import React, { createContext, useContext, useState, useEffect, useMemo, useCallback } from 'react';
|
||||
import {
|
||||
readAllConfig,
|
||||
readConfig,
|
||||
@@ -70,6 +70,115 @@ export const ConfigProvider: React.FC<ConfigProviderProps> = ({ children }) => {
|
||||
const [providersList, setProvidersList] = useState<ProviderDetails[]>([]);
|
||||
const [extensionsList, setExtensionsList] = useState<FixedExtensionEntry[]>([]);
|
||||
|
||||
const reloadConfig = useCallback(async () => {
|
||||
const response = await readAllConfig();
|
||||
setConfig(response.data.config || {});
|
||||
}, []);
|
||||
|
||||
const upsert = useCallback(
|
||||
async (key: string, value: unknown, isSecret: boolean = false) => {
|
||||
const query: UpsertConfigQuery = {
|
||||
key: key,
|
||||
value: value,
|
||||
is_secret: isSecret,
|
||||
};
|
||||
await upsertConfig({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
},
|
||||
[reloadConfig]
|
||||
);
|
||||
|
||||
const read = useCallback(async (key: string, is_secret: boolean = false) => {
|
||||
const query: ConfigKeyQuery = { key: key, is_secret: is_secret };
|
||||
const response = await readConfig({
|
||||
body: query,
|
||||
});
|
||||
return response.data;
|
||||
}, []);
|
||||
|
||||
const remove = useCallback(
|
||||
async (key: string, is_secret: boolean) => {
|
||||
const query: ConfigKeyQuery = { key: key, is_secret: is_secret };
|
||||
await removeConfig({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
},
|
||||
[reloadConfig]
|
||||
);
|
||||
|
||||
const addExtension = useCallback(
|
||||
async (name: string, config: ExtensionConfig, enabled: boolean) => {
|
||||
// remove shims if present
|
||||
if (config.type === 'stdio') {
|
||||
config.cmd = removeShims(config.cmd);
|
||||
}
|
||||
const query: ExtensionQuery = { name, config, enabled };
|
||||
await apiAddExtension({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
},
|
||||
[reloadConfig]
|
||||
);
|
||||
|
||||
const removeExtension = useCallback(
|
||||
async (name: string) => {
|
||||
await apiRemoveExtension({ path: { name: name } });
|
||||
await reloadConfig();
|
||||
},
|
||||
[reloadConfig]
|
||||
);
|
||||
|
||||
const getExtensions = useCallback(
|
||||
async (forceRefresh = false): Promise<FixedExtensionEntry[]> => {
|
||||
if (forceRefresh || extensionsList.length === 0) {
|
||||
const result = await apiGetExtensions();
|
||||
|
||||
if (result.response.status === 422) {
|
||||
throw new MalformedConfigError();
|
||||
}
|
||||
|
||||
if (result.error && !result.data) {
|
||||
console.log(result.error);
|
||||
return extensionsList;
|
||||
}
|
||||
|
||||
const extensionResponse: ExtensionResponse = result.data;
|
||||
setExtensionsList(extensionResponse.extensions);
|
||||
return extensionResponse.extensions;
|
||||
}
|
||||
return extensionsList;
|
||||
},
|
||||
[extensionsList]
|
||||
);
|
||||
|
||||
const toggleExtension = useCallback(
|
||||
async (name: string) => {
|
||||
const exts = await getExtensions(true);
|
||||
const extension = exts.find((ext) => ext.name === name);
|
||||
|
||||
if (extension) {
|
||||
await addExtension(name, extension, !extension.enabled);
|
||||
}
|
||||
},
|
||||
[addExtension, getExtensions]
|
||||
);
|
||||
|
||||
const getProviders = useCallback(
|
||||
async (forceRefresh = false): Promise<ProviderDetails[]> => {
|
||||
if (forceRefresh || providersList.length === 0) {
|
||||
const response = await providers();
|
||||
setProvidersList(response.data);
|
||||
return response.data;
|
||||
}
|
||||
return providersList;
|
||||
},
|
||||
[providersList]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
// Load all configuration data and providers on mount
|
||||
(async () => {
|
||||
@@ -95,100 +204,6 @@ export const ConfigProvider: React.FC<ConfigProviderProps> = ({ children }) => {
|
||||
})();
|
||||
}, []);
|
||||
|
||||
const reloadConfig = async () => {
|
||||
const response = await readAllConfig();
|
||||
setConfig(response.data.config || {});
|
||||
};
|
||||
|
||||
const upsert = async (key: string, value: unknown, isSecret: boolean = false) => {
|
||||
const query: UpsertConfigQuery = {
|
||||
key: key,
|
||||
value: value,
|
||||
is_secret: isSecret,
|
||||
};
|
||||
await upsertConfig({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
};
|
||||
|
||||
const read = async (key: string, is_secret: boolean = false) => {
|
||||
const query: ConfigKeyQuery = { key: key, is_secret: is_secret };
|
||||
const response = await readConfig({
|
||||
body: query,
|
||||
});
|
||||
return response.data;
|
||||
};
|
||||
|
||||
const remove = async (key: string, is_secret: boolean) => {
|
||||
const query: ConfigKeyQuery = { key: key, is_secret: is_secret };
|
||||
await removeConfig({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
};
|
||||
|
||||
const addExtension = async (name: string, config: ExtensionConfig, enabled: boolean) => {
|
||||
// remove shims if present
|
||||
if (config.type == 'stdio') {
|
||||
config.cmd = removeShims(config.cmd);
|
||||
}
|
||||
const query: ExtensionQuery = { name, config, enabled };
|
||||
await apiAddExtension({
|
||||
body: query,
|
||||
});
|
||||
await reloadConfig();
|
||||
};
|
||||
|
||||
const removeExtension = async (name: string) => {
|
||||
await apiRemoveExtension({ path: { name: name } });
|
||||
await reloadConfig();
|
||||
};
|
||||
|
||||
const toggleExtension = async (name: string) => {
|
||||
// Get current extensions to find the one we need to toggle
|
||||
const exts = await getExtensions(true);
|
||||
const extension = exts.find((ext) => ext.name === name);
|
||||
|
||||
if (extension) {
|
||||
// Toggle the enabled state and update using addExtension
|
||||
await addExtension(name, extension, !extension.enabled);
|
||||
}
|
||||
};
|
||||
|
||||
const getProviders = async (forceRefresh = false): Promise<ProviderDetails[]> => {
|
||||
if (forceRefresh || providersList.length === 0) {
|
||||
// If a refresh is forced or we don't have providers yet
|
||||
const response = await providers();
|
||||
setProvidersList(response.data);
|
||||
return response.data;
|
||||
}
|
||||
// Otherwise return the cached providers
|
||||
return providersList;
|
||||
};
|
||||
|
||||
const getExtensions = async (forceRefresh = false): Promise<FixedExtensionEntry[]> => {
|
||||
// If a refresh is forced, or we don't have providers yet
|
||||
if (forceRefresh || extensionsList.length === 0) {
|
||||
const result = await apiGetExtensions();
|
||||
|
||||
if (result.response.status === 422) {
|
||||
throw new MalformedConfigError();
|
||||
}
|
||||
|
||||
if (result.error && !result.data) {
|
||||
console.log(result.error);
|
||||
return;
|
||||
}
|
||||
|
||||
const extensionResponse: ExtensionResponse = result.data;
|
||||
setExtensionsList(extensionResponse.extensions);
|
||||
return extensionResponse.extensions;
|
||||
}
|
||||
// Otherwise return the cached providers
|
||||
return extensionsList;
|
||||
};
|
||||
|
||||
const contextValue = useMemo(
|
||||
() => ({
|
||||
config,
|
||||
|
||||
Reference in New Issue
Block a user