Untitled
unknown
plain_text
2 years ago
8.2 kB
4
Indexable
"use client"; import MainLayout from "@/app/components/Layouts/MainLayout"; import PasswordFild from "@/app/components/PasswordFild"; import { useEffect, useState } from "react"; import toast from "react-hot-toast"; const Page = () => { const [settings, setSettings] = useState({ defaultCopies: 1, pricePerSet: 0, vatPercentage: 0, nodemailerMail: "", // Add state for Nodemailer mail nodemailerPassword: "", // Add state for Nodemailer password firebaseServerkey: "", // Add state for Firebase Serverkey }); useEffect(() => { // Fetch the previous data when the component mounts async function fetchSettings() { try { const response = await fetch( `${process.env.NEXT_PUBLIC_BACKEND_URL}/settings` ); if (response.ok) { const data = await response.json(); setSettings(data.settings); } else { // Handle error console.error("Failed to fetch settings."); } } catch (error) { // Handle network or other errors console.error("Failed to fetch settings.", error); } } fetchSettings(); }, []); // The empty dependency array ensures this runs only once on component mount const handleChange = (e) => { const { name, value } = e.target; setSettings({ ...settings, [name]: value, }); }; const handleSave = async () => { try { const response = await fetch( `${process.env.NEXT_PUBLIC_BACKEND_URL}/settings`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(settings), } ); if (response.ok) { // Settings successfully updated toast.success("Settings updated!"); } else { // Handle error toast.error("Failed to update settings."); } } catch (error) { // Handle network or other errors console.error(error); alert("Failed to update settings."); } }; const [passwordType, setPasswordType] = useState(false) const handlePasswordShow = async (e) => { setPasswordType(!passwordType) }; return ( <MainLayout> <div className="bg-white p-6"> <h1 className="text-lg font-semibold">Image Settings</h1> <hr className="my-2" /> <div className="p-4"> <label>Default Number of Copies Per Set</label> <input className="my-1 w-full border p-2" name="defaultCopies" value={settings.defaultCopies} onChange={handleChange} /> <label>Price Per Set</label> <input className="my-1 w-full border p-2" name="pricePerSet" value={settings.pricePerSet} onChange={handleChange} /> <label>VAT (%)</label> <input className="my-1 w-full border p-2" name="vatPercentage" value={settings.vatPercentage} onChange={handleChange} /> </div> <h1 className="mt-8 text-lg font-semibold">Nodemailer Settings</h1>{" "} <hr /> <div className="mt-2 flex flex-row justify-between p-4"> <div className="mr-2 flex w-1/2 flex-col"> <label className="mb-2 font-semibold">Nodemailer Mail:</label> <input className="flex-grow border p-2" type="email" name="nodemailerMail" value={settings.nodemailerMail} onChange={handleChange} placeholder="Enter your Nodemailer mail" /> </div> <div className="flex w-1/2 flex-col"> <label className="mb-2 font-semibold">Nodemailer Password:</label> {/* <input className="flex-grow border p-2" type="password" name="nodemailerPassword" value={settings.nodemailerPassword} onChange={handleChange} placeholder="Enter your Nodemailer password" /> */} <PasswordFild password={settings.nodemailerPassword} handleChange={handleChange} /> </div> </div> <h1 className="mt-8 text-lg font-semibold">Firebase Serverkey</h1>{" "} <hr /> <div className="mt-2 p-4"> <div> <label className="mb-2 font-semibold">Server-Key: </label> {/* <input className="w-full flex-grow border p-2" type="password" name="firebaseServerkey" value={settings.firebaseServerkey} onChange={handleChange} placeholder="Enter your Firebase Serverkey" /> */} <PasswordFild password={settings.firebaseServerkey} handleChange={handleChange} /> </div> </div> <h1 className="mt-8 text-lg font-semibold">Hotpot Key</h1> <hr /> <div className="mt-2 p-4"> <div> <label className="mb-2 font-semibold">Hot-Pot key: </label> {/* <input className="w-full flex-grow border p-2" type="password" name="hotpotKey" value={settings.hotpotKey} onChange={handleChange} placeholder="Enter your Firebase Serverkey" /> */} <PasswordFild password={settings.hotpotKey} handleChange={handleChange} /> </div> </div> <h1 className="mt-8 text-lg font-semibold">Cloudinary Settings</h1>{" "} <hr /> <div className="mt-2 p-4"> <div className="flex gap-5"> <div className="flex w-1/3 flex-col"> <label className="mb-2 font-semibold"> Cloudinary Cloud Name:{" "} </label> {/* <input className="w-full flex-grow border p-2" type="password" name="cloudinaryCloudName" value={settings.cloudinaryCloudName} onChange={handleChange} placeholder="Enter your Firebase Serverkey" /> */} <PasswordFild password={settings.cloudinaryCloudName} handleChange={handleChange} /> </div> <div className="flex w-1/3 flex-col"> <label className="mb-2 font-semibold">Cloudinary Api Key: </label> {/* <input className=" flex-grow border p-2" type="password" name="cloudinaryApiKey" value={settings.cloudinaryApiKey} onChange={handleChange} placeholder="Enter your Firebase Serverkey" /> */} <PasswordFild password={settings.cloudinaryApiKey} handleChange={handleChange} /> </div> <div className="flex w-1/3 flex-col"> <label className="mb-2 font-semibold"> Clodinary App Secrect: </label> {/* <input name="cloudinaryAppSecrect" value={settings.cloudinaryAppSecrect} onChange={handleChange} type="password" placeholder="Password" className="input input-bordered input-accent w-full" /> */} <PasswordFild password={settings.cloudinaryAppSecrect} handleChange={handleChange} /> </div> </div> </div> <div className="mt-2 p-4"> <label className="mb-2 font-semibold">Currency</label> {/* <input className="w-full flex-grow border p-2" type="text" name="defaultCurrency" value={settings.defaultCurrency} onChange={handleChange} placeholder="Enter your Firebase Serverkey" /> */} <PasswordFild password={settings.defaultCurrency} handleChange={handleChange} /> </div> <button className="btn btn-primary my-2 ml-4 px-32" onClick={handleSave} > Save </button> </div> </MainLayout> ); }; export default Page;
Editor is loading...
Leave a Comment