From 7fa5a7939191e549504f72cc948c30c941668849 Mon Sep 17 00:00:00 2001 From: KarimAldeen Date: Thu, 29 Feb 2024 14:29:00 +0300 Subject: [PATCH] Done --- src/Components/Columns/ColumnsImage.tsx | 2 - .../Categories/View/{ => Add}/AddForm.tsx | 13 +- .../View/Add/AttributeTab/AttributeTabs.tsx | 72 +++++++++++ .../View/Add/AttributeTab/Field/File.tsx | 62 ++++++++++ .../View/Add/AttributeTab/Field/FormItem.tsx | 19 +++ .../View/Add/AttributeTab/Field/Select.tsx | 41 +++++++ .../View/Add/AttributeTab/TabsContainer.tsx | 102 ++++++++++++++++ .../Add/AttributeValueTab/AttributeTabs.tsx | 63 ++++++++++ .../View/Add/AttributeValueTab/Field/File.tsx | 62 ++++++++++ .../Add/AttributeValueTab/Field/FormItem.tsx | 19 +++ .../Add/AttributeValueTab/TabsContainer.tsx | 112 +++++++++++++++++ src/Pages/Categories/View/AddPage.tsx | 95 +++++++++++++-- .../View/Edit/AttributeTab/AttributeTabs.tsx | 55 +++++++++ .../View/Edit/AttributeTab/Field/File.tsx | 62 ++++++++++ .../View/Edit/AttributeTab/Field/FormItem.tsx | 20 +++ .../View/Edit/AttributeTab/Field/Select.tsx | 41 +++++++ .../View/Edit/AttributeTab/TabsContainer.tsx | 114 ++++++++++++++++++ .../Edit/AttributeValueTab/AttributeTabs.tsx | 52 ++++++++ .../Edit/AttributeValueTab/Field/File.tsx | 62 ++++++++++ .../Edit/AttributeValueTab/Field/FormItem.tsx | 19 +++ .../Edit/AttributeValueTab/TabsContainer.tsx | 111 +++++++++++++++++ src/Pages/Categories/View/Edit/Form.tsx | 40 ++++++ src/Pages/Categories/View/EditForm.tsx | 54 --------- src/Pages/Categories/View/EditPage.tsx | 32 +++-- src/Pages/Categories/View/Field/Object.tsx | 114 ------------------ src/Pages/Categories/formUtil.ts | 46 ++++--- src/Pages/Products/View/AddPage.tsx | 7 +- src/Pages/Products/View/AttributeInfo.tsx | 34 ++++++ .../View/Edit/FormikTab/TabsContainer.tsx | 1 + .../Products/View/FormikTab/TabsContainer.tsx | 3 + src/Routes.tsx | 3 +- src/api/attribute.ts | 4 +- src/api/attributeValue.ts | 30 +++++ src/api/config.ts | 2 +- src/api/dist/Account.js | 55 +++++++++ src/api/dist/Categories.js | 20 +++ src/api/dist/Coupon.js | 20 +++ src/api/dist/Slider.js | 20 +++ src/api/dist/appSetting.js | 18 +++ src/api/dist/attribute.js | 23 ++++ src/api/dist/auth.js | 10 ++ src/api/dist/config.js | 12 ++ src/api/dist/order.js | 24 ++++ src/api/dist/product.js | 26 ++++ src/api/dist/users.js | 20 +++ src/api/helper/dist/AxiosBuilder.js | 40 ++++++ src/api/helper/dist/Get.js | 61 ++++++++++ src/api/helper/dist/buildFormData.js | 17 +++ src/api/helper/dist/ueGetPagination.js | 84 +++++++++++++ src/api/helper/dist/useAddMutation.js | 74 ++++++++++++ src/api/helper/dist/useAxios.js | 18 +++ src/api/helper/dist/useDeleteMutation.js | 79 ++++++++++++ src/api/helper/dist/useGetOneQuery.js | 81 +++++++++++++ src/api/helper/dist/useGetQuery.js | 81 +++++++++++++ src/api/helper/dist/useGetSingleQuery.js | 81 +++++++++++++ src/api/helper/dist/useToggleStatus.js | 89 ++++++++++++++ src/api/helper/dist/useUpdateMutation.js | 79 ++++++++++++ src/api/helper/dist/useUpdateMutationPut.js | 79 ++++++++++++ src/api/helper/dist/useUploadWithProgress.js | 93 ++++++++++++++ src/config/AppKey.ts | 2 +- 60 files changed, 2553 insertions(+), 221 deletions(-) rename src/Pages/Categories/View/{ => Add}/AddForm.tsx (71%) create mode 100644 src/Pages/Categories/View/Add/AttributeTab/AttributeTabs.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeTab/Field/File.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeTab/Field/FormItem.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeTab/Field/Select.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeTab/TabsContainer.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeValueTab/AttributeTabs.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeValueTab/Field/File.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeValueTab/Field/FormItem.tsx create mode 100644 src/Pages/Categories/View/Add/AttributeValueTab/TabsContainer.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeTab/AttributeTabs.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeTab/Field/File.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeTab/Field/FormItem.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeTab/Field/Select.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeTab/TabsContainer.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeValueTab/AttributeTabs.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeValueTab/Field/File.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeValueTab/Field/FormItem.tsx create mode 100644 src/Pages/Categories/View/Edit/AttributeValueTab/TabsContainer.tsx create mode 100644 src/Pages/Categories/View/Edit/Form.tsx delete mode 100644 src/Pages/Categories/View/EditForm.tsx delete mode 100644 src/Pages/Categories/View/Field/Object.tsx create mode 100644 src/Pages/Products/View/AttributeInfo.tsx create mode 100644 src/api/attributeValue.ts create mode 100644 src/api/dist/Account.js create mode 100644 src/api/dist/Categories.js create mode 100644 src/api/dist/Coupon.js create mode 100644 src/api/dist/Slider.js create mode 100644 src/api/dist/appSetting.js create mode 100644 src/api/dist/attribute.js create mode 100644 src/api/dist/auth.js create mode 100644 src/api/dist/config.js create mode 100644 src/api/dist/order.js create mode 100644 src/api/dist/product.js create mode 100644 src/api/dist/users.js create mode 100644 src/api/helper/dist/AxiosBuilder.js create mode 100644 src/api/helper/dist/Get.js create mode 100644 src/api/helper/dist/buildFormData.js create mode 100644 src/api/helper/dist/ueGetPagination.js create mode 100644 src/api/helper/dist/useAddMutation.js create mode 100644 src/api/helper/dist/useAxios.js create mode 100644 src/api/helper/dist/useDeleteMutation.js create mode 100644 src/api/helper/dist/useGetOneQuery.js create mode 100644 src/api/helper/dist/useGetQuery.js create mode 100644 src/api/helper/dist/useGetSingleQuery.js create mode 100644 src/api/helper/dist/useToggleStatus.js create mode 100644 src/api/helper/dist/useUpdateMutation.js create mode 100644 src/api/helper/dist/useUpdateMutationPut.js create mode 100644 src/api/helper/dist/useUploadWithProgress.js diff --git a/src/Components/Columns/ColumnsImage.tsx b/src/Components/Columns/ColumnsImage.tsx index f5c45a4..815ed9c 100644 --- a/src/Components/Columns/ColumnsImage.tsx +++ b/src/Components/Columns/ColumnsImage.tsx @@ -14,10 +14,8 @@ import useImageError from '../../Hooks/useImageError'; const ColumnsImage= ({src}:any) => { const ErrorImage = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/No-Image-Placeholder.svg/832px-No-Image-Placeholder.svg.png" - console.log(ImageBaseURL + src,"ColumnsImage"); const imageUrl = ImageBaseURL + src || ErrorImage; - console.log(imageUrl); const handleError = useImageError; // or you can download flipped and rotated image diff --git a/src/Pages/Categories/View/AddForm.tsx b/src/Pages/Categories/View/Add/AddForm.tsx similarity index 71% rename from src/Pages/Categories/View/AddForm.tsx rename to src/Pages/Categories/View/Add/AddForm.tsx index 88c6716..dc39c7e 100644 --- a/src/Pages/Categories/View/AddForm.tsx +++ b/src/Pages/Categories/View/Add/AddForm.tsx @@ -1,16 +1,15 @@ import React from 'react' import { Col, Row } from 'reactstrap'; -import ValidationField from '../../../Components/ValidationField/ValidationField'; +import ValidationField from '../../../../Components/ValidationField/ValidationField'; import { useFormikContext } from 'formik'; import { DatePicker } from 'antd'; import { useTranslation } from 'react-i18next'; -import { useGetCategories } from '../../../api/Categories'; -import useFormatToSelect from '../../../Hooks/useFormatToSelect'; -import { useGetOneAttribute } from '../../../api/attribute'; -import Atteibute from './Atteibute'; -import ObjectField from './Field/Object'; +import { useGetCategories } from '../../../../api/Categories'; +import useFormatToSelect from '../../../../Hooks/useFormatToSelect'; +import { useGetOneAttribute } from '../../../../api/attribute'; +import Atteibute from '../Atteibute'; function Form() { const formik = useFormikContext(); @@ -31,7 +30,7 @@ function Form() { - + {/* */} {/* {values?.id && } */} diff --git a/src/Pages/Categories/View/Add/AttributeTab/AttributeTabs.tsx b/src/Pages/Categories/View/Add/AttributeTab/AttributeTabs.tsx new file mode 100644 index 0000000..4e9d8e8 --- /dev/null +++ b/src/Pages/Categories/View/Add/AttributeTab/AttributeTabs.tsx @@ -0,0 +1,72 @@ +// AttributeTabs.tsx +import React from 'react'; +import { Col, Row } from 'reactstrap'; +import { FormItem } from './Field/FormItem'; +import { useFormikContext, FormikValues } from 'formik'; +import File from './Field/File'; +import { useTranslation } from 'react-i18next'; +import { TabsContainer } from '../AttributeValueTab/TabsContainer'; +import SelectField from './Field/Select'; + +interface AttributeTabsProps { + tabKey: string; +} + +export const AttributeTabs: React.FC = ({ tabKey }) => { + const { t } = useTranslation(); + const formikContext = useFormikContext(); + const { values, handleChange } = formikContext; + + const handleFieldChange = (fieldName: string) => ( + e: React.ChangeEvent | any + ) => { + handleChange(`Attribute.${tabKey}.${fieldName}`)(e); // Prepend "Attribute" + }; + const FormikName = (FormikFieldname: any) => values?.Attribute?.[tabKey]?.[FormikFieldname]; + + + + return ( + <> +
{t("Attributes")} {tabKey}
+ + + + + + + + + + + {/* */} + + + + + + +
+ +
+ + + ); +}; diff --git a/src/Pages/Categories/View/Add/AttributeTab/Field/File.tsx b/src/Pages/Categories/View/Add/AttributeTab/Field/File.tsx new file mode 100644 index 0000000..2bb8b80 --- /dev/null +++ b/src/Pages/Categories/View/Add/AttributeTab/Field/File.tsx @@ -0,0 +1,62 @@ + + + +import { Button, Upload, UploadFile } from 'antd' +import { UploadOutlined } from '@ant-design/icons'; +import { useTranslation } from 'react-i18next'; +import { useFormikContext } from 'formik'; + + +const File = ({ tabKey}:any) => { + const { t } = useTranslation(); + const formik = useFormikContext(); + const name = `Attribute[${tabKey}].${"main_photo"}`; + const imageUrl = formik?.values?.Attribute[tabKey]?.main_photo ? URL.createObjectURL(formik?.values?.Attribute[tabKey]?.main_photo) : "" ; + + const fileList: UploadFile[] = [ + + { + uid: '-1', + name: formik?.values?.Attribute[tabKey]?.main_photo?.name ?? "", + status: 'done', + url: imageUrl , + thumbUrl: imageUrl , + } + ]; + const FilehandleChange = (value:any) => { + + formik.setFieldValue(name, value.file.originFileObj) + + }; + const customRequest = async ({ onSuccess}: any) => { + onSuccess(); + }; + return ( +
+ + + + + + + + +
+ ) +} + +export default File \ No newline at end of file diff --git a/src/Pages/Categories/View/Add/AttributeTab/Field/FormItem.tsx b/src/Pages/Categories/View/Add/AttributeTab/Field/FormItem.tsx new file mode 100644 index 0000000..91b4c0b --- /dev/null +++ b/src/Pages/Categories/View/Add/AttributeTab/Field/FormItem.tsx @@ -0,0 +1,19 @@ +// FormItem.tsx +import React from 'react'; +import { Input, Label } from 'reactstrap'; + +interface FormItemProps { + label: string; + value: string; + onChange: (e: React.ChangeEvent) => void; + type?: any +} + +export const FormItem: React.FC = ({ label, value, onChange ,type = "text"}) => { + return ( + <> + + + + ); +}; diff --git a/src/Pages/Categories/View/Add/AttributeTab/Field/Select.tsx b/src/Pages/Categories/View/Add/AttributeTab/Field/Select.tsx new file mode 100644 index 0000000..06cc975 --- /dev/null +++ b/src/Pages/Categories/View/Add/AttributeTab/Field/Select.tsx @@ -0,0 +1,41 @@ +import { Form, Select } from 'antd' +import { useFormikContext } from 'formik'; +import React from 'react' +import { useTranslation } from 'react-i18next'; + +const SelectField = ({tabKey}: any) => { + + const { t } = useTranslation(); + const formik = useFormikContext(); + const Formikname = `Attribute[${tabKey}].type`; + const FormikValue = formik?.values?.Attribute[tabKey]?.["type"]; + + const onChange = (value:any) => { + formik.setFieldValue(Formikname,value) + console.log(value); + + } + const Data = [{label: "color",value :"color"},{label: "text",value :"text"},{label: "image",value :"image"}] + return ( +
+ + + + + ); +}; diff --git a/src/Pages/Categories/View/Add/AttributeValueTab/TabsContainer.tsx b/src/Pages/Categories/View/Add/AttributeValueTab/TabsContainer.tsx new file mode 100644 index 0000000..b3d17a4 --- /dev/null +++ b/src/Pages/Categories/View/Add/AttributeValueTab/TabsContainer.tsx @@ -0,0 +1,112 @@ +// TabsContainer.tsx +import React, { useEffect, useState } from 'react'; +import { Tabs, Space } from 'antd'; +import { CopyOutlined } from '@ant-design/icons'; +import { toast } from 'react-toastify'; +import { FormikValues, useFormikContext } from 'formik'; +import { useTranslation } from 'react-i18next'; +import { AttributeValueTabs } from './AttributeTabs'; + +const { TabPane } = Tabs; + +const initialItemShape: any = { + label: 'Value 1', + key: '1', + closable: true, + }; +export const TabsContainer= ({parentKey}:any) => { + const [activeKey, setActiveKey] = useState('1'); + const [t] = useTranslation() + + const { setFieldValue } = useFormikContext(); + const formikContext = useFormikContext(); + const { values, handleChange } = formikContext; + const [width, setWidth] = useState(window.innerWidth); + + const varianCount = values?.Attribute[parentKey]?.AttributeValue?.slice(1)?.map((item:any,index:any)=>{ + return { + label: `${t(`Value`)}`+ `${index+1}`, + key: index+1, + closable: true, + } + })?? initialItemShape + + const [items, setItems] = useState(Array.isArray(varianCount) ? varianCount : [initialItemShape]); // Ensure items is always an array + + const handleAdd = () => { + const newKey = `${items.length + 1}`; + setItems([...items, { key: newKey, label: `Value ${newKey}`, closable: true }]); + setActiveKey(newKey); + }; + + const handleDuplicate = (targetKey: string) => { + const targetItem = items.find((item:any) => item.key === targetKey); + if (targetItem) { + const newKey = `${items.length + 1}`; + const newItem = { ...targetItem, key: newKey, label: `Value ${newKey}` }; + setItems([...items, newItem]); + setActiveKey(newKey); + + const originalValues = values?.Attribute?.[parentKey]?.AttributeValue?.[targetKey]; + setFieldValue(`Attribute.${parentKey}.AttributeValue.${newKey}`, originalValues); + } + }; + + + const handleRemove = (targetKey: string) => { + const newItems = items.filter((item:any) => item.key !== targetKey); + if (newItems.length > 0) { + const newActiveKey = newItems.length ? newItems[newItems.length - 1].key : '1'; + setItems(newItems); + setActiveKey(newActiveKey); + setFieldValue(`Attribute.${parentKey}.AttributeValue.${targetKey}`, undefined); + + + } else { + toast.error("Cannot close the last tab"); + + } +}; + +useEffect(() => { + const handleResize = () => { + setWidth(window.innerWidth); + }; + + window.addEventListener('resize', handleResize); + + return () => { + window.removeEventListener('resize', handleResize); + }; +}, []); +const tabPosition ='top'; + + return ( + (action === 'add' ? handleAdd() : handleRemove(targetKey))} + tabPosition={tabPosition} + + > + {items.map((item :any) =>{ + return ( + + + {t(`${item.label}`)} + handleDuplicate(item.key)} /> + + } + closable={item.closable} + > + + + ) + })} + + ); +}; diff --git a/src/Pages/Categories/View/AddPage.tsx b/src/Pages/Categories/View/AddPage.tsx index 77ba67f..731b7b7 100644 --- a/src/Pages/Categories/View/AddPage.tsx +++ b/src/Pages/Categories/View/AddPage.tsx @@ -8,31 +8,98 @@ import { useTranslation } from 'react-i18next'; import { BsInfoCircle } from 'react-icons/bs'; import useNavigateOnSuccess from '../../../Hooks/useNavigateOnSuccess'; import { useAddCategories } from '../../../api/Categories'; -import Form from './AddForm'; +import Form from './Add/AddForm'; import { usePageState } from '../../../lib/state mangment/LayoutPagestate'; +import { useAddAttribute } from '../../../api/attribute'; +import { TabsContainer } from './Add/AttributeTab/TabsContainer'; +import { useAddAttributeValue } from '../../../api/attributeValue'; const AddcategoriesPage = () => { const { setObjectToEdit, objectToEdit } = usePageState() - const {mutate , isLoading , isSuccess} = useAddCategories() - const handleSubmit = (values:any)=>{ + const {mutate , isLoading,isSuccess,data } = useAddCategories() + const {mutate:AddAttribute, isSuccess : isSuccessAttribute,data:AttributeData} = useAddAttribute() + const {mutate:AddAttributeValue,isSuccess : isSuccessAttributeValue} = useAddAttributeValue() - values['attribute'] = changeShapeInfo(values?.new_attribute) - values["name"]= { - en:values?.name_en, - ar:values?.name_ar, - de:values?.name_de + const [Attribute , setAttribute] = useState([]) + const [AttributeValues , setAttributeValues] = useState([]) + + const handleSubmit = (values:any)=>{ + + + setAttribute(values?.Attribute?.slice(1)) + + const CategoriesValues = { + name: { + en:values?.name_en, + ar:values?.name_ar, + de:values?.name_de + }, + parent_id:values?.parent_id, + photo:values?.photo, } + mutate(CategoriesValues) + + - console.log(); - - mutate(values) } + useEffect(()=>{ + + if(isSuccess){ + const categoryId = (data as any )?.id ; + + Attribute?.map((dataToSend:any , index:number)=>{ + + const Attribute = dataToSend + setAttributeValues((prev) => ([ + ...prev, + ...Attribute?.AttributeValue, + ])); + const NewAttribute = { + name:{ + en:Attribute?.name_en, + ar:Attribute?.name_ar, + de:Attribute?.name_de + }, + type:Attribute?.type, + category_id:categoryId, + } + + AddAttribute(NewAttribute) + }) + } + },[isSuccess]) + + + useEffect(()=>{ + + if(isSuccessAttribute){ + const AttributeId = (AttributeData as any )?.id ; + + AttributeValues?.slice(1)?.map((dataToSend:any , index:number)=>{ + + const AttributeValues = dataToSend + const NewAttributeValues = { + value:{ + en:AttributeValues?.value_en, + ar:AttributeValues?.value_ar, + de:AttributeValues?.value_de + }, + image:AttributeValues?.main_photo, + attribute_id:AttributeId, + } + AddAttributeValue(NewAttributeValues) + + }) + + } + },[isSuccessAttribute]) + const {t} = useTranslation(); - useNavigateOnSuccess(isSuccess , '/categories' ) + useNavigateOnSuccess(isSuccessAttributeValue , '/categories' ) useEffect(() => { @@ -52,12 +119,16 @@ const AddcategoriesPage = () => {
{t("BasicInfo")}
+
{t("attributes")}
+ +
+
diff --git a/src/Pages/Categories/View/Edit/AttributeTab/AttributeTabs.tsx b/src/Pages/Categories/View/Edit/AttributeTab/AttributeTabs.tsx new file mode 100644 index 0000000..74c1c34 --- /dev/null +++ b/src/Pages/Categories/View/Edit/AttributeTab/AttributeTabs.tsx @@ -0,0 +1,55 @@ +// AttributeTabs.tsx +import React from 'react'; +import { Col, Row } from 'reactstrap'; +import { FormItem } from './Field/FormItem'; +import { useFormikContext, FormikValues } from 'formik'; +import File from './Field/File'; +import { useTranslation } from 'react-i18next'; +import { TabsContainer } from '../AttributeValueTab/TabsContainer'; +import SelectField from './Field/Select'; + +interface AttributeTabsProps { + tabKey: string; +} + +export const AttributeTabs: React.FC = ({ tabKey }) => { + const { t } = useTranslation(); + const formikContext = useFormikContext(); + const { values, handleChange } = formikContext; + + const handleFieldChange = (fieldName: string) => ( + e: React.ChangeEvent | any + ) => { + handleChange(`Attribute.${tabKey}.${fieldName}`)(e); // Prepend "Attribute" + }; + const FormikName = (FormikFieldname: any) => values?.Attribute[tabKey]?.[FormikFieldname]; + + + console.log(values?.Attribute,"value"); + + return ( + <> +
{t("Attributes")} {tabKey}
+ + + + + + + + + + + + +
+ +
+ + + ); +}; diff --git a/src/Pages/Categories/View/Edit/AttributeTab/Field/File.tsx b/src/Pages/Categories/View/Edit/AttributeTab/Field/File.tsx new file mode 100644 index 0000000..2bb8b80 --- /dev/null +++ b/src/Pages/Categories/View/Edit/AttributeTab/Field/File.tsx @@ -0,0 +1,62 @@ + + + +import { Button, Upload, UploadFile } from 'antd' +import { UploadOutlined } from '@ant-design/icons'; +import { useTranslation } from 'react-i18next'; +import { useFormikContext } from 'formik'; + + +const File = ({ tabKey}:any) => { + const { t } = useTranslation(); + const formik = useFormikContext(); + const name = `Attribute[${tabKey}].${"main_photo"}`; + const imageUrl = formik?.values?.Attribute[tabKey]?.main_photo ? URL.createObjectURL(formik?.values?.Attribute[tabKey]?.main_photo) : "" ; + + const fileList: UploadFile[] = [ + + { + uid: '-1', + name: formik?.values?.Attribute[tabKey]?.main_photo?.name ?? "", + status: 'done', + url: imageUrl , + thumbUrl: imageUrl , + } + ]; + const FilehandleChange = (value:any) => { + + formik.setFieldValue(name, value.file.originFileObj) + + }; + const customRequest = async ({ onSuccess}: any) => { + onSuccess(); + }; + return ( +
+ + + + + + + + +
+ ) +} + +export default File \ No newline at end of file diff --git a/src/Pages/Categories/View/Edit/AttributeTab/Field/FormItem.tsx b/src/Pages/Categories/View/Edit/AttributeTab/Field/FormItem.tsx new file mode 100644 index 0000000..bdb0dba --- /dev/null +++ b/src/Pages/Categories/View/Edit/AttributeTab/Field/FormItem.tsx @@ -0,0 +1,20 @@ +// FormItem.tsx +import React from 'react'; +import { Input, Label } from 'reactstrap'; + +interface FormItemProps { + label: string; + value: string; + onChange: (e: React.ChangeEvent) => void; + type?: any +} + +export const FormItem: React.FC = ({ label, value, onChange ,type = "text"}) => { + + return ( + <> + + + + ); +}; diff --git a/src/Pages/Categories/View/Edit/AttributeTab/Field/Select.tsx b/src/Pages/Categories/View/Edit/AttributeTab/Field/Select.tsx new file mode 100644 index 0000000..06cc975 --- /dev/null +++ b/src/Pages/Categories/View/Edit/AttributeTab/Field/Select.tsx @@ -0,0 +1,41 @@ +import { Form, Select } from 'antd' +import { useFormikContext } from 'formik'; +import React from 'react' +import { useTranslation } from 'react-i18next'; + +const SelectField = ({tabKey}: any) => { + + const { t } = useTranslation(); + const formik = useFormikContext(); + const Formikname = `Attribute[${tabKey}].type`; + const FormikValue = formik?.values?.Attribute[tabKey]?.["type"]; + + const onChange = (value:any) => { + formik.setFieldValue(Formikname,value) + console.log(value); + + } + const Data = [{label: "color",value :"color"},{label: "text",value :"text"},{label: "image",value :"image"}] + return ( +
+ + + + + ); +}; diff --git a/src/Pages/Categories/View/Edit/AttributeValueTab/TabsContainer.tsx b/src/Pages/Categories/View/Edit/AttributeValueTab/TabsContainer.tsx new file mode 100644 index 0000000..cf7f77f --- /dev/null +++ b/src/Pages/Categories/View/Edit/AttributeValueTab/TabsContainer.tsx @@ -0,0 +1,111 @@ +// TabsContainer.tsx +import React, { useEffect, useState } from 'react'; +import { Tabs, Space } from 'antd'; +import { CopyOutlined } from '@ant-design/icons'; +import { toast } from 'react-toastify'; +import { FormikValues, useFormikContext } from 'formik'; +import { useTranslation } from 'react-i18next'; +import { AttributeValueTabs } from './AttributeTabs'; + +const { TabPane } = Tabs; + +const initialItemShape: any = { + label: 'Value 1', + key: '1', + closable: true, + }; +export const TabsContainer= ({parentKey}:any) => { + const [activeKey, setActiveKey] = useState('1'); + const [t] = useTranslation() + + const { setFieldValue } = useFormikContext(); + const formikContext = useFormikContext(); + const { values, handleChange } = formikContext; + const [width, setWidth] = useState(window.innerWidth); + + const varianCount = values?.Attribute[parentKey]?.AttributeValue?.slice(1)?.map((item:any,index:any)=>{ + return { + label: `${t(`Value`)}`+ `${index+1}`, + key: index+1, + closable: true, + } + })?? initialItemShape + + const [items, setItems] = useState(Array.isArray(varianCount) ? varianCount : [initialItemShape]); // Ensure items is always an array + + const handleAdd = () => { + const newKey = `${items.length + 1}`; + setItems([...items, { key: newKey, label: `Value ${newKey}`, closable: true }]); + setActiveKey(newKey); + }; + + const handleDuplicate = (targetKey: string) => { + const targetItem = items.find((item:any) => item.key === targetKey); + if (targetItem) { + const newKey = `${items.length + 1}`; + const newItem = { ...targetItem, key: newKey, label: `Value ${newKey}` }; + setItems([...items, newItem]); + setActiveKey(newKey); + + const originalValues = values?.Attribute?.[parentKey]?.AttributeValue?.[targetKey]; + setFieldValue(`Attribute.${parentKey}.AttributeValue.${newKey}`, originalValues); + } + }; + + + const handleRemove = (targetKey: string) => { + const newItems = items.filter((item:any) => item.key !== targetKey); + if (newItems.length > 0) { + const newActiveKey = newItems.length ? newItems[newItems.length - 1].key : '1'; + setItems(newItems); + setActiveKey(newActiveKey); + setFieldValue(`Attribute.${parentKey}.AttributeValue.${targetKey}`, undefined); + + } else { + toast.error("Cannot close the last tab"); + + } +}; + +useEffect(() => { + const handleResize = () => { + setWidth(window.innerWidth); + }; + + window.addEventListener('resize', handleResize); + + return () => { + window.removeEventListener('resize', handleResize); + }; +}, []); +const tabPosition ='top'; + + return ( + (action === 'add' ? handleAdd() : handleRemove(targetKey))} + tabPosition={tabPosition} + + > + {items.map((item :any) =>{ + return ( + + + {t(`${item.label}`)} + handleDuplicate(item.key)} /> + + } + closable={item.closable} + > + + + ) + })} + + ); +}; diff --git a/src/Pages/Categories/View/Edit/Form.tsx b/src/Pages/Categories/View/Edit/Form.tsx new file mode 100644 index 0000000..6e7a6f9 --- /dev/null +++ b/src/Pages/Categories/View/Edit/Form.tsx @@ -0,0 +1,40 @@ + +import React from 'react' +import { Col, Row } from 'reactstrap'; +import ValidationField from '../../../../Components/ValidationField/ValidationField'; +import { useFormikContext } from 'formik'; + +import { DatePicker } from 'antd'; +import { useTranslation } from 'react-i18next'; +import { useGetCategories } from '../../../../api/Categories'; +import useFormatToSelect from '../../../../Hooks/useFormatToSelect'; +import { useGetOneAttribute } from '../../../../api/attribute'; +import Atteibute from '../Atteibute'; + +function Form() { + const formik = useFormikContext(); + const [t] = useTranslation(); + const { data } = useGetCategories() + const SelectData = useFormatToSelect(data?.categories) + const { values } = useFormikContext(); + + + return ( + + + + + + + + + + + + + ) +} + +export default Form + + diff --git a/src/Pages/Categories/View/EditForm.tsx b/src/Pages/Categories/View/EditForm.tsx deleted file mode 100644 index ec680f3..0000000 --- a/src/Pages/Categories/View/EditForm.tsx +++ /dev/null @@ -1,54 +0,0 @@ - -import React from 'react' -import { Col, Row } from 'reactstrap'; -import ValidationField from '../../../Components/ValidationField/ValidationField'; -import { useFormikContext } from 'formik'; - -import { DatePicker } from 'antd'; -import { useTranslation } from 'react-i18next'; -import { useGetCategories } from '../../../api/Categories'; -import useFormatToSelect from '../../../Hooks/useFormatToSelect'; -import { useGetOneAttribute } from '../../../api/attribute'; -import Atteibute from './Atteibute'; - -function Form() { - const {values} = useFormikContext(); - const [t] = useTranslation() - const { data } = useGetCategories() - const SelectData = useFormatToSelect(data?.categories) - const {data : AttributeData} = useGetOneAttribute() - - return ( - - - - - - - - - {values?.id && - - } - - {/* { - AttributeData?.map((item:any)=>{ - return( - - ) - }) - } */} - - - - - ) -} - -export default Form - - diff --git a/src/Pages/Categories/View/EditPage.tsx b/src/Pages/Categories/View/EditPage.tsx index e82b532..e822de6 100644 --- a/src/Pages/Categories/View/EditPage.tsx +++ b/src/Pages/Categories/View/EditPage.tsx @@ -5,7 +5,7 @@ import 'react-tabs/style/react-tabs.css'; import { MdLanguage } from 'react-icons/md' import { FaSadCry } from 'react-icons/fa' import ViewPage from '../../../Layout/Dashboard/ViewPage'; -import { Rate } from 'antd'; +import { Rate, Spin } from 'antd'; import { usePageState } from '../../../lib/state mangment/LayoutPagestate'; import { useParams } from 'react-router-dom'; import LoadingPage from '../../../Layout/app/LoadingPage'; @@ -13,21 +13,26 @@ import { useTranslation } from 'react-i18next'; import { BsInfoCircle } from 'react-icons/bs'; import { useGetOneCategories, useUpdateCategories } from '../../../api/Categories'; import useNavigateOnSuccess from '../../../Hooks/useNavigateOnSuccess'; -import Form from './EditForm'; +import Form from './Edit/Form'; import { changeShapeInfo } from '../../../utils/Array/changeShapeInfo'; +import { TabsContainer } from './Edit/AttributeTab/TabsContainer'; +import { useGetSingleAttribute } from '../../../api/attribute'; const EditPage = () => { const { setObjectToEdit, objectToEdit } = usePageState() const {t} = useTranslation(); - const { data } = useGetOneCategories() + const { data ,isLoading } = useGetOneCategories() + const {id} = useParams() + + const {data : Atrribute,isLoading : isLoadingAtrribute } = useGetSingleAttribute({ name:"category_id", id:id},{}) const {mutate ,isSuccess} = useUpdateCategories("post") - const FormatedData = data?.category ; const handleSubmit = (values:any)=>{ const Imagetype = typeof values?.photo values['attribute'] = changeShapeInfo(values?.attribute) if(Imagetype === "string") { delete values['photo'] } + mutate(values) // return mutate(newData); } @@ -37,9 +42,9 @@ const EditPage = () => { useEffect(() => { - setObjectToEdit(data?.category); + setObjectToEdit([data?.category,Atrribute?.data]); - }, [data]); + }, [data?.category,Atrribute?.data]); const getValidationSchema = () => { @@ -48,6 +53,10 @@ const EditPage = () => { const ViewProps = { getInitialValues, getValidationSchema, getDataToSend, handleSubmit }; + + if (isLoadingAtrribute || isLoading || !objectToEdit || (Array.isArray(objectToEdit) && objectToEdit.some(item => item === undefined))) { + return +} return ( @@ -56,14 +65,19 @@ const EditPage = () => { -
{t("BasicInfo")}
+ {/*
{t("BasicInfo")}
*/} +
{t("attributes")}
+{/*
+
*/} + + +
- - +
: } diff --git a/src/Pages/Categories/View/Field/Object.tsx b/src/Pages/Categories/View/Field/Object.tsx deleted file mode 100644 index 0c84aa6..0000000 --- a/src/Pages/Categories/View/Field/Object.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { CloseOutlined } from '@ant-design/icons'; -import { Button, Card, Form, Input, Space, Typography } from 'antd'; -import { useFormikContext } from 'formik'; -import { objectToArray } from '../../../../utils/Array/ArrayToObjectFormik'; -import { useTranslation } from 'react-i18next'; - -const ObjectField = () => { - const [form] = Form.useForm(); - const formik = useFormikContext(); - const [FieldItems, setFieldItems] = useState(formik?.values?.new_attribute) - const [t] = useTranslation() - const handleChange = (e: React.ChangeEvent) => { - const { name, value } = e.target; - setFieldItems((prevState:any) =>{ - formik.setFieldValue(`new_attribute`, { - ...prevState, - [name]: value - }); - - return ({ - ...prevState, - [name]: value - }) - } ) - - }; - - - useEffect(() => { - - if (formik?.values?.new_attribute) { - const defaultValues = formik.values.new_attribute; - - console.log(objectToArray( formik?.values?.new_attribute)); - - form.setFieldsValue({ - items: [{ list:objectToArray( formik?.values?.new_attribute)}] - - }); - } - else { - form.setFieldsValue({ - items: [{ list: [{ key: '', Description: '' }] },], }); - } - }, []); // Update when tabKey or info[tabKey] changes - - - return ( - - - {(fields, { add, remove }) => ( -
- {fields.map((field, index) => ( -
- - {t("Information")} - - - {/* Nested Form.List for sub-items */} - - - {(subFields, subOpt) => ( -
- {subFields.map((subField) => ( - - - - - - - - - { - subOpt.remove(subField.name); - }} - /> - - ))} - -
- )} -
-
-
- ))} -
- )} -
- - ); -}; - -export default ObjectField \ No newline at end of file diff --git a/src/Pages/Categories/formUtil.ts b/src/Pages/Categories/formUtil.ts index 67bf305..8e5547d 100644 --- a/src/Pages/Categories/formUtil.ts +++ b/src/Pages/Categories/formUtil.ts @@ -20,16 +20,28 @@ interface ValidateSchema extends formUtilCommon { } export const getInitialValues = (objectToEdit: any | null = null): any => { + + const Attribute = objectToEdit[1]?.map((item: any) => { + const AttributeValue = item?.attribute_value?.map((item:any)=>({value:item?.value , image : item?.image} ) + ) + return ( + { + name : item?.name, + type : item?.type, + id : item?.id, + icon : item?.icon, + category_id : item?.category_id, + AttributeValue : [{},...AttributeValue], + } + ) + }) + return { - id: objectToEdit?.id ?? 0, - name: objectToEdit?.name ?? "", - name_ar: objectToEdit?.name?.ar ?? '', - name_en: objectToEdit?.name?.en ?? '', - name_de: objectToEdit?.name?.de ?? '', - parent_id: objectToEdit?.parent_id ?? "", - photo: objectToEdit?.photo ?? '', - attribute: objectToEdit?.attribute ?? "", - new_attribute: objectToEdit?.attribute ?? "" + id: objectToEdit[0]?.id ?? 0, + name: objectToEdit[0]?.name ?? "", + parent_id: objectToEdit[0]?.parent_id ?? "", + photo: objectToEdit[0]?.photo ?? '', + Attribute: [{},...Attribute], }; }; @@ -38,10 +50,10 @@ export const getInitialValuesForAdd = (objectToEdit: any | null = null): any => name_ar: '', name_en: '', name_de: '', - parent_id: "", + parent_id: null, photo: '', - attribute: "", - new_attribute: "" + Attribute: [{},{AttributeValue:[{},{}]}], + }; }; @@ -51,11 +63,11 @@ export const getInitialValuesForAdd = (objectToEdit: any | null = null): any => export const getValidationSchema = (editMode: boolean = false): Yup.Schema => { // Validate input return Yup.object().shape({ - name_ar: Yup.string().required('Required'), - name_en: Yup.string().required('Required'), - name_de: Yup.string().required('Required'), - parent_id: Yup.string().required('Required'), - photo: Yup.string().required('Required'), + // name_ar: Yup.string().required('Required'), + // name_en: Yup.string().required('Required'), + // name_de: Yup.string().required('Required'), + // parent_id: Yup.string().required('Required'), + // photo: Yup.string().required('Required'), }); }; diff --git a/src/Pages/Products/View/AddPage.tsx b/src/Pages/Products/View/AddPage.tsx index 599dd79..43afede 100644 --- a/src/Pages/Products/View/AddPage.tsx +++ b/src/Pages/Products/View/AddPage.tsx @@ -11,6 +11,7 @@ import useNavigateOnSuccess from '../../../Hooks/useNavigateOnSuccess'; import { useAddProduct, useAddProductVariation } from '../../../api/product'; import VarianInfo from './VarianInfo'; import { usePageState } from '../../../lib/state mangment/LayoutPagestate'; +import AttributeInfo from './AttributeInfo'; const AddProductPage = () => { @@ -108,6 +109,8 @@ const AddProductPage = () => {
{t("Base_info")}
{t("VarianInfo")}
+ + {/*
{t("AttributeInfo")}
*/} @@ -117,7 +120,9 @@ const AddProductPage = () => {
- + + {/*
*/} +
diff --git a/src/Pages/Products/View/AttributeInfo.tsx b/src/Pages/Products/View/AttributeInfo.tsx new file mode 100644 index 0000000..7cc19ed --- /dev/null +++ b/src/Pages/Products/View/AttributeInfo.tsx @@ -0,0 +1,34 @@ +import React, { useEffect, useState } from 'react' +import { Col, Row } from 'reactstrap' +import ValidationField from '../../../Components/ValidationField/ValidationField' +import { useTranslation } from 'react-i18next'; +import { useFormikContext } from 'formik'; +import { toast } from 'react-toastify'; +import { useGetCategories } from '../../../api/Categories'; +import useFormatToSelect from '../../../Hooks/useFormatToSelect'; + +const AttributeInfo = ({ setIsValed, IsValed }: any) => { + const [t] = useTranslation(); + const formikContext = useFormikContext(); + const Selectdata = [ + { label: "color", value:"color"}] + + return ( + + + + + + + + + + + + + + + ) +} + +export default AttributeInfo \ No newline at end of file diff --git a/src/Pages/Products/View/Edit/FormikTab/TabsContainer.tsx b/src/Pages/Products/View/Edit/FormikTab/TabsContainer.tsx index 1073551..9b6e51f 100644 --- a/src/Pages/Products/View/Edit/FormikTab/TabsContainer.tsx +++ b/src/Pages/Products/View/Edit/FormikTab/TabsContainer.tsx @@ -19,6 +19,7 @@ export const TabsContainer: React.FC = () => { // const [items, setItems] = useState([]); const [t] = useTranslation() + const { setFieldValue } = useFormikContext(); const formikContext = useFormikContext(); const { values, handleChange } = formikContext; diff --git a/src/Pages/Products/View/FormikTab/TabsContainer.tsx b/src/Pages/Products/View/FormikTab/TabsContainer.tsx index 94d7fcb..7f5132e 100644 --- a/src/Pages/Products/View/FormikTab/TabsContainer.tsx +++ b/src/Pages/Products/View/FormikTab/TabsContainer.tsx @@ -65,6 +65,9 @@ export const TabsContainer: React.FC = () => { const newActiveKey = newItems.length ? newItems[newItems.length - 1].key : '1'; setItems(newItems); setActiveKey(newActiveKey); + setFieldValue(`variable.${targetKey}`, undefined); + setFieldValue(`info.${targetKey}`, undefined); + } else { toast.error("Cannot close the last tab"); diff --git a/src/Routes.tsx b/src/Routes.tsx index e6b7307..1ce2e9f 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -16,8 +16,7 @@ import EditCategories from "./Pages/Categories/View/EditPage"; import ProductsPage from "./Pages/Products/ProductsPage"; import AddProductPage from "./Pages/Products/View/AddPage"; -import EditProduct from "./Pages/Products/View/EditPage" -; +import EditProduct from "./Pages/Products/View/EditPage"; import Order from "./Pages/order/view-one/Order"; import OrderPage from "./Pages/order/OrderPage"; import EditOrder from "./Pages/order/Edit/EditPage"; diff --git a/src/api/attribute.ts b/src/api/attribute.ts index c166cd0..36b9bc6 100644 --- a/src/api/attribute.ts +++ b/src/api/attribute.ts @@ -10,6 +10,7 @@ import useUpdateMutation from "./helper/useUpdateMutation"; const API = { ADD: `attribute`, GET_ALL: `attribute`, + DELETE: `attribute`, UPDATE: `attribute`, @@ -19,9 +20,10 @@ const KEY = "ATTRIBUTE" export const useGetAttribute = (params?:any) => useGetQueryPagination(KEY, API.GET_ALL,params); export const useGetOneAttribute = (params?:any) => useGetOneQuery(KEY, API.GET_ALL,params); -export const useGetSingleAttribute = (params?:any) => useGetSingleQuery(KEY, API.GET_ALL,params); +export const useGetSingleAttribute = (params?:any,options?:any) => useGetSingleQuery(KEY, API.GET_ALL,params,options); export const useAddAttribute = () => useAddMutation(KEY, API.ADD); + export const useUpdateAttribute = () => useUpdateMutation(KEY, API.UPDATE); export const useUpdateAttributeStatus = () => useUpdateMutation(KEY, API.UPDATE); diff --git a/src/api/attributeValue.ts b/src/api/attributeValue.ts new file mode 100644 index 0000000..fdd3d56 --- /dev/null +++ b/src/api/attributeValue.ts @@ -0,0 +1,30 @@ + +import useGetQueryPagination from "./helper/ueGetPagination"; +import useAddMutation from "./helper/useAddMutation" +import useDeleteMutation from "./helper/useDeleteMutation" +import useGetOneQuery from "./helper/useGetOneQuery"; +import useGetQuery from "./helper/useGetQuery" +import useGetSingleQuery from "./helper/useGetSingleQuery"; +import useUpdateMutation from "./helper/useUpdateMutation"; + +const API = { + ADD: `attributeValue`, + GET_ALL: `attributeValue`, + + DELETE: `attributeValue`, + UPDATE: `attributeValue`, + +}; +const KEY = "ATTRIBUTEVALUE" + + +export const useGetAttributeValue = (params?:any) => useGetQueryPagination(KEY, API.GET_ALL,params); +export const useGetOneAttributeValue = (params?:any) => useGetOneQuery(KEY, API.GET_ALL,params); +export const useGetSingleAttributeValue = (params?:any) => useGetSingleQuery(KEY, API.GET_ALL,params); + +export const useAddAttributeValue = () => useAddMutation(KEY, API.ADD); + +export const useUpdateAttributeValue = () => useUpdateMutation(KEY, API.UPDATE); +export const useUpdateAttributeValueStatus = () => useUpdateMutation(KEY, API.UPDATE); + +export const useDeleteAttributeValue = () =>useDeleteMutation(KEY, API.DELETE); diff --git a/src/api/config.ts b/src/api/config.ts index fdbc3ac..2efbf45 100644 --- a/src/api/config.ts +++ b/src/api/config.ts @@ -9,7 +9,7 @@ export const ImageBaseURL = `https://hijabi-back-dev.point-dev.net`; export const BaseURL_IMAGE = BaseURL.slice(0,-1); -const PROJECT_NAME = "E_TAXI" +const PROJECT_NAME = "Hijab" export const TOKEN_KEY = PROJECT_NAME + "_TOKEN" diff --git a/src/api/dist/Account.js b/src/api/dist/Account.js new file mode 100644 index 0000000..e8d2da3 --- /dev/null +++ b/src/api/dist/Account.js @@ -0,0 +1,55 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +exports.__esModule = true; +exports.useUpdateMyAccount = exports.getDataToSend = exports.useDeleteAccount = exports.useChangePassword = exports.useUpdateAccount = exports.useAddAccount = exports.useUpdateWallet = exports.useGetWallet = exports.useGetAccounts = void 0; +var RoleConfige_1 = require("../config/RoleConfige"); +var buildFormData_1 = require("./helper/buildFormData"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetQuery_1 = require("./helper/useGetQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + GET: "/api/admin/account/all", + GET_ALL_PER: "/api/admin/role/all-permissions", + GET_ALL_ROLE: "/api/admin/role/all", + ADD: "/api/admin/account/create", + GETWALLET: "/api/admin/account/get-wallet", + UPDATEWALLET: "/api/admin/account/add-to-wallet", + UPDATE: "/api/admin/account/update", + DELETE: "/api/admin/account/delete", + UPDATE_MY_ACCOUNT: "/api/admin/account/update-my-account", + UPDATE_PASSWORD: "/api/admin/account/change-password" +}; +var KEY = "ADMINS"; +var MY_ACCOUNT = "MY_ACCOUNT"; +exports.useGetAccounts = function () { return useGetQuery_1["default"](MY_ACCOUNT, API.GET); }; +exports.useGetWallet = function () { return useGetQuery_1["default"]("WALLET", API.GETWALLET); }; +exports.useUpdateWallet = function () { return useAddMutation_1["default"]("WALLET", API.UPDATEWALLET); }; +exports.useAddAccount = function () { return useAddMutation_1["default"](MY_ACCOUNT, API.ADD); }; +exports.useUpdateAccount = function () { return useUpdateMutation_1["default"](MY_ACCOUNT, API.UPDATE); }; +exports.useChangePassword = function () { return useUpdateMutation_1["default"](MY_ACCOUNT, API.UPDATE_PASSWORD); }; +exports.useDeleteAccount = function () { return useDeleteMutation_1["default"](MY_ACCOUNT, API.DELETE); }; +exports.getDataToSend = function (values, editMode, objectToEdit) { + var formData = new FormData(); + var objectToSend = __assign(__assign({}, values), (editMode && { account_id: objectToEdit.id })); + if (editMode) { + delete objectToSend["password"]; + delete objectToSend["password_confirmation"]; + } + if (values.role !== RoleConfige_1.VENDOR) { + delete objectToSend["shop_id"]; + } + buildFormData_1.buildFormData(formData, objectToSend); + return formData; +}; +exports.useUpdateMyAccount = function () { return useUpdateMutation_1["default"](MY_ACCOUNT, API.UPDATE_MY_ACCOUNT); }; diff --git a/src/api/dist/Categories.js b/src/api/dist/Categories.js new file mode 100644 index 0000000..ff91a09 --- /dev/null +++ b/src/api/dist/Categories.js @@ -0,0 +1,20 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteCategories = exports.useUpdateCategories = exports.useAddCategories = exports.useGetOneCategories = exports.useGetCategories = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutationPut_1 = require("./helper/useUpdateMutationPut"); +var API = { + ADD: "category", + GET_ALL: "category", + DELETE: "category", + UPDATE: "category" +}; +var KEY = "CATEGORIES"; +exports.useGetCategories = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneCategories = function () { return useGetOneQuery_1["default"](KEY, API.GET_ALL); }; +exports.useAddCategories = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateCategories = function (method) { return useUpdateMutationPut_1["default"](KEY, API.UPDATE, method); }; +exports.useDeleteCategories = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/Coupon.js b/src/api/dist/Coupon.js new file mode 100644 index 0000000..6f1fb9d --- /dev/null +++ b/src/api/dist/Coupon.js @@ -0,0 +1,20 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteCoupon = exports.useUpdateCoupon = exports.useAddCoupon = exports.useGetOneCoupon = exports.useGetCoupon = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "coupon", + GET_ALL: "coupon", + DELETE: "coupon", + UPDATE: "coupon" +}; +var KEY = "COUPON"; +exports.useGetCoupon = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneCoupon = function () { return useGetOneQuery_1["default"](KEY, API.GET_ALL); }; +exports.useAddCoupon = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateCoupon = function (method) { return useUpdateMutation_1["default"](KEY, API.UPDATE, method); }; +exports.useDeleteCoupon = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/Slider.js b/src/api/dist/Slider.js new file mode 100644 index 0000000..c7fb45c --- /dev/null +++ b/src/api/dist/Slider.js @@ -0,0 +1,20 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteSlider = exports.useUpdateSlider = exports.useAddSlider = exports.useGetOneSlider = exports.useGetSlider = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "slider", + GET_ALL: "slider", + DELETE: "slider", + UPDATE: "slider" +}; +var KEY = "SLIDER"; +exports.useGetSlider = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneSlider = function () { return useGetOneQuery_1["default"](KEY, API.GET_ALL); }; +exports.useAddSlider = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateSlider = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteSlider = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/appSetting.js b/src/api/dist/appSetting.js new file mode 100644 index 0000000..7b33a21 --- /dev/null +++ b/src/api/dist/appSetting.js @@ -0,0 +1,18 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteAppSetting = exports.useUpdateAppSetting = exports.useAddAppSetting = exports.useGetAppSetting = void 0; +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetQuery_1 = require("./helper/useGetQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "/api/admin/app-setting/create", + GET: "/api/admin/app-setting/all", + UPDATE: "api/admin/app-setting/update", + DELETE: "/api/admin/app-setting/delete" +}; +var KEY = "APPSETTING"; +exports.useGetAppSetting = function (params) { return useGetQuery_1["default"](KEY, API.GET, params); }; +exports.useAddAppSetting = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateAppSetting = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteAppSetting = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/attribute.js b/src/api/dist/attribute.js new file mode 100644 index 0000000..a59f507 --- /dev/null +++ b/src/api/dist/attribute.js @@ -0,0 +1,23 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteAttribute = exports.useUpdateAttributeStatus = exports.useUpdateAttribute = exports.useAddAttribute = exports.useGetSingleAttribute = exports.useGetOneAttribute = exports.useGetAttribute = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useGetSingleQuery_1 = require("./helper/useGetSingleQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "attribute", + GET_ALL: "attribute", + DELETE: "attribute", + UPDATE: "attribute" +}; +var KEY = "ATTRIBUTE"; +exports.useGetAttribute = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneAttribute = function (params) { return useGetOneQuery_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetSingleAttribute = function (params) { return useGetSingleQuery_1["default"](KEY, API.GET_ALL, params); }; +exports.useAddAttribute = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateAttribute = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useUpdateAttributeStatus = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteAttribute = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/auth.js b/src/api/dist/auth.js new file mode 100644 index 0000000..8ba661c --- /dev/null +++ b/src/api/dist/auth.js @@ -0,0 +1,10 @@ +"use strict"; +exports.__esModule = true; +exports.useLoginAdmin = void 0; +var useAddMutation_1 = require("./helper/useAddMutation"); +var KEY = "AUTH"; +var API = { + LOGIN: "admin/login", + LOGOUT: "/api/admin/logout" +}; +exports.useLoginAdmin = function () { return useAddMutation_1["default"](KEY, API.LOGIN); }; diff --git a/src/api/dist/config.js b/src/api/dist/config.js new file mode 100644 index 0000000..321693d --- /dev/null +++ b/src/api/dist/config.js @@ -0,0 +1,12 @@ +"use strict"; +exports.__esModule = true; +exports.USER_KEY = exports.TOKEN_KEY = exports.BaseURL_IMAGE = exports.ImageBaseURL = exports.BaseURL = void 0; +// export const BaseURL = `https://etaxiapi.rayantaxi.com/`; +// export const BaseURL = `https://etaxi.Point.net/`; +exports.BaseURL = "https://hijabi-back-dev.point-dev.net/api/"; +exports.ImageBaseURL = "https://hijabi-back-dev.point-dev.net"; +// export const BaseURL = `http://192.168.1.14:8000/`; +exports.BaseURL_IMAGE = exports.BaseURL.slice(0, -1); +var PROJECT_NAME = "Hijab"; +exports.TOKEN_KEY = PROJECT_NAME + "_TOKEN"; +exports.USER_KEY = PROJECT_NAME + "_USER"; diff --git a/src/api/dist/order.js b/src/api/dist/order.js new file mode 100644 index 0000000..f677dcf --- /dev/null +++ b/src/api/dist/order.js @@ -0,0 +1,24 @@ +"use strict"; +exports.__esModule = true; +exports.useDeliveredOrder = exports.useDeliverOrder = exports.useCancelOrder = exports.useAcceptOrder = exports.useDeleteOrder = exports.useUpdateOrder = exports.useAddOrder = exports.useGetOneOrder = exports.useGetOrder = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "order", + GET_ALL: "order", + DELETE: "order", + UPDATE: "order" +}; +var KEY = "Order"; +exports.useGetOrder = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneOrder = function (params) { return useGetOneQuery_1["default"](KEY, API.GET_ALL, params); }; +exports.useAddOrder = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateOrder = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteOrder = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; +exports.useAcceptOrder = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useCancelOrder = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useDeliverOrder = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useDeliveredOrder = function () { return useAddMutation_1["default"](KEY, API.ADD); }; diff --git a/src/api/dist/product.js b/src/api/dist/product.js new file mode 100644 index 0000000..9a9fc4a --- /dev/null +++ b/src/api/dist/product.js @@ -0,0 +1,26 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteProduct = exports.useUpdateProductStatus = exports.useUpdateProductVariation = exports.useUpdateProduct = exports.useAddProductVariation = exports.useAddProduct = exports.useGetOneProduct = exports.useGetProduct = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "baseProduct", + GET_ALL: "baseProduct", + DELETE: "baseProduct", + UPDATE: "baseProduct", + ADD_VAR: "product", + UPDATE_VAR: "product" +}; +var KEY = "Product"; +var ONEKEY = "OneProduct"; +exports.useGetProduct = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneProduct = function (params) { return useGetOneQuery_1["default"](ONEKEY, API.GET_ALL, params); }; +exports.useAddProduct = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useAddProductVariation = function () { return useAddMutation_1["default"](KEY, API.ADD_VAR); }; +exports.useUpdateProduct = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useUpdateProductVariation = function () { return useUpdateMutation_1["default"](KEY, API.ADD_VAR); }; +exports.useUpdateProductStatus = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteProduct = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/dist/users.js b/src/api/dist/users.js new file mode 100644 index 0000000..26d6896 --- /dev/null +++ b/src/api/dist/users.js @@ -0,0 +1,20 @@ +"use strict"; +exports.__esModule = true; +exports.useDeleteUsers = exports.useUpdateUsers = exports.useAddUsers = exports.useGetOneUser = exports.useGetUsers = void 0; +var ueGetPagination_1 = require("./helper/ueGetPagination"); +var useAddMutation_1 = require("./helper/useAddMutation"); +var useDeleteMutation_1 = require("./helper/useDeleteMutation"); +var useGetOneQuery_1 = require("./helper/useGetOneQuery"); +var useUpdateMutation_1 = require("./helper/useUpdateMutation"); +var API = { + ADD: "user", + GET_ALL: "user", + DELETE: "user", + UPDATE: "user" +}; +var KEY = "User"; +exports.useGetUsers = function (params) { return ueGetPagination_1["default"](KEY, API.GET_ALL, params); }; +exports.useGetOneUser = function (params) { return useGetOneQuery_1["default"](KEY, API.GET_ALL, params); }; +exports.useAddUsers = function () { return useAddMutation_1["default"](KEY, API.ADD); }; +exports.useUpdateUsers = function () { return useUpdateMutation_1["default"](KEY, API.UPDATE); }; +exports.useDeleteUsers = function () { return useDeleteMutation_1["default"](KEY, API.DELETE); }; diff --git a/src/api/helper/dist/AxiosBuilder.js b/src/api/helper/dist/AxiosBuilder.js new file mode 100644 index 0000000..cf999f4 --- /dev/null +++ b/src/api/helper/dist/AxiosBuilder.js @@ -0,0 +1,40 @@ +"use strict"; +exports.__esModule = true; +var axios_1 = require("axios"); +var AxiosBuilder = /** @class */ (function () { + function AxiosBuilder() { + this.baseURL = ''; + this.headers = {}; + this.timeout = 60000; // Request failed with 60 second + this.withCreds = false; + this.responseType = 'json'; + } + // Custom Another Props with Your Position + AxiosBuilder.prototype.withBaseURL = function (baseURL) { + this.baseURL = baseURL; + return this; + }; + AxiosBuilder.prototype.withHeaders = function (headers) { + this.headers = headers; + return this; + }; + AxiosBuilder.prototype.withTimeout = function (timeout) { + this.timeout = timeout; + return this; + }; + AxiosBuilder.prototype.withResponseType = function (responseType) { + this.responseType = responseType; + return this; + }; + AxiosBuilder.prototype.build = function () { + var config = { + baseURL: this.baseURL, + headers: this.headers, + timeout: this.timeout, + responseType: this.responseType + }; + return axios_1["default"].create(config); + }; + return AxiosBuilder; +}()); +exports["default"] = AxiosBuilder; diff --git a/src/api/helper/dist/Get.js b/src/api/helper/dist/Get.js new file mode 100644 index 0000000..62c73bf --- /dev/null +++ b/src/api/helper/dist/Get.js @@ -0,0 +1,61 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var useAxios_1 = require("./useAxios"); +function useGetQuery(key, url, params) { + var _this = this; + var axios = useAxios_1["default"](); + return react_query_1.useQuery(key, function () { return __awaiter(_this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.get(params ? url + params : url, params)]; + case 1: + response = _a.sent(); + return [2 /*return*/, response.data.data]; + } + }); + }); }, { + onError: function (error) { + console.error('An error occurred:', error); + }, + refetchOnWindowFocus: false + }); +} +exports["default"] = useGetQuery; diff --git a/src/api/helper/dist/buildFormData.js b/src/api/helper/dist/buildFormData.js new file mode 100644 index 0000000..06f60bb --- /dev/null +++ b/src/api/helper/dist/buildFormData.js @@ -0,0 +1,17 @@ +"use strict"; +exports.__esModule = true; +exports.buildFormData = void 0; +exports.buildFormData = function (formData, data, parentKey) { + if (data && + typeof data === "object" && + !(data instanceof Date) && + !(data instanceof File)) { + Object.keys(data).forEach(function (key) { + exports.buildFormData(formData, data[key], parentKey ? parentKey + "[" + key + "]" : key); + }); + } + else { + var value = data == null ? "" : data; + formData.append(parentKey, value); + } +}; diff --git a/src/api/helper/dist/ueGetPagination.js b/src/api/helper/dist/ueGetPagination.js new file mode 100644 index 0000000..5f8c75d --- /dev/null +++ b/src/api/helper/dist/ueGetPagination.js @@ -0,0 +1,84 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var useAxios_1 = require("./useAxios"); +var react_router_dom_1 = require("react-router-dom"); +var AuthState_1 = require("../../lib/state mangment/AuthState"); +function useGetQueryPagination(KEY, Api, params, options) { + var _this = this; + var _a; + if (params === void 0) { params = {}; } + if (options === void 0) { options = {}; } + var axios = useAxios_1["default"](); + var location = react_router_dom_1.useLocation(); + var pagination = (location === null || location === void 0 ? void 0 : location.search) || ''; + // console.log(params); + var logout = AuthState_1["default"]().logout; + var language = (_a = localStorage.getItem("language")) !== null && _a !== void 0 ? _a : "en"; + var navigate = react_router_dom_1.useNavigate(); + return react_query_1.useQuery([KEY, pagination], function () { return __awaiter(_this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.get(Api + pagination, { params: params })]; + case 1: + response = _a.sent(); + return [2 /*return*/, response.data]; + } + }); + }); }, __assign({ onError: function (error) { + if (error.response.status == 401 || error.response.status == 403) { + logout(); + navigate("/auth"); + } + }, refetchOnWindowFocus: false }, options)); +} +exports["default"] = useGetQueryPagination; +// export const useGetDynamic = (Api: string) => useGetQueryPagination(Api); diff --git a/src/api/helper/dist/useAddMutation.js b/src/api/helper/dist/useAddMutation.js new file mode 100644 index 0000000..a0f7fe6 --- /dev/null +++ b/src/api/helper/dist/useAddMutation.js @@ -0,0 +1,74 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var useAxios_1 = require("./useAxios"); +var react_i18next_1 = require("react-i18next"); +function useAddMutation(key, url) { + var _this = this; + var axios = useAxios_1["default"](); + var t = react_i18next_1.useTranslation()[0]; + var queryClient = react_query_1.useQueryClient(); + return react_query_1.useMutation(function (dataToSend) { return __awaiter(_this, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.post(url, dataToSend, { + headers: { + 'Content-Type': 'multipart/form-data' + } + })]; + case 1: + data = (_a.sent()).data; + return [2 /*return*/, data]; + } + }); + }); }, { + onSuccess: function (data) { + queryClient.invalidateQueries([key]); + react_toastify_1.toast.success(data.message || t("Add Successful")); + }, + onError: function (error) { + var _a, _b; + var message = ((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || t("failed_to_add_data"); + react_toastify_1.toast.error(message); + } + }); +} +exports["default"] = useAddMutation; diff --git a/src/api/helper/dist/useAxios.js b/src/api/helper/dist/useAxios.js new file mode 100644 index 0000000..87df001 --- /dev/null +++ b/src/api/helper/dist/useAxios.js @@ -0,0 +1,18 @@ +"use strict"; +exports.__esModule = true; +var config_1 = require("../config"); +var AuthState_1 = require("../../lib/state mangment/AuthState"); +var AxiosBuilder_1 = require("./AxiosBuilder"); +function useAxios() { + var _a = AuthState_1["default"](), isAuthenticated = _a.isAuthenticated, token = _a.token; + var buildAxios = new AxiosBuilder_1["default"](). + withBaseURL(config_1.BaseURL) + .withResponseType('json') + .withTimeout(120000) + .withHeaders({ "Content-Type": "application/json" }); + if (isAuthenticated) { + buildAxios.withHeaders({ Authorization: 'Bearer ' + token }); + } + return (buildAxios.build()); +} +exports["default"] = useAxios; diff --git a/src/api/helper/dist/useDeleteMutation.js b/src/api/helper/dist/useDeleteMutation.js new file mode 100644 index 0000000..c67e3f0 --- /dev/null +++ b/src/api/helper/dist/useDeleteMutation.js @@ -0,0 +1,79 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var useAxios_1 = require("./useAxios"); +var react_i18next_1 = require("react-i18next"); +function useDeleteMutation(key, url) { + var _this = this; + var axios = useAxios_1["default"](); + var queryClient = react_query_1.useQueryClient(); + var t = react_i18next_1.useTranslation().t; + return react_query_1.useMutation(function (_a) { + var dataToSend = _a.dataToSend, id = _a.id; + return __awaiter(_this, void 0, void 0, function () { + var data; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, axios["delete"](url + "/" + id)]; + case 1: + data = (_b.sent()).data; + return [2 /*return*/, __assign(__assign({}, data), { id: id, dataToSend: dataToSend })]; + } + }); + }); + }, { + onSuccess: function (data) { + queryClient.invalidateQueries(key); + react_toastify_1.toast.success(t('deleted_successfully')); + } + }); +} +exports["default"] = useDeleteMutation; diff --git a/src/api/helper/dist/useGetOneQuery.js b/src/api/helper/dist/useGetOneQuery.js new file mode 100644 index 0000000..9a6e6cc --- /dev/null +++ b/src/api/helper/dist/useGetOneQuery.js @@ -0,0 +1,81 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var useAxios_1 = require("./useAxios"); +var AuthState_1 = require("../../lib/state mangment/AuthState"); +var react_router_dom_1 = require("react-router-dom"); +function useGetOneQuery(key, url, params, options) { + var _this = this; + var _a; + if (params === void 0) { params = {}; } + if (options === void 0) { options = {}; } + var axios = useAxios_1["default"](); + var logout = AuthState_1["default"]().logout; + var language = (_a = localStorage.getItem("language")) !== null && _a !== void 0 ? _a : "en"; + var navigate = react_router_dom_1.useNavigate(); + var id = react_router_dom_1.useParams().id; + return react_query_1.useQuery([id, key], function () { return __awaiter(_this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.get(url + "/" + id + ("?lang=" + language))]; + case 1: + response = _a.sent(); + return [2 /*return*/, response.data]; + } + }); + }); }, __assign({ onError: function (error) { + if (error.response.status == 401 || error.response.status == 403) { + logout(); + navigate("/auth"); + } + }, refetchOnWindowFocus: false }, options)); +} +exports["default"] = useGetOneQuery; diff --git a/src/api/helper/dist/useGetQuery.js b/src/api/helper/dist/useGetQuery.js new file mode 100644 index 0000000..8593784 --- /dev/null +++ b/src/api/helper/dist/useGetQuery.js @@ -0,0 +1,81 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var useAxios_1 = require("./useAxios"); +var AuthState_1 = require("../../lib/state mangment/AuthState"); +var react_router_dom_1 = require("react-router-dom"); +function useGetQuery(key, url, params, options) { + var _this = this; + if (params === void 0) { params = {}; } + if (options === void 0) { options = {}; } + var axios = useAxios_1["default"](); + var logout = AuthState_1["default"]().logout; + var navigate = react_router_dom_1.useNavigate(); + return react_query_1.useQuery(params ? [key, params] : key, function () { return __awaiter(_this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.get(url, { params: params })]; + case 1: + response = _a.sent(); + return [2 /*return*/, response.data.data]; + } + }); + }); }, __assign({ onError: function (error) { + console.log('===================================='); + console.log(error.response.status); + console.log('===================================='); + if (error.response.status == 401 || error.response.status == 403) { + logout(); + navigate("/auth"); + } + }, refetchOnWindowFocus: false }, options)); +} +exports["default"] = useGetQuery; diff --git a/src/api/helper/dist/useGetSingleQuery.js b/src/api/helper/dist/useGetSingleQuery.js new file mode 100644 index 0000000..73c4729 --- /dev/null +++ b/src/api/helper/dist/useGetSingleQuery.js @@ -0,0 +1,81 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var useAxios_1 = require("./useAxios"); +var AuthState_1 = require("../../lib/state mangment/AuthState"); +var react_router_dom_1 = require("react-router-dom"); +function useGetSingleQuery(key, url, params, options) { + var _this = this; + var _a; + if (params === void 0) { params = {}; } + if (options === void 0) { options = {}; } + var axios = useAxios_1["default"](); + var logout = AuthState_1["default"]().logout; + var language = (_a = localStorage.getItem("language")) !== null && _a !== void 0 ? _a : "en"; + var navigate = react_router_dom_1.useNavigate(); + var id = react_router_dom_1.useParams().id; + return react_query_1.useQuery([id, key, params === null || params === void 0 ? void 0 : params.id], function () { return __awaiter(_this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.get(url + "?" + (params === null || params === void 0 ? void 0 : params.name) + "=" + (params === null || params === void 0 ? void 0 : params.id) + ("?lang=" + language))]; + case 1: + response = _a.sent(); + return [2 /*return*/, response.data]; + } + }); + }); }, __assign({ onError: function (error) { + if (error.response.status == 401 || error.response.status == 403) { + logout(); + navigate("/auth"); + } + }, refetchOnWindowFocus: false }, options)); +} +exports["default"] = useGetSingleQuery; diff --git a/src/api/helper/dist/useToggleStatus.js b/src/api/helper/dist/useToggleStatus.js new file mode 100644 index 0000000..488d87f --- /dev/null +++ b/src/api/helper/dist/useToggleStatus.js @@ -0,0 +1,89 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +exports.useToggleStatus = void 0; +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var react_i18next_1 = require("react-i18next"); +var useAxios_1 = require("./useAxios"); +exports.useToggleStatus = function (key, url, object_id) { + var axios = useAxios_1["default"](); + var queryClient = react_query_1.useQueryClient(); + var t = react_i18next_1.useTranslation()[0]; + return react_query_1.useMutation(function (_a) { + var id = _a.id, new_status = _a.new_status; + return __awaiter(void 0, void 0, void 0, function () { + var data; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: return [4 /*yield*/, axios.post(url, (_b = {}, + _b[object_id] = id, + _b.new_status = new_status, + _b))]; + case 1: + data = (_c.sent()).data; + return [2 /*return*/, __assign(__assign({}, data), { id: id, new_status: new_status })]; + } + }); + }); + }, { + onSuccess: function (_a) { + var message = _a.message, id = _a.id, new_status = _a.new_status; + react_toastify_1.toast.success(message || t("toggle_success")); + queryClient.invalidateQueries([key]); + }, + onError: function (err) { + var _a, _b; + var message = ((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || t("toggle_failed"); + react_toastify_1.toast.error(message); + // validateSession(err.response); + } + }); +}; diff --git a/src/api/helper/dist/useUpdateMutation.js b/src/api/helper/dist/useUpdateMutation.js new file mode 100644 index 0000000..b823ace --- /dev/null +++ b/src/api/helper/dist/useUpdateMutation.js @@ -0,0 +1,79 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var useAxios_1 = require("./useAxios"); +var react_i18next_1 = require("react-i18next"); +var react_router_dom_1 = require("react-router-dom"); +var useUpdateMutation = function (key, url, toastMessage, method) { + if (toastMessage === void 0) { toastMessage = true; } + var axios = useAxios_1["default"](); + var queryClient = react_query_1.useQueryClient(); + var t = react_i18next_1.useTranslation()[0]; + var id = react_router_dom_1.useParams().id; + return react_query_1.useMutation(function (dataToSend) { return __awaiter(void 0, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.put(url + "/" + id, dataToSend, { + headers: { + 'Content-Type': 'multipart/form-data' + } + })]; + case 1: + data = (_a.sent()).data; + return [2 /*return*/, data]; + } + }); + }); }, { + onSuccess: function (data) { + if (toastMessage) { + react_toastify_1.toast.success(data.message || t("updated_successfully")); + } + queryClient.invalidateQueries([key]); + }, + onError: function (err) { + var _a, _b; + var message = ((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || t("failed_to_update_data"); + react_toastify_1.toast.error(message); + // validateSession(err.response); + } + }); +}; +exports["default"] = useUpdateMutation; diff --git a/src/api/helper/dist/useUpdateMutationPut.js b/src/api/helper/dist/useUpdateMutationPut.js new file mode 100644 index 0000000..c0ef29e --- /dev/null +++ b/src/api/helper/dist/useUpdateMutationPut.js @@ -0,0 +1,79 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var useAxios_1 = require("./useAxios"); +var react_i18next_1 = require("react-i18next"); +var react_router_dom_1 = require("react-router-dom"); +var useUpdateMutationPost = function (key, url, toastMessage, method) { + if (toastMessage === void 0) { toastMessage = true; } + var axios = useAxios_1["default"](); + var queryClient = react_query_1.useQueryClient(); + var t = react_i18next_1.useTranslation()[0]; + var id = react_router_dom_1.useParams().id; + return react_query_1.useMutation(function (dataToSend) { return __awaiter(void 0, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, axios.post(url + "/" + id, dataToSend, { + headers: { + 'Content-Type': 'multipart/form-data' + } + })]; + case 1: + data = (_a.sent()).data; + return [2 /*return*/, data]; + } + }); + }); }, { + onSuccess: function (data) { + if (toastMessage) { + react_toastify_1.toast.success(data.message || t("updated_successfully")); + } + queryClient.invalidateQueries([key]); + }, + onError: function (err) { + var _a, _b; + var message = ((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || t("failed_to_update_data"); + react_toastify_1.toast.error(message); + // validateSession(err.response); + } + }); +}; +exports["default"] = useUpdateMutationPost; diff --git a/src/api/helper/dist/useUploadWithProgress.js b/src/api/helper/dist/useUploadWithProgress.js new file mode 100644 index 0000000..b8ce666 --- /dev/null +++ b/src/api/helper/dist/useUploadWithProgress.js @@ -0,0 +1,93 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +exports.useUploadWithProgress = void 0; +var react_1 = require("react"); +var react_query_1 = require("react-query"); +var react_toastify_1 = require("react-toastify"); +var useAxios_1 = require("./useAxios"); +var react_i18next_1 = require("react-i18next"); +exports.useUploadWithProgress = function (key, url) { + var axios = useAxios_1["default"](); + var queryClient = react_query_1.useQueryClient(); + var _a = react_1.useState(0.0), percentCompleted = _a[0], setPercentCompleted = _a[1]; + var t = react_i18next_1.useTranslation().t; + var mutation = react_query_1.useMutation(function (dataToSend) { return __awaiter(void 0, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + setPercentCompleted(0.0); + return [4 /*yield*/, axios.post(url, dataToSend, { + onUploadProgress: function (event) { + var _a; + console.log(); + if ((_a = event === null || event === void 0 ? void 0 : event.event) === null || _a === void 0 ? void 0 : _a.lengthComputable) { + setPercentCompleted(Math.round((event.loaded * 100) / event.total)); + } + } + })]; + case 1: + data = (_a.sent()).data; + return [2 /*return*/, data]; + } + }); + }); }, { + onSuccess: function (_a) { + var data = _a.data; + react_toastify_1.toast.success(data.message || t("_messages.success.upload")); + queryClient.invalidateQueries([key]); + }, + onError: function (err) { + var _a, _b; + var message = ((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || t("_messages.error.upload"); + react_toastify_1.toast.error(message); + // validateSession(err.response); + } + }); + return { + percentCompleted: percentCompleted, + value: percentCompleted, + mutate: mutation.mutate, + isLoading: mutation.isLoading, + isError: mutation.isError, + error: mutation.error, + isSuccess: mutation.isSuccess, + status: mutation.status + }; +}; diff --git a/src/config/AppKey.ts b/src/config/AppKey.ts index 8a8e12b..5b81dac 100644 --- a/src/config/AppKey.ts +++ b/src/config/AppKey.ts @@ -1,7 +1,7 @@ -const PROJECT_NAME = "E_TAXI_DAHBOARD" +const PROJECT_NAME = "Hijab_DAHBOARD" export const TOKEN_KEY = PROJECT_NAME + "_TOKEN" export const TOKEN_KEY_SOCKET = PROJECT_NAME + "_SOKCET_TOKEN"