File size: 2,288 Bytes
a85c9b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { useState } from "react";

export default function SetOpenAIKey({ setIsKeyPresent }) {
  const [openAIKey, setOpenAIKey] = useState("");
  const [status, setStatus] = useState("");

  const handleOpenAIKey = async (e) => {
    e.preventDefault();
    const response = await fetch("/api/set_key", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ openAIKey }),
    });

    if (response.ok) {
      setOpenAIKey("");
      setStatus("success");
      setIsKeyPresent(true);
    } else {
      setStatus("fail");
    }

    setTimeout(() => {
      setStatus("");
    }, 3000);
  };

  return (
    <>
      <div className="w-full">
        {/* Set Open AI Key */}
        <h2 className="text-xl font-bold text-gray-800">SET OPENAI KEY</h2>
        <form className="py-2" onSubmit={handleOpenAIKey}>
          <label
            htmlFor="openai_key"
            className="block mb-2 text-sm font-medium text-gray-900"
          >
            OpenAI Key
          </label>
          <div className="flex flex-col sm:flex-row gap-x-4 gap-y-4">
            <input
              type="password"
              id="openai_key"
              className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5"
              placeholder="Enter Open AI Key here"
              required
              value={openAIKey}
              onChange={(e) => setOpenAIKey(e.target.value)}
            />
            <button
              type="submit"
              className="h-fit text-white bg-black hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center"
            >
              Submit
            </button>
          </div>
          {status === "success" && (
            <div className="text-green-600 text-sm font-bold py-1">
              Your Open AI key has been saved successfully!
            </div>
          )}
          {status === "fail" && (
            <div className="text-red-600 text-sm font-bold py-1">
              An error occurred while saving your OpenAI Key!
            </div>
          )}
        </form>
      </div>
    </>
  );
}