fix: fix welcome screen azure config submit (#998)
This commit is contained in:
@@ -70,64 +70,77 @@ export function ProviderGrid({ onSubmit }: ProviderGridProps) {
|
|||||||
setShowSetupModal(true);
|
setShowSetupModal(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleModalSubmit = async (apiKey: string) => {
|
const handleModalSubmit = async (configValues: { [key: string]: string }) => {
|
||||||
if (!selectedId) return;
|
if (!selectedId) return;
|
||||||
|
|
||||||
const provider = providers.find((p) => p.id === selectedId)?.name;
|
const provider = providers.find((p) => p.id === selectedId)?.name;
|
||||||
const keyName = required_keys[provider]?.[0];
|
if (!provider) return;
|
||||||
|
|
||||||
if (!keyName) {
|
const requiredKeys = required_keys[provider];
|
||||||
console.error(`No key found for provider ${provider}`);
|
if (!requiredKeys || requiredKeys.length === 0) {
|
||||||
|
console.error(`No keys found for provider ${provider}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isSecret = isSecretKey(keyName);
|
|
||||||
try {
|
try {
|
||||||
if (selectedId && providers.find((p) => p.id === selectedId)?.isConfigured) {
|
// Delete existing keys if provider is already configured
|
||||||
const deleteResponse = await fetch(getApiUrl('/configs/delete'), {
|
const isUpdate = providers.find((p) => p.id === selectedId)?.isConfigured;
|
||||||
method: 'DELETE',
|
if (isUpdate) {
|
||||||
|
for (const keyName of requiredKeys) {
|
||||||
|
const isSecret = isSecretKey(keyName);
|
||||||
|
const deleteResponse = await fetch(getApiUrl('/configs/delete'), {
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'X-Secret-Key': getSecretKey(),
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
key: keyName,
|
||||||
|
isSecret,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!deleteResponse.ok) {
|
||||||
|
const errorText = await deleteResponse.text();
|
||||||
|
console.error('Delete response error:', errorText);
|
||||||
|
throw new Error(`Failed to delete old key: ${keyName}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store new keys
|
||||||
|
for (const keyName of requiredKeys) {
|
||||||
|
const value = configValues[keyName];
|
||||||
|
if (!value) {
|
||||||
|
console.error(`Missing value for required key: ${keyName}`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isSecret = isSecretKey(keyName);
|
||||||
|
const storeResponse = await fetch(getApiUrl('/configs/store'), {
|
||||||
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'X-Secret-Key': getSecretKey(),
|
'X-Secret-Key': getSecretKey(),
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
key: keyName,
|
key: keyName,
|
||||||
|
value: value,
|
||||||
isSecret,
|
isSecret,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!deleteResponse.ok) {
|
if (!storeResponse.ok) {
|
||||||
const errorText = await deleteResponse.text();
|
const errorText = await storeResponse.text();
|
||||||
console.error('Delete response error:', errorText);
|
console.error('Store response error:', errorText);
|
||||||
throw new Error('Failed to delete old key');
|
throw new Error(`Failed to store new key: ${keyName}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const storeResponse = await fetch(getApiUrl('/configs/store'), {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Secret-Key': getSecretKey(),
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
key: keyName,
|
|
||||||
value: apiKey.trim(),
|
|
||||||
isSecret,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!storeResponse.ok) {
|
|
||||||
const errorText = await storeResponse.text();
|
|
||||||
console.error('Store response error:', errorText);
|
|
||||||
throw new Error('Failed to store new key');
|
|
||||||
}
|
|
||||||
|
|
||||||
const isUpdate = selectedId && providers.find((p) => p.id === selectedId)?.isConfigured;
|
|
||||||
const toastInfo = isSecret ? 'API key' : 'host';
|
|
||||||
toast.success(
|
toast.success(
|
||||||
isUpdate
|
isUpdate
|
||||||
? `Successfully updated ${toastInfo} for ${provider}`
|
? `Successfully updated configuration for ${provider}`
|
||||||
: `Successfully added ${toastInfo} for ${provider}`
|
: `Successfully added configuration for ${provider}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const updatedKeys = await getActiveProviders();
|
const updatedKeys = await getActiveProviders();
|
||||||
@@ -138,7 +151,7 @@ export function ProviderGrid({ onSubmit }: ProviderGridProps) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error handling modal submit:', error);
|
console.error('Error handling modal submit:', error);
|
||||||
toast.error(
|
toast.error(
|
||||||
`Failed to ${selectedId && providers.find((p) => p.id === selectedId)?.isConfigured ? 'update' : 'add'} API key for ${provider}`
|
`Failed to ${providers.find((p) => p.id === selectedId)?.isConfigured ? 'update' : 'add'} configuration for ${provider}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user