From d8f5ceb5989d8ef1d11eb1ee530306cd44e6388c Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 30 May 2023 21:33:57 +0200 Subject: [PATCH] Created the Encoder.jsx --- client/src/pages/tools/base64/Encoder.jsx | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 client/src/pages/tools/base64/Encoder.jsx diff --git a/client/src/pages/tools/base64/Encoder.jsx b/client/src/pages/tools/base64/Encoder.jsx new file mode 100644 index 0000000..1300579 --- /dev/null +++ b/client/src/pages/tools/base64/Encoder.jsx @@ -0,0 +1,44 @@ +import {useEffect, useState} from "react"; +import {useSearchParams} from "react-router-dom"; +import {Buffer} from "buffer"; +import Button from "@/common/components/Button"; +import {faCopy, faShare} from "@fortawesome/free-solid-svg-icons"; +import InfoArea from "@/common/components/InfoArea/index.js"; +import "./styles.sass"; + +export const Encoder = () => { + const [searchParams] = useSearchParams(); + const [inputString, setInputString] = useState(searchParams.get("input") || ""); + const [outputString, setOutputString] = useState(""); + + useEffect(() => { + setOutputString(Buffer.from(inputString).toString("base64")); + }, [inputString]); + + const shareLink = () => { + const url = new URL(window.location.href); + url.searchParams.set("input", inputString); + navigator.clipboard.writeText(url.href); + } + + const copyToClipboard = () => outputString !== "" ? navigator.clipboard.writeText(outputString) : ""; + + return ( + <> + +