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