mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 08:33:20 +00:00
(refactor): purge unused files
This commit is contained in:
@@ -1,50 +0,0 @@
|
|||||||
import * as React from 'react';
|
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
interface ModalProps {
|
|
||||||
handleSubmit: () => void;
|
|
||||||
isCancellable: boolean;
|
|
||||||
handleCancel?: () => void;
|
|
||||||
render: () => JSX.Element;
|
|
||||||
modalState: string;
|
|
||||||
isError: boolean;
|
|
||||||
errorMessage?: string;
|
|
||||||
textDelete?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Modal = (props: ModalProps) => {
|
|
||||||
const { t } = useTranslation();
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={`${
|
|
||||||
props.modalState === 'ACTIVE' ? 'visible' : 'hidden'
|
|
||||||
} absolute z-30 h-screen w-screen bg-gray-alpha`}
|
|
||||||
>
|
|
||||||
{props.render()}
|
|
||||||
<div className=" mx-auto flex w-[90vw] max-w-lg flex-row-reverse rounded-b-lg bg-white pb-5 pr-5 shadow-lg dark:bg-outer-space">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
onClick={() => props.handleSubmit()}
|
|
||||||
className="ml-auto h-10 w-20 rounded-3xl bg-violet-800 text-white transition-all hover:bg-violet-700 dark:text-silver"
|
|
||||||
>
|
|
||||||
{props.textDelete ? 'Delete' : 'Save'}
|
|
||||||
</button>
|
|
||||||
{props.isCancellable && (
|
|
||||||
<button
|
|
||||||
onClick={() => props.handleCancel && props.handleCancel()}
|
|
||||||
className="cursor-pointer rounded-3xl px-5 py-2 text-sm font-medium hover:bg-gray-100 dark:bg-transparent dark:text-light-gray dark:hover:bg-[#767183]/50"
|
|
||||||
>
|
|
||||||
{t('cancel')}
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
{props.isError && (
|
|
||||||
<p className="mx-auto mt-2 mr-auto text-sm text-red-500">
|
|
||||||
{props.errorMessage}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Modal;
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
import { useRef, useState } from 'react';
|
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
|
||||||
import { ActiveState } from '../models/misc';
|
|
||||||
import { selectApiKey, setApiKey } from './preferenceSlice';
|
|
||||||
import { useMediaQuery, useOutsideAlerter } from './../hooks';
|
|
||||||
import Modal from '../modals';
|
|
||||||
import Input from '../components/Input';
|
|
||||||
|
|
||||||
export default function APIKeyModal({
|
|
||||||
modalState,
|
|
||||||
setModalState,
|
|
||||||
isCancellable = true,
|
|
||||||
}: {
|
|
||||||
modalState: ActiveState;
|
|
||||||
setModalState: (val: ActiveState) => void;
|
|
||||||
isCancellable?: boolean;
|
|
||||||
}) {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
const apiKey = useSelector(selectApiKey);
|
|
||||||
const [key, setKey] = useState(apiKey);
|
|
||||||
const [isError, setIsError] = useState(false);
|
|
||||||
const modalRef = useRef(null);
|
|
||||||
const { isMobile } = useMediaQuery();
|
|
||||||
|
|
||||||
useOutsideAlerter(modalRef, () => {
|
|
||||||
if (isMobile && modalState === 'ACTIVE') {
|
|
||||||
setModalState('INACTIVE');
|
|
||||||
}
|
|
||||||
}, [modalState]);
|
|
||||||
|
|
||||||
function handleSubmit() {
|
|
||||||
if (key.length <= 1) {
|
|
||||||
setIsError(true);
|
|
||||||
} else {
|
|
||||||
dispatch(setApiKey(key));
|
|
||||||
setModalState('INACTIVE');
|
|
||||||
setIsError(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleCancel() {
|
|
||||||
setKey(apiKey);
|
|
||||||
setIsError(false);
|
|
||||||
setModalState('INACTIVE');
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Modal
|
|
||||||
handleCancel={handleCancel}
|
|
||||||
isError={isError}
|
|
||||||
modalState={modalState}
|
|
||||||
isCancellable={isCancellable}
|
|
||||||
handleSubmit={handleSubmit}
|
|
||||||
render={() => {
|
|
||||||
return (
|
|
||||||
<article
|
|
||||||
ref={modalRef}
|
|
||||||
className="mx-auto mt-24 flex w-[90vw] max-w-lg flex-col gap-4 rounded-t-lg bg-white p-6 shadow-lg"
|
|
||||||
>
|
|
||||||
<p className="text-xl text-jet">OpenAI API Key</p>
|
|
||||||
<p className="text-md leading-6 text-gray-500">
|
|
||||||
Before you can start using DocsGPT we need you to provide an API
|
|
||||||
key for llm. Currently, we support only OpenAI but soon many more.
|
|
||||||
You can find it here.
|
|
||||||
</p>
|
|
||||||
<Input
|
|
||||||
type="text"
|
|
||||||
colorVariant="jet"
|
|
||||||
className="h-10 border-b-2 focus:outline-none"
|
|
||||||
value={key}
|
|
||||||
maxLength={100}
|
|
||||||
placeholder="API Key"
|
|
||||||
onChange={(e) => setKey(e.target.value)}
|
|
||||||
></Input>
|
|
||||||
</article>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user