Skip to content

Commit ccdf50d

Browse files
add validation for delete contact
1 parent d49b7bd commit ccdf50d

File tree

4 files changed

+94
-38
lines changed

4 files changed

+94
-38
lines changed

apps/OpenSign/src/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import ForgetPassword from "./routes/ForgetPassword";
1515
import ChangePassword from "./routes/ChangePassword";
1616
import ReportMicroapp from "./components/ReportMicroapp";
1717
import LoadMf from "./routes/LoadMf";
18-
import ValidateRoute from "./layout/ValidateRoute";
18+
import ValidateRoute from "./primitives/ValidateRoute";
1919

2020
function App() {
2121
const [isloading, setIsLoading] = useState(true);

apps/OpenSign/src/layout/HomeLayout.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,16 @@ const HomeLayout = ({ children }) => {
178178
};
179179

180180
const handleLoginBtn = () => {
181-
Parse.User.logOut();
182-
navigate("/", { replace: true });
181+
try {
182+
Parse.User.logOut();
183+
localStorage.removeItem("accesstoken");
184+
navigate("/", { replace: true });
185+
} catch (err) {
186+
console.log("err ", err);
187+
} finally {
188+
localStorage.removeItem("accesstoken");
189+
navigate("/", { replace: true });
190+
}
183191
};
184192
return (
185193
<div>
@@ -213,7 +221,7 @@ const HomeLayout = ({ children }) => {
213221
) : (
214222
<ModalUi title={"Session Expired"} isOpen={true} showClose={false}>
215223
<div className="flex flex-col justify-center items-center py-4 md:py-5 gap-5">
216-
<p className="text-xl font-semibold ">Your session has expired.</p>
224+
<p className="text-xl font-normal">Your session has expired.</p>
217225
<button
218226
onClick={handleLoginBtn}
219227
className="text-base px-3 py-1.5 rounded shadow-md text-white bg-[#1ab6ce]"

apps/OpenSign/src/primitives/GetReportDisplay.js

Lines changed: 70 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const ReportTable = ({
2121
const [actLoader, setActLoader] = useState({});
2222
const [isAlert, setIsAlert] = useState(false);
2323
const [isErr, setIsErr] = useState(false);
24-
const [isPopup, setIsPopup] = useState(false);
24+
const [isContactform, setIsContactform] = useState(false);
25+
const [isDeleteModal, setIsDeleteModal] = useState({});
2526
// For loop is used to calculate page numbers visible below table
2627
// Initialize pageNumbers using useMemo to avoid unnecessary re-creation
2728
const pageNumbers = useMemo(() => {
@@ -166,31 +167,7 @@ const ReportTable = ({
166167
};
167168
const handlebtn = async (item) => {
168169
if (ReportName === "Contactbook") {
169-
setActLoader({ [item.objectId]: true });
170-
try {
171-
const url =
172-
process.env.REACT_APP_SERVERURL + "/classes/contracts_Contactbook/";
173-
const body = { IsDeleted: true };
174-
const res = await axios.put(url + item.objectId, body, {
175-
headers: {
176-
"Content-Type": "application/json",
177-
"X-Parse-Application-Id": localStorage.getItem("AppID12"),
178-
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
179-
}
180-
});
181-
// console.log("Res ", res.data);
182-
if (res.data && res.data.updatedAt) {
183-
setActLoader({});
184-
setIsAlert(true);
185-
const upldatedList = List.filter((x) => x.objectId !== item.objectId);
186-
setList(upldatedList);
187-
}
188-
} catch (err) {
189-
console.log("err", err);
190-
setIsAlert(true);
191-
setIsErr(true);
192-
setActLoader({});
193-
}
170+
setIsDeleteModal({ [item.objectId]: true });
194171
}
195172
};
196173

@@ -204,13 +181,44 @@ const ReportTable = ({
204181
const paginateFront = () => setCurrentPage(currentPage + 1);
205182
const paginateBack = () => setCurrentPage(currentPage - 1);
206183

207-
const handlePopup = () => {
208-
setIsPopup(!isPopup);
184+
const handleContactFormModal = () => {
185+
setIsContactform(!isContactform);
209186
};
210187

211188
const handleUserData = (data) => {
212189
setList((prevData) => [data, ...prevData]);
213190
};
191+
192+
const handleDelete = async (item) => {
193+
setIsDeleteModal({})
194+
setActLoader({ [item.objectId]: true });
195+
try {
196+
const url =
197+
process.env.REACT_APP_SERVERURL + "/classes/contracts_Contactbook/";
198+
const body = { IsDeleted: true };
199+
const res = await axios.put(url + item.objectId, body, {
200+
headers: {
201+
"Content-Type": "application/json",
202+
"X-Parse-Application-Id": localStorage.getItem("AppID12"),
203+
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
204+
}
205+
});
206+
// console.log("Res ", res.data);
207+
if (res.data && res.data.updatedAt) {
208+
setActLoader({});
209+
setIsAlert(true);
210+
const upldatedList = List.filter((x) => x.objectId !== item.objectId);
211+
setList(upldatedList);
212+
}
213+
} catch (err) {
214+
console.log("err", err);
215+
setIsAlert(true);
216+
setIsErr(true);
217+
setActLoader({});
218+
}
219+
};
220+
const handleCloseDeleteModal = () => setIsDeleteModal({});
221+
214222
return (
215223
<div className="p-2 overflow-x-scroll w-full bg-white rounded-md">
216224
{isAlert && (
@@ -228,7 +236,10 @@ const ReportTable = ({
228236
<div className="flex flex-row items-center justify-between my-2 mx-3 text-[20px] md:text-[23px]">
229237
<div className="font-light">{ReportName}</div>
230238
{form && (
231-
<div className="cursor-pointer" onClick={() => handlePopup()}>
239+
<div
240+
className="cursor-pointer"
241+
onClick={() => handleContactFormModal()}
242+
>
232243
<i className="fa-solid fa-square-plus text-sky-400 text-[25px]"></i>
233244
</div>
234245
)}
@@ -294,6 +305,30 @@ const ReportTable = ({
294305
)}
295306
</button>
296307
))}
308+
{isDeleteModal[item.objectId] && (
309+
<ModalUi isOpen title={"Delete Contact"} handleClose={handleCloseDeleteModal}>
310+
<div className="m-[20px]">
311+
<div className="text-lg font-normal text-black">
312+
Are you sure you want to delete this contact?
313+
</div>
314+
<hr className="bg-[#ccc] mt-4 " />
315+
<div className="flex items-center mt-3 gap-2 text-white">
316+
<button
317+
onClick={() => handleDelete(item)}
318+
className="bg-[#1ab6ce] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-3 focus:outline-none"
319+
>
320+
Yes
321+
</button>
322+
<button
323+
onClick={handleCloseDeleteModal}
324+
className="bg-[#188ae2] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-3 text-center ml-[2px] focus:outline-none"
325+
>
326+
No
327+
</button>
328+
</div>
329+
</div>
330+
</ModalUi>
331+
)}
297332
</td>
298333
</tr>
299334
) : (
@@ -421,10 +456,14 @@ const ReportTable = ({
421456
<div className="text-sm font-semibold">No Data Available</div>
422457
</div>
423458
)}
424-
<ModalUi title={"Add Contact"} isOpen={isPopup} handleClose={handlePopup}>
459+
<ModalUi
460+
title={"Add Contact"}
461+
isOpen={isContactform}
462+
handleClose={handleContactFormModal}
463+
>
425464
<AppendFormInForm
426465
handleUserData={handleUserData}
427-
closePopup={handlePopup}
466+
closePopup={handleContactFormModal}
428467
/>
429468
</ModalUi>
430469
</div>

apps/OpenSign/src/layout/ValidateRoute.js renamed to apps/OpenSign/src/primitives/ValidateRoute.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,23 @@ const ValidateRoute = ({ children }) => {
1111
sessionToken: localStorage.getItem("accesstoken")
1212
});
1313
if (!user) {
14-
Parse.User.logOut();
14+
handlelogout();
1515
}
1616
} catch (error) {
17-
// Session token is invalid or there was an error
18-
Parse.User.logOut();
17+
handlelogout();
1918
}
2019
})();
2120
}, []);
21+
const handlelogout = async () => {
22+
try {
23+
Parse.User.logOut();
24+
localStorage.removeItem("accesstoken");
25+
} catch (err) {
26+
console.log("err ", err);
27+
} finally {
28+
localStorage.removeItem("accesstoken");
29+
}
30+
};
2231
return <div>{children}</div>;
2332
};
2433

0 commit comments

Comments
 (0)