From 57614af88bb3ead770482bfc97f0bbe002f04e78 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 30 May 2023 22:45:04 +0200 Subject: [PATCH] Created the Decoder.jsx --- .../pages/tools/base64/Decoder/Decoder.jsx | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 client/src/pages/tools/base64/Decoder/Decoder.jsx diff --git a/client/src/pages/tools/base64/Decoder/Decoder.jsx b/client/src/pages/tools/base64/Decoder/Decoder.jsx new file mode 100644 index 0000000..f2ef968 --- /dev/null +++ b/client/src/pages/tools/base64/Decoder/Decoder.jsx @@ -0,0 +1,45 @@ +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 TextArea from "@/pages/tools/base64/components/TextArea"; +import InfoArea from "@/common/components/InfoArea"; +import "./styles.sass"; + +export const Decoder = () => { + const [searchParams] = useSearchParams(); + const [inputString, setInputString] = useState(searchParams.get("input") || ""); + const [outputString, setOutputString] = useState(""); + + useEffect(() => { + setOutputString(Buffer.from(inputString, "base64").toString("utf-8")); + }, [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 ( + <> + +