diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-01 23:55:10 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-01 23:55:10 +0000 |
| commit | 3f5f1850b17eb0f5c4cd0970c22421f85d5a2bd6 (patch) | |
| tree | 7e3c90392585ead6ab1dfcf234e81e17be5185ea /packages/browser-extension/src/OptionsPage.tsx | |
| parent | 7ddcfb630d3dec3d9fecbfd6a498ca7c572809ec (diff) | |
| download | karakeep-3f5f1850b17eb0f5c4cd0970c22421f85d5a2bd6.tar.zst | |
feature: Default server address for the bookmark and a spinner while its saving
Diffstat (limited to 'packages/browser-extension/src/OptionsPage.tsx')
| -rw-r--r-- | packages/browser-extension/src/OptionsPage.tsx | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/packages/browser-extension/src/OptionsPage.tsx b/packages/browser-extension/src/OptionsPage.tsx index e3a34bd9..11a1a76d 100644 --- a/packages/browser-extension/src/OptionsPage.tsx +++ b/packages/browser-extension/src/OptionsPage.tsx @@ -1,4 +1,4 @@ -import { useRef } from "react"; +import { useRef, useState } from "react"; import usePluginSettings from "./settings"; export default function OptionsPage() { @@ -7,35 +7,51 @@ export default function OptionsPage() { const apiKeyRef = useRef<HTMLInputElement>(null); const addressRef = useRef<HTMLInputElement>(null); + const [isSaved, setIsSaved] = useState(false); + const [error, setError] = useState<string | null>(null); + const onSave = () => { + if (apiKeyRef.current?.value == "") { + setError("API Key can't be empty"); + return; + } + if (addressRef.current?.value == "") { + setError("Server addres can't be empty"); + return; + } setSettings({ apiKey: apiKeyRef.current?.value || "", - address: addressRef.current?.value || "", + address: addressRef.current?.value || "https://demo.hoarder.app", }); + setTimeout(() => { + setIsSaved(false); + }, 2000); + setIsSaved(true); }; return ( <div className="flex flex-col space-y-2"> <span className="text-lg">Settings</span> <hr /> - <div className="flex space-x-2 pt-2"> - <label className="m-auto h-full">API Key</label> + <p className="text-red-500">{error}</p> + <div className="flex space-x-2"> + <label className="m-auto h-full">Server Address</label> <input - ref={apiKeyRef} - defaultValue={settings.apiKey} + ref={addressRef} + defaultValue={settings.address || "https://demo.hoarder.app"} className="h-8 flex-1 rounded-lg border border-gray-300 p-2" /> </div> - <div className="flex space-x-2"> - <label className="m-auto h-full">Server Address</label> + <div className="flex space-x-2 pt-2"> + <label className="m-auto h-full">API Key</label> <input - ref={addressRef} - defaultValue={settings.address} + ref={apiKeyRef} + defaultValue={settings.apiKey} className="h-8 flex-1 rounded-lg border border-gray-300 p-2" /> </div> <button className="rounded-lg border border-gray-200" onClick={onSave}> - Save + {isSaved ? "Saved!" : "Save"} </button> </div> ); |
