| 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; |
|
|