chat-with-gpt/app/src/components/settings/user.tsx

42 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-03-10 22:00:37 +00:00
import SettingsTab from "./tab";
import SettingsOption from "./option";
import { TextInput } from "@mantine/core";
import { useCallback, useMemo } from "react";
import { useAppDispatch, useAppSelector } from "../../store";
import { selectOpenAIApiKey, setOpenAIApiKeyFromEvent } from "../../store/api-keys";
import { selectSettingsOption } from "../../store/settings-ui";
2023-03-14 11:00:40 +00:00
import { FormattedMessage, useIntl } from "react-intl";
2023-03-10 22:00:37 +00:00
export default function UserOptionsTab(props: any) {
const option = useAppSelector(selectSettingsOption);
const openaiApiKey = useAppSelector(selectOpenAIApiKey);
2023-03-14 11:00:40 +00:00
const intl = useIntl()
2023-03-10 22:00:37 +00:00
const dispatch = useAppDispatch();
const onOpenAIApiKeyChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => dispatch(setOpenAIApiKeyFromEvent(event)), [dispatch]);
const elem = useMemo(() => (
<SettingsTab name="user">
2023-03-16 20:05:45 +00:00
<SettingsOption heading={intl.formatMessage({ defaultMessage: "Your OpenAI API Key", description: "Heading for the OpenAI API key setting on the settings screen" })}
2023-03-14 11:00:40 +00:00
focused={option === 'openai-api-key'}>
2023-03-10 22:00:37 +00:00
<TextInput
2023-03-14 11:00:40 +00:00
placeholder={intl.formatMessage({ defaultMessage: "Paste your API key here" })}
2023-03-10 22:00:37 +00:00
value={openaiApiKey || ''}
onChange={onOpenAIApiKeyChange} />
2023-03-14 11:00:40 +00:00
<p>
<a href="https://platform.openai.com/account/api-keys" target="_blank" rel="noreferrer">
2023-03-16 20:05:45 +00:00
<FormattedMessage defaultMessage="Find your API key here." description="Label for the link that takes the user to the page on the OpenAI website where they can find their API key." />
2023-03-14 11:00:40 +00:00
</a>
</p>
<p>
<FormattedMessage defaultMessage="Your API key is stored only on this device and never transmitted to anyone except OpenAI." />
</p>
<p>
<FormattedMessage defaultMessage="OpenAI API key usage is billed at a pay-as-you-go rate, separate from your ChatGPT subscription." />
</p>
2023-03-10 22:00:37 +00:00
</SettingsOption>
</SettingsTab>
), [option, openaiApiKey, onOpenAIApiKeyChange]);
return elem;
}