File size: 1,087 Bytes
9705b6c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;