@@ -368,12 +380,12 @@ export const Membership = observer(() => {
description={
- Username : {item.username}
+ Username : {item.username}
}
/>
-
);
}}
@@ -415,25 +427,25 @@ export const Membership = observer(() => {
}}
>
-
-
+
+
+
-
+
diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js
index df67074..92faaef 100644
--- a/src/pages/Membership/MembershipModal.js
+++ b/src/pages/Membership/MembershipModal.js
@@ -11,7 +11,6 @@ export const MembershipModal = ({
}) => {
const [form] = Form.useForm();
const { Option } = Select;
- const dataStatus = ["true", "false"];
const store = useStore();
return (
diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js
index 7f8296b..ba1a29f 100644
--- a/src/pages/Payback/Payback.js
+++ b/src/pages/Payback/Payback.js
@@ -1,4 +1,4 @@
-import React, { useState ,useEffect} from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Card,
@@ -12,42 +12,37 @@ import {
Space,
Table,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
import {
CheckCircleOutlined,
CloseOutlined,
FilterOutlined,
PlusSquareOutlined,
} from "@ant-design/icons";
-import { PaybackModal } from "./PaybackModal";
-import { BreadcumbComponent } from "../../component/BreadcumbComponent";
-import { LINKS } from "../../routes/app";
+import {PaybackModal} from "./PaybackModal";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {LINKS} from "../../routes/app";
+import {ModalLoaderContext} from "../../utils/modal";
-const { Search } = Input;
+const {Search} = Input;
export const Payback = observer(() => {
const store = useStore();
- const [visibleModal, setVisibleModal] = useState(false);
- const [confirmLoading, setConfirmLoading] = useState(false);
- const [initialData, setInitialData] = useState({});
- //const [confirmLoading, setConfirmLoading] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
-
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- await store.payback.getDataUser();
- //await store.role.getData();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
+ const init = async () => {
+ try {
+ modalLoader.setLoading(true);
+ await store.payback.getDataUser();
+ modalLoader.setLoading(false);
+ } catch (e) {
+ modalLoader.setLoading(false);
+ }
+ };
+
+ init();
}, []);
@@ -64,7 +59,7 @@ export const Payback = observer(() => {
render: (text, record) => (
@@ -85,7 +80,7 @@ export const Payback = observer(() => {
onClick={async () => {
await handleAction(record, "accept");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#1bb91d",
color: "#fff",
@@ -98,7 +93,7 @@ export const Payback = observer(() => {
onClick={async () => {
await handleAction(record, "reject");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#ff1c1c",
color: "#fff",
@@ -112,7 +107,7 @@ export const Payback = observer(() => {
},
];
- if(store.authentication.userData.role === "Retail") columns.pop();
+ if (store.authentication.userData.role === "Retail") columns.pop();
const routeData = [
{
@@ -121,12 +116,12 @@ export const Payback = observer(() => {
},
{
route: LINKS.PAYBACK,
- name:
Payback,
+ name:
Payback,
},
];
const onSubmit = async (data) => {
- setConfirmLoading(true);
+ modalLoader.setLoading(true);
try {
// await store.membership.create(data);
// message.success("Success Add New Member");
@@ -135,25 +130,25 @@ export const Payback = observer(() => {
console.error(e, "apa errornya");
message.error("Failed Add Member");
}
- setConfirmLoading(false);
- setVisibleModal(false);
+ modalLoader.setLoading(false);
};
- const handleAction = async (record, type) => {};
+ const handleAction = async (record, type) => {
+ };
return (
-
+
-
+
-
+
{
// style: {marginBottom: "1rem", marginRight: "1rem"},
// }}
dataSource={store.payback.data}
- style={{ padding: 0 }}
+ style={{padding: 0}}
renderItem={(item) => {
return (
@@ -236,11 +231,11 @@ export const Payback = observer(() => {
title={item.name}
description={
-
+
}
/>
-
);
}}
diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js
index bb16791..1e66284 100644
--- a/src/pages/Payback/PaybackFromUser.js
+++ b/src/pages/Payback/PaybackFromUser.js
@@ -1,4 +1,4 @@
-import React, { useState ,useEffect} from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Card,
@@ -12,42 +12,40 @@ import {
Space,
Table,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
import {
CheckCircleOutlined,
CloseOutlined,
FilterOutlined,
PlusSquareOutlined,
} from "@ant-design/icons";
-import { PaybackModal } from "./PaybackModal";
-import { BreadcumbComponent } from "../../component/BreadcumbComponent";
-import { LINKS } from "../../routes/app";
+import {PaybackModal} from "./PaybackModal";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {LINKS} from "../../routes/app";
+import {ModalLoaderContext} from "../../utils/modal";
-const { Search } = Input;
+const {Search} = Input;
export const PaybackFromUser = observer(() => {
const store = useStore();
const [visibleModal, setVisibleModal] = useState(false);
- const [confirmLoading, setConfirmLoading] = useState(false);
const [initialData, setInitialData] = useState({});
- //const [confirmLoading, setConfirmLoading] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
-
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- await store.payback.getData();
- //await store.role.getData();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
+ const init = async () => {
+ try {
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ await store.authentication.getProfile();
+ modalLoader.setLoading(false);
+ } catch (e) {
+ modalLoader.setLoading(false);
+ }
+ };
+
+ init();
}, []);
@@ -59,7 +57,7 @@ export const PaybackFromUser = observer(() => {
render: (text, record) => (
@@ -80,7 +78,7 @@ export const PaybackFromUser = observer(() => {
onClick={async () => {
await handleAction(record, "accept");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#1bb91d",
color: "#fff",
@@ -93,7 +91,7 @@ export const PaybackFromUser = observer(() => {
onClick={async () => {
await handleAction(record, "reject");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#ff1c1c",
color: "#fff",
@@ -149,12 +147,12 @@ export const PaybackFromUser = observer(() => {
},
{
route: LINKS.PAYBACKFROMUSER,
- name:
Payback User,
+ name:
Payback User,
},
];
const onSubmit = async (data) => {
- setConfirmLoading(true);
+ modalLoader.setLoading(true);
try {
// await store.membership.create(data);
// message.success("Success Add New Member");
@@ -163,25 +161,26 @@ export const PaybackFromUser = observer(() => {
console.error(e, "apa errornya");
message.error("Failed Add Member");
}
- setConfirmLoading(false);
+ modalLoader.setLoading(false);
setVisibleModal(false);
};
- const handleAction = async (record, type) => {};
+ const handleAction = async (record, type) => {
+ };
return (
-
+
-
+
-
+
{
setVisibleModal(true);
}}
>
- New
+ New
)}
@@ -210,19 +209,19 @@ export const PaybackFromUser = observer(() => {
dataSource={store.payback.data}
bordered
pagination={{
- pageSize: store.payback.pageSize,
- total: store.payback.total_data,
- current: store.payback.page + 1,
- showSizeChanger: true,
- simple: false
+ pageSize: store.payback.pageSize,
+ total: store.payback.total_data,
+ current: store.payback.page + 1,
+ showSizeChanger: true,
+ simple: false
}}
onChange={async (page) => {
- let pageNumber = page.current;
- store.payback.pageSize = page.pageSize;
- store.payback.page = pageNumber - 1;
- // store.membership.isLoading = true;
- await store.payback.getData();
- // store.membership.isLoading = false;
+ let pageNumber = page.current;
+ store.payback.pageSize = page.pageSize;
+ store.payback.page = pageNumber - 1;
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ modalLoader.setLoading(false);
}}
/>
)}
@@ -231,19 +230,21 @@ export const PaybackFromUser = observer(() => {
{
- // store.membership.pageSize = page.pageSize;
- // store.membership.page = page.current;
- // store.membership.getData();
- // },
- // pageSize: store.membership.pageSize,
- // total: store.membership.total_data,
- // current: store.membership.page,
- // style: {marginBottom: "1rem", marginRight: "1rem"},
- // }}
+ pagination={{
+ onChange: async (page) => {
+ store.payback.pageSize = page.pageSize;
+ store.payback.page = page.current;
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ modalLoader.setLoading(false);
+ },
+ pageSize: store.payback.pageSize,
+ total: store.payback.total_data,
+ current: store.payback.page,
+ style: {marginBottom: "1rem", marginRight: "1rem"},
+ }}
dataSource={store.payback.data}
- style={{ padding: 0 }}
+ style={{padding: 0}}
renderItem={(item) => {
return (
@@ -264,11 +265,11 @@ export const PaybackFromUser = observer(() => {
title={item.name}
description={
-
+
}
/>
-
);
}}
@@ -290,7 +291,6 @@ export const PaybackFromUser = observer(() => {
{
await onSubmit(data);
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js
index a559aeb..e87f74d 100644
--- a/src/pages/Payback/PaybackModal.js
+++ b/src/pages/Payback/PaybackModal.js
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Form,
@@ -8,37 +8,22 @@ import {
Modal,
Upload,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { appConfig } from "../../config/app";
-import { LoadingOutlined, UploadOutlined } from "@ant-design/icons";
+import {useStore} from "../../utils/useStore";
+import {appConfig} from "../../config/app";
+import {LoadingOutlined, UploadOutlined} from "@ant-design/icons";
+import {ModalLoaderContext} from "../../utils/modal";
-export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
+export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => {
const [form] = Form.useForm();
const store = useStore();
const [fileList, setFileList] = useState([]);
const [previewTitle, setPreviewTitle] = useState("");
const [previewImage, setPreviewImage] = useState("");
- const [loading, setLoading] = useState(false);
const [fileUrl, setFileUrl] = useState("");
const firstIndexFileList = fileList[0];
- const [isLoading, setIsLoading] = useState(false);
-
+ const [loading, setLoading] = useState(false);
+ const modalLoader = useContext(ModalLoaderContext);
- useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- //await store.membership.getData();
- //await store.role.getData();
- await store.authentication.getProfile();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
- }, []);
const beforeUpload = (file) => {
let isPdf, isLt2M;
let allowedFile = ["image/jpeg", "image/png", "application/pdf"];
@@ -59,7 +44,7 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1));
};
- const handleChange = ({ fileList }) => {
+ const handleChange = ({fileList}) => {
setFileList(fileList);
if (fileList.length && fileList[0].status === "done") {
form.setFieldsValue({
@@ -75,9 +60,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
const uploadButton = (
{loading ? (
-
+
) : (
- }>Click to Upload
+
)}
);
@@ -93,15 +78,16 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
const handleSubmit = async (data) => {
console.log(data, "isi data2");
try {
+ modalLoader.setLoading(true);
await store.payback.create(data);
+ modalLoader.setLoading(false);
message.success("Success Add Payback");
await store.payback.getData();
} catch (e) {
+ modalLoader.setLoading(false);
console.log(e, "apa errornya");
message.error("Failed Add Member");
}
-
- //store.payback.visibleModalPayback = false;
form.resetFields();
};
@@ -137,10 +123,10 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
-
+
{
{previewTitle}
@@ -196,9 +182,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
-
+
diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js
index e3271e0..fee1dba 100644
--- a/src/pages/Product/Category.js
+++ b/src/pages/Product/Category.js
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {Button, Card, Col, Input, Row, Tabs} from "antd";
import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
@@ -6,22 +6,23 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {LINKS} from "../../routes/app";
import {CategoryComponent} from "../../component/CategoryComponent";
+import {ModalLoaderContext} from "../../utils/modal";
const {TabPane} = Tabs;
const {Search} = Input;
export const Category = observer(() => {
- const [isLoading, setIsLoading] = useState(false);
const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
+ modalLoader.setLoading(true);
await store.category.getData();
- setIsLoading(false);
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js
index 663e4ac..edfa0ae 100644
--- a/src/pages/Product/Subcategory.js
+++ b/src/pages/Product/Subcategory.js
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {Button, Card, Col, Input, Row} from "antd";
import {PlusSquareOutlined} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
@@ -6,21 +6,22 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {LINKS} from "../../routes/app";
import {SubcategoryComponent} from "../../component/Subcategory";
+import {ModalLoaderContext} from "../../utils/modal";
const {Search} = Input;
export const Subcategory = observer(() => {
- const [isLoading, setIsLoading] = useState(false);
const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
- getData();
- setIsLoading(false);
+ modalLoader.setLoading(true);
+ await getData();
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
@@ -39,22 +40,22 @@ export const Subcategory = observer(() => {
},
{
route: LINKS.SUBCATEGORY,
- name: Sub Category,
+ name: Sub Category,
},
];
return (
-
+
-
+
{/* */}
-
+
{
-
+
);
diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js
index a0aa58e..1096b36 100644
--- a/src/pages/Profile/Profile.js
+++ b/src/pages/Profile/Profile.js
@@ -1,4 +1,4 @@
-import React, {useEffect} from "react";
+import React, {useContext, useEffect} from "react";
import {Button, Card, Col, Row, Table, Typography} from "antd";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {LINKS} from "../../routes/app";
@@ -6,138 +6,143 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {FilterOutlined} from "@ant-design/icons";
import {format, parseISO} from "date-fns";
+import {ModalLoaderContext} from "../../utils/modal";
const {Title, Text} = Typography;
export const Profile = observer(() => {
- const store = useStore();
- const routeData = [
- {
- route: LINKS.HOME,
- name: "Home",
- },
- {
- route: LINKS.PROFILE,
- name: Profile,
- },
- ];
+ const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
- useEffect(() => {
- (async () => {
- await Promise.allSettled([
- store.authentication.getProfile(),
- store.transaction.getDataHistoryTransaction(),
- ]);
- })()
- }, []);
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.PROFILE,
+ name: Profile,
+ },
+ ];
- const columns = [
- {
- title: 'Markup Price',
- dataIndex: 'mark_up_price',
- key: 'mark_up_price',
- width: '20%',
- },
- {
- title: 'Name',
- dataIndex: 'name',
- key: 'name',
- width: '50%',
- },
- {
- title: 'Transaction Date',
- dataIndex: 'created_at',
- key: 'created_at',
- render: (text, record) => {
- return (
- {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')}
- )
- },
- },
- ]
+ useEffect(() => {
+ (async () => {
+ modalLoader.setLoading(true);
+ await Promise.allSettled([
+ store.authentication.getProfile(),
+ store.transaction.getDataHistoryTransaction(),
+ ]);
+ modalLoader.setLoading(false);
+ })()
+ }, []);
- const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? {
- display: "flex",
- justifyContent: "center"
- } : {fontSize: "0.75rem"};
- const styleSaldoContent = store.ui.mediaQuery.isDesktop ? {
- fontSize: '1.25rem',
- display: "flex",
- justifyContent: "center"
- } : null;
+ const columns = [
+ {
+ title: 'Markup Price',
+ dataIndex: 'mark_up_price',
+ key: 'mark_up_price',
+ width: '20%',
+ },
+ {
+ title: 'Name',
+ dataIndex: 'name',
+ key: 'name',
+ width: '50%',
+ },
+ {
+ title: 'Transaction Date',
+ dataIndex: 'created_at',
+ key: 'created_at',
+ render: (text, record) => {
+ return (
+ {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')}
+ )
+ },
+ },
+ ]
- return (
-
-
-
- Profile
-
-
-
-
- Name
-
-
- {store.authentication.profileData?.userDetail?.name}
-
-
- Phone Number
-
-
- {store.authentication.profileData?.userDetail?.phone_number}
-
-
- Username
-
-
- {store.authentication.profileData?.username}
-
-
- Role
-
-
- {store.authentication.profileData.roles?.name}
-
-
- Superior
-
-
- {store.authentication.profileData.superior?.username}
-
-
-
-
-
-
- Saldo
-
-
- {store.authentication.profileData?.wallet}
-
-
-
-
-
-
-
-
History User Transaction
+ const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? {
+ display: "flex",
+ justifyContent: "center"
+ } : {fontSize: "0.75rem"};
+ const styleSaldoContent = store.ui.mediaQuery.isDesktop ? {
+ fontSize: '1.25rem',
+ display: "flex",
+ justifyContent: "center"
+ } : null;
-
-
-
-
-
-
-
-
- )
+ return (
+
+
+
+ Profile
+
+
+
+
+ Name
+
+
+ {store.authentication.profileData?.userDetail?.name}
+
+
+ Phone Number
+
+
+ {store.authentication.profileData?.userDetail?.phone_number}
+
+
+ Username
+
+
+ {store.authentication.profileData?.username}
+
+
+ Role
+
+
+ {store.authentication.profileData.roles?.name}
+
+
+ Superior
+
+
+ {store.authentication.profileData.superior?.username}
+
+
+
+
+
+
+ Saldo
+
+
+ {store.authentication.profileData?.wallet}
+
+
+
+
+
+
+
+
History User Transaction
+
+
+
+
+
+
+
+
+
+ )
});
diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js
index 9136263..6e5f103 100644
--- a/src/pages/Transaction/Product.js
+++ b/src/pages/Transaction/Product.js
@@ -1,8 +1,9 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {useStore} from "../../utils/useStore";
import {Button, Card, Col, Input, message, Modal, Row, Select} from "antd";
import {observer} from "mobx-react-lite";
import {MoneyCollectOutlined} from "@ant-design/icons";
+import {ModalLoaderContext} from "../../utils/modal";
const {Search} = Input;
const {Option} = Select;
@@ -10,133 +11,139 @@ const {Option} = Select;
export const Product = observer(() => {
const store = useStore();
- const [isLoading, setIsLoading] = useState(false);
const [productData, setProductData] = useState([]);
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
- await store.transaction.getDataSubCategories();
- await store.transaction.getDataCategories();
- setIsLoading(false);
+ modalLoader.setLoading(true);
+ await Promise.allSettled([
+ store.transaction.getDataSubCategories(),
+ store.transaction.getDataCategories()
+ ])
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
- init();
+ init();
}, []);
- // data
- useEffect(() => {
- console.log("⚡ transaction data store", store.transaction.data);
- setProductData(store.transaction.data);
- }, [store.transaction.data]);
+ // data
+ useEffect(() => {
+ console.log("⚡ transaction data store", store.transaction.data);
+ setProductData(store.transaction.data);
+ }, [store.transaction.data]);
- // Subcategory
- useEffect(() => {
- console.log(
- "⚡ transaction subcategory store",
- store.transaction.dataSubCategories
- );
- }, [store.transaction.dataSubCategories]);
+ // Subcategory
+ useEffect(() => {
+ console.log(
+ "⚡ transaction subcategory store",
+ store.transaction.dataSubCategories
+ );
+ }, [store.transaction.dataSubCategories]);
- const handleChangeSubcategory = async (item) => {
- store.transaction.filterSubCategory = item;
- await store.transaction.getData();
- };
+ const handleChangeSubcategory = async (item) => {
+ store.transaction.filterSubCategory = item;
+ modalLoader.setLoading(true);
+ await store.transaction.getData();
+ modalLoader.setLoading(false);
+ };
- const handleBuyProduct = async (data) => {
- try {
- const response = await store.transaction.buyProduct({productCode: data});
- // if (response.status === 200) {
- message.success("Success Buy Product");
- // } else {
- //message.error("Failed Buy Product");
- //}
- } catch (e) {
- console.log(e, "apa errornya");
- message.error("Failed Buy Product");
- }
- };
+ const handleBuyProduct = async (data) => {
+ modalLoader.setLoading(true);
+ try {
+ const response = await store.transaction.buyProduct({productCode: data});
+ // if (response.status === 200) {
+ message.success("Success Buy Product");
+ // } else {
+ //message.error("Failed Buy Product");
+ //}
+ } catch (e) {
+ console.log(e, "apa errornya");
+ message.error("Failed Buy Product");
+ }
+ modalLoader.setLoading(false);
+ };
- return (
-
-
- Sub Category
-
-
-
-
-
-
-
-
- Produk & Nominal
-
-
-
-
-
- {productData.length != 0 && (
-
- {productData.map((item, index) => (
-
- {
- Modal.confirm({
- title: `Are you sure buy ${item.name}?`,
- icon: ,
- okText: "Confirm",
- cancelText: "Cancel",
- okType: "primary",
- onOk() {
- handleBuyProduct(item.code)
- },
- onCancel() {
- console.log("Cancel");
- },
- });
- }}
- style={{cursor: "pointer"}}
- >
- {item.name}
-
-
+ return (
+
+
+ Sub Category
+
+
+
+
+
+
+
+
+ Produk & Nominal
+
+
+
+
+
+ {productData.length != 0 && (
+
+ {productData.map((item, index) => (
+
+ {
+ Modal.confirm({
+ title: `Are you sure buy ${item.name}?`,
+ icon: ,
+ okText: "Confirm",
+ cancelText: "Cancel",
+ okType: "primary",
+ onOk() {
+ handleBuyProduct(item.code)
+ },
+ onCancel() {
+ console.log("Cancel");
+ },
+ });
+ }}
+ style={{cursor: "pointer"}}
+ >
+ {item.name}
+
+
{new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
+ style: "currency",
+ currency: "IDR",
}).format(item?.currentPrice?.mark_up_price)}
-
-
- ))}
+
+
+ ))}
)}
{productData.length !== 0 && (
-
+
diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js
index 1b0d0ec..978d6b9 100644
--- a/src/pages/Transaction/Transaction.js
+++ b/src/pages/Transaction/Transaction.js
@@ -1,27 +1,28 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {useStore} from "../../utils/useStore";
import {Card, Tabs} from "antd";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {Product} from "./Product";
import {LINKS} from "../../routes/app";
import {observer} from "mobx-react-lite";
+import {ModalLoaderContext} from "../../utils/modal";
const {TabPane} = Tabs;
export const Transaction = observer(() => {
const store = useStore();
- const [isLoading, setIsLoading] = useState(false);
+ const modalLoader = useContext(ModalLoaderContext);
// Init
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
+ modalLoader.setLoading(true);
await store.transaction.getDataCategories();
- setIsLoading(false);
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
@@ -35,7 +36,9 @@ export const Transaction = observer(() => {
const handleChangeTabs = async (key) => {
store.transaction.filterCategory = key;
+ modalLoader.setLoading(true);
await store.transaction.getDataSubCategories();
+ modalLoader.setLoading(false);
};
const routeData = [
@@ -50,22 +53,22 @@ export const Transaction = observer(() => {
];
return (
-
-
-
-
- {store.transaction.dataCategories.map((item, index) => (
-
-
-
- ))}
+
+
+
+
+ {store.transaction.dataCategories.map((item, index) => (
+
+
+
+ ))}
-
-
-
+
+
+
);
});