Untitled
unknown
plain_text
2 years ago
45 kB
8
Indexable
import { turboFootballUrl } from '@/lib/api/getAxios'; import { Field, Form, Formik } from 'formik'; import React, { useEffect, useState } from 'react'; import { BiFootball } from 'react-icons/bi'; import { AiFillAndroid, AiFillApple } from 'react-icons/ai'; import { Tab, TabList, TabPanel, Tabs } from 'react-tabs'; import * as Yup from 'yup'; import useAuthContext from '../../contexts/AuthContext'; import BlockCountrySelect from '../Input/BlockCountrySelect'; import { toast } from 'react-hot-toast'; const EditForm = () => { const [activeTab, setActiveTab] = useState(0); const [loading, setLoading] = useState(true); const [initialValues, setInitialValues] = useState({}); const { token } = useAuthContext(); useEffect(() => { setLoading(true); async function getSettings() { await turboFootballUrl .get('/api/admin/v1/settings', { headers: { authorization: `bearer ${token}`, }, }) .then((res) => { console.log(res.data); setInitialValues(res?.data?.data); setLoading(false); }); } getSettings(); }, [token]); const defaultValueAnd = initialValues?.android_settings?.block_country; const defaultValueIos = initialValues?.ios_settings?.block_country; // Define the validation schema using Yup const validationSchema = Yup.object().shape({ // Define your validation schema here }); const handleTabChange = (index) => { setActiveTab(index); }; const handleSubmit = async (values) => { // Handle form submission here setLoading(true); await turboFootballUrl .put('/api/admin/v1/settings', values, { headers: { authorization: `bearer ${token}`, api_key: process.env.NEXT_PUBLIC_TURBO_API_TOKEN, }, }) .then((res) => { // console.log(res.data); // setInitialValues(res?.data?.updatedAppSettings); toast.success(res?.data?.message) setLoading(false); }); }; return ( <Formik initialValues={initialValues} validationSchema={validationSchema} onSubmit={handleSubmit} enableReinitialize> {({ values, setFieldValue }) => ( <Form> <div className="card mb-3"> <div className="card-body"> <div className="row "> <div className="col-md-12"> <label className="mt-4 px-2 text-[16px] font-semibold"> Notification Type <span className="text-[16px] text-red-500">*</span> </label> <Field as="select" name="notification_type" class="Select an option form-select"> <option value="Select One" disabled> Select One </option> <option value="onesignal">OneSignal</option> <option value="fcm">FCM</option> </Field> </div> {values?.notification_type === 'onesignal' && ( <> <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> One signal app id{' '} </label> <Field className="form-input" name="one_signal_app_id" /> </div> </div> <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> One signal api key </label> <Field className="form-input" name="one_signal_api_key" id="" /> </div> </div> </> )} {values?.notification_type === 'fcm' && ( <> <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> Firebase Server Key </label> <Field className="form-input" name="firebase_key" /> </div> </div> <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> Firebase Topic </label> <Field className="form-input" name="firebase_topics" id="" /> </div> </div> </> )} <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> Sports Api Base Url <span className="text-[16px] text-red-500">*</span> </label> <Field name="api_base_url" className="form-input" /> </div> </div> <div className="col-md-6"> <div className="form-group"> <label className="mt-4 px-2 text-[16px] font-semibold" htmlFor="email"> Sports Api Key <span className="text-[16px] text-red-500">*</span> </label> <Field name="api_key" className="form-input" /> </div> </div> </div> </div> </div> <Tabs selectedIndex={activeTab} onSelect={handleTabChange}> <TabList className="flex items-center justify-center gap-5 mt-10"> <Tab className={`px-4 py-2 font-semibold rounded shadow bg-white text-lg text-gray-800 flex items-center gap-2 ${activeTab === 0 && 'bg-blue-500 text-gray-200 shadow-md shadow-blue-300 scale-110 transition-all ease-linear'}`}> <AiFillAndroid/> <p>Android Settings</p> </Tab> <Tab className={`px-4 py-2 font-semibold rounded shadow bg-white text-lg text-gray-800 flex items-center gap-2 ${activeTab === 1 && 'bg-blue-500 text-gray-200 shadow-md shadow-blue-300 scale-110 transition-all ease-linear'}`}><AiFillApple/> <p>Ios Settings</p> </Tab> </TabList> <TabPanel> <div className="mt-2"> {/* General Settings */} <h4 className="mb-2 text-lg font-normal">General Settings</h4> <div> <label className="mt-2 px-1 font-semibold" htmlFor="privacy_policy"> Privacy Policy </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.privacy_policy" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="terms_condition"> Terms & Condition </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.terms_condition" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="share_link"> App Share Link </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.share_link" /> </div> {/* App Control */} <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">App Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="default_page"> App Default Page </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="android_settings.default_page"> <option value="Select One" disabled> Select One </option> <option value="Live">Live</option> <option value="Home">Home</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="publish_control"> App Publishing Control </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="android_settings.publish_control"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="hide_version"> Hide Live by Version Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="number" name="android_settings.hide_version" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="highlights_type"> Highlights Type </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="highlights_type" id="android_settings.highlights_type"> <option value="Select One" disabled> Select One </option> <option value="Enable">Enable</option> <option value="Disable">Disable</option> <option value="YouTube Only">YouTube Only</option> </Field> </div> </div> </div> {/* Ads Control */} <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Ads Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="aads_status"> Ads Status </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="aads_status" id="android_settings.aads_status"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="click_control"> Click Control </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="click_control" id="android_settings.click_control"> <option value="Select One" disabled> Select One </option> <option value="Off">Off</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="app_id"> Google App ID </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.app_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="app_open_id"> Google App Open Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.app_open_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="banner_id"> Google Banner Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.banner_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="interstitial_id"> Google Interstitial Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.interstitial_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="adaptive_interstitial_id"> Google Adaptive Interstitial Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.adaptive_interstitial_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="native_id"> Google Native Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.native_id" /> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="rewarded_aads"> Google Rewarded Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.rewarded_aads" /> </div> </div> </div> <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Version Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="version_code"> Version Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.version_code" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="force_update"> Force Update </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="android_settings.force_update"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="app_url"> App Url </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.app_url" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="update_location"> App Update Location </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="android_settings.update_location"> <option value="Select One" disabled> Select One </option> <option value="Store">Store</option> <option value="Web">Web</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="button_text"> Button Text </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.button_text" /> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="description"> Description </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="android_settings.description" /> </div> </div> </div> <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Block Country</h4> <label className="mt-2 px-1 font-semibold" htmlFor="description"> Select Countries </label> <BlockCountrySelect key={"android_settings"} name="android_settings.block_country" defaultValue={defaultValueAnd} initialValues={initialValues} values={values} setFieldValue={setFieldValue} /> </div> </div> </TabPanel> <TabPanel> <div className="mt-2"> {/* General Settings */} <h4 className="mb-2 text-lg font-normal">General Settings</h4> <div> <label className="mt-2 px-1 font-semibold" htmlFor="privacy_policy"> Privacy Policy </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.privacy_policy" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="terms_condition"> Terms & Condition </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.terms_condition" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="share_link"> App Share Link </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.share_link" /> </div> {/* App Control */} <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">App Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="default_page"> App Default Page </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="ios_settings.default_page"> <option value="Select One" disabled> Select One </option> <option value="Live">Live</option> <option value="Home">Home</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="publish_control"> App Publishing Control </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="ios_settings.publish_control"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="hide_version"> Hide Live by Version Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="number" name="ios_settings.hide_version" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="highlights_type"> Highlights Type </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="highlights_type" id="ios_settings.highlights_type"> <option value="Select One" disabled> Select One </option> <option value="Enable">Enable</option> <option value="Disable">Disable</option> <option value="YouTube Only">YouTube Only</option> </Field> </div> </div> </div> {/* Ads Control */} <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Ads Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="aads_status"> Ads Status </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="aads_status" id="ios_settings.aads_status"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="click_control"> Click Control </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="click_control" id="ios_settings.click_control"> <option value="Select One" disabled> Select One </option> <option value="Off">Off</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="app_id"> Google App ID </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.app_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="app_open_id"> Google App Open Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.app_open_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="banner_id"> Google Banner Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.banner_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="interstitial_id"> Google Interstitial Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.interstitial_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="adaptive_interstitial_id"> Google Adaptive Interstitial Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.adaptive_interstitial_id" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="native_id"> Google Native Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.native_id" /> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="rewarded_aads"> Google Rewarded Ads Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.rewarded_aads" /> </div> </div> </div> <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Version Control</h4> <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> <div> <label className="mt-2 px-1 font-semibold" htmlFor="version_code"> Version Code </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.version_code" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="force_update"> Force Update </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="ios_settings.force_update"> <option value="Select One" disabled> Select One </option> <option value={true}>On</option> <option value={false}>Off</option> </Field> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="app_url"> App Url </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.app_url" /> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="update_location"> App Update Location </label> <Field as="select" className="w-full rounded-md border border-gray-300 px-4 py-2" name="ios_settings.update_location"> <option value="Select One" disabled> Select One </option> <option value="Store">Store</option> <option value="Web">Web</option> </Field> </div> <div> <label className="mt-2 px-1 font-semibold" htmlFor="button_text"> Button Text </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.button_text" /> </div> <div className="col-span-1 md:col-span-2"> <label className="mt-2 px-1 font-semibold" htmlFor="description"> Description </label> <Field className="w-full rounded-md border border-gray-300 px-4 py-2 " type="text" name="ios_settings.description" /> </div> </div> </div> <div className="mt-2"> <h4 className="mb-2 text-lg font-normal">Block Country</h4> <label className="mt-2 px-1 font-semibold" htmlFor="description"> Select Countries </label> <BlockCountrySelect key={'ios_settings'} name="ios_settings.block_country" defaultValue={defaultValueIos} initialValues={initialValues} setFieldValue={setFieldValue} /> </div> </div> </TabPanel> </Tabs> <button type="submit" className="btn btn-outline-primary btn-lg"> Submit {loading ? <> <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" strokeWidth="1.5" fill="none" strokeLinecap="round" strokeLinejoin="round" className="inline-block h-5 w-5 shrink-0 animate-[spin_2s_linear_infinite] align-middle ltr:ml-2 rtl:mr-2" > <line x1="12" y1="2" x2="12" y2="6"></line> <line x1="12" y1="18" x2="12" y2="22"></line> <line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line> <line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line> <line x1="2" y1="12" x2="6" y2="12"></line> <line x1="18" y1="12" x2="22" y2="12"></line> <line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line> <line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> </svg> </> : <> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" className="ml-2 h-5 w-5"> <path opacity="0.5" d="M3 15C3 17.8284 3 19.2426 3.87868 20.1213C4.75736 21 6.17157 21 9 21H15C17.8284 21 19.2426 21 20.1213 20.1213C21 19.2426 21 17.8284 21 15" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" ></path> <path d="M12 3V16M12 16L16 11.625M12 16L8 11.625" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"></path> </svg> </> } </button> </Form> )} </Formik> ); }; export default EditForm;
Editor is loading...