mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 18:30:15 +01:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
|
|
import React from 'react';
|
||
|
|
import { object, string } from 'zod';
|
||
|
|
import type { TConfigProps } from '~/common';
|
||
|
|
import FileUpload from '../EndpointMenu/FileUpload';
|
||
|
|
import { useLocalize } from '~/hooks';
|
||
|
|
|
||
|
|
const CredentialsSchema = object({
|
||
|
|
client_email: string().email().min(3),
|
||
|
|
project_id: string().min(3),
|
||
|
|
private_key: string().min(601),
|
||
|
|
});
|
||
|
|
|
||
|
|
const validateCredentials = (credentials: Record<string, unknown>) => {
|
||
|
|
const result = CredentialsSchema.safeParse(credentials);
|
||
|
|
return result.success;
|
||
|
|
};
|
||
|
|
|
||
|
|
const GoogleConfig = ({ setUserKey }: Pick<TConfigProps, 'setUserKey'>) => {
|
||
|
|
const localize = useLocalize();
|
||
|
|
return (
|
||
|
|
<FileUpload
|
||
|
|
id="googleKey"
|
||
|
|
className="w-full"
|
||
|
|
text={localize('com_endpoint_config_key_import_json_key')}
|
||
|
|
successText={localize('com_endpoint_config_key_import_json_key_success')}
|
||
|
|
invalidText={localize('com_endpoint_config_key_import_json_key_invalid')}
|
||
|
|
validator={validateCredentials}
|
||
|
|
onFileSelected={(data) => {
|
||
|
|
setUserKey(JSON.stringify(data));
|
||
|
|
}}
|
||
|
|
/>
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
export default GoogleConfig;
|