mirror of
https://github.com/TheRealOwenRees/chess-scribe-website.git
synced 2026-09-19 11:03:52 +00:00
Import study link (#1)
* add bug to todo * disabled import study button if no study ID is selected, but always show if logged in as not to break the layout * basic import of lichess study link * change interface import * Minmax M3 solution to import study chapter/game functionality * change button text * fix toast to display on study and chapter load * add lint and format fix scripts * apply auto formatting * update ignored directories * fix specificity * add rudimentary PDF count metrics * allow docker build * create maintenance mode banner, triggered by env variables
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import type { FormEvent } from "react";
|
||||
import { toast } from "react-toastify";
|
||||
import { useLichess } from "#/hooks/useLichess.ts";
|
||||
|
||||
interface IProps {
|
||||
setSelectedStudyId: (id: string) => void;
|
||||
}
|
||||
|
||||
const LichessStudyLinkInput = ({ setSelectedStudyId }: IProps) => {
|
||||
const { parseLichessStudyLink } = useLichess();
|
||||
|
||||
const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
const formData = new FormData(e.currentTarget);
|
||||
const studyLink = formData.get("lichess-study-link");
|
||||
|
||||
if (!studyLink) return;
|
||||
|
||||
if (typeof studyLink !== "string") {
|
||||
toast.error("Invalid study link");
|
||||
return;
|
||||
}
|
||||
|
||||
const result = parseLichessStudyLink(studyLink);
|
||||
|
||||
if (!result.ok) {
|
||||
toast.error(result.error);
|
||||
return;
|
||||
}
|
||||
|
||||
setSelectedStudyId(result.data);
|
||||
toast.success("Study loaded — pick a chapter");
|
||||
};
|
||||
|
||||
return (
|
||||
<form className="flex items-end gap-2" onSubmit={handleSubmit}>
|
||||
<div>
|
||||
<label htmlFor="lichess-study-link" className="text-sm capitalize">
|
||||
Lichess Study Link
|
||||
</label>
|
||||
<input
|
||||
className="border rounded-md p-2 w-full"
|
||||
type="text"
|
||||
id="lichess-study-link"
|
||||
name="lichess-study-link"
|
||||
placeholder="https://lichess.org/study/..."
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
type="submit"
|
||||
className="border py-2 px-3 rounded-md cursor-pointer bg-(--accent) text-white hover:bg-transparent hover:text-(--accent) transition-colors duration-300 ease-in-out"
|
||||
>
|
||||
Submit
|
||||
</button>
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
||||
export default LichessStudyLinkInput;
|
||||
Reference in New Issue
Block a user