diff --git a/src/app/services/auth.js b/src/app/services/auth.js
index 32dc1c9b..7fe6b6dd 100644
--- a/src/app/services/auth.js
+++ b/src/app/services/auth.js
@@ -83,6 +83,13 @@ export const authApi = createApi({
body: { magic_token: token },
}),
}),
+ updatePassword: builder.mutation({
+ query: ({ old_password, new_password }) => ({
+ url: "user/change_password",
+ method: "POST",
+ body: { old_password, new_password },
+ }),
+ }),
getMetamaskNonce: builder.query({
query: (address) => ({
url: `/token/metamask/nonce?public_address=${address}`,
@@ -102,4 +109,5 @@ export const {
useLoginMutation,
useLazyLogoutQuery,
useCheckInviteTokenValidMutation,
+ useUpdatePasswordMutation,
} = authApi;
diff --git a/src/routes/setting/MyAccount.js b/src/routes/setting/MyAccount.js
index 8e8ae20b..1bbaee83 100644
--- a/src/routes/setting/MyAccount.js
+++ b/src/routes/setting/MyAccount.js
@@ -5,6 +5,7 @@ import toast from "react-hot-toast";
import { useUpdateAvatarMutation } from "../../app/services/contact";
import AvatarUploader from "../../common/component/AvatarUploader";
import ProfileBasicEditModal from "./ProfileBasicEditModal";
+import UpdatePasswordModal from "./UpdatePasswordModal";
const StyledWrapper = styled.div`
display: flex;
flex-direction: column;
@@ -109,6 +110,7 @@ const EditModalInfo = {
},
};
export default function MyAccount() {
+ const [passwordModal, setPasswordModal] = useState(false);
const [editModal, setEditModal] = useState(null);
const [
uploadAvatar,
@@ -129,6 +131,9 @@ export default function MyAccount() {
const closeBasicEditModal = () => {
setEditModal(null);
};
+ const togglePasswordModal = () => {
+ setPasswordModal((prev) => !prev);
+ };
if (!loginUser) return null;
const { uid, avatar, name, email } = loginUser;
return (
@@ -146,22 +151,27 @@ export default function MyAccount() {
{name} #{uid}
- {/*
*/}
- {/*
*/}
email
{email}
- {/*
*/}
- {/*
*/}
+
+
+
+ password
+ *********
+
+
@@ -181,6 +191,9 @@ export default function MyAccount() {
closeModal={closeBasicEditModal}
/>
)}
+ {passwordModal && (
+
+ )}
>
);
}
diff --git a/src/routes/setting/UpdatePasswordModal.js b/src/routes/setting/UpdatePasswordModal.js
new file mode 100644
index 00000000..b4bbc041
--- /dev/null
+++ b/src/routes/setting/UpdatePasswordModal.js
@@ -0,0 +1,119 @@
+// import React from "react";
+import { useEffect, useState } from "react";
+import styled from "styled-components";
+import Input from "../../common/component/styled/Input";
+import { useUpdatePasswordMutation } from "../../app/services/auth";
+import StyledModal from "../../common/component/styled/Modal";
+import Button from "../../common/component/styled/Button";
+const StyledEdit = styled(StyledModal)`
+ .input {
+ margin: 16px 0;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ label {
+ font-weight: 600;
+ font-size: 14px;
+ line-height: 20px;
+ color: #6b7280;
+ }
+ }
+`;
+import Modal from "../../common/component/Modal";
+import toast from "react-hot-toast";
+export default function ProfileBasicEditModal({ closeModal }) {
+ const [input, setInput] = useState({
+ current: "",
+ newPassword: "",
+ confirmPassword: "",
+ });
+ // const dispatch = useDispatch();
+ const [
+ updatePassword,
+ { isLoading, isSuccess },
+ ] = useUpdatePasswordMutation();
+ const handleChange = (evt) => {
+ const { type } = evt.target.dataset;
+ setInput((prev) => {
+ return { ...prev, [type]: evt.target.value };
+ });
+ };
+ const handleUpdate = () => {
+ console.log("pwd", input);
+ const { current, newPassword } = input;
+ updatePassword({ old_password: current, new_password: newPassword });
+ // update({ [valueKey]: input });
+ };
+ const handleCompare = () => {
+ const { newPassword, confirmPassword } = input;
+ if (newPassword !== confirmPassword) {
+ toast.error("Not same with new password");
+ }
+ };
+ useEffect(() => {
+ if (isSuccess) {
+ // todo
+ toast.success("update password successfully");
+ closeModal();
+ }
+ }, [isSuccess]);
+ const { current, newPassword, confirmPassword } = input;
+ const disableBtn =
+ !current ||
+ !newPassword ||
+ !confirmPassword ||
+ newPassword !== confirmPassword ||
+ isLoading;
+ return (
+
+
+
+
+ >
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}