import React, { useEffect, useRef, useState } from "react"; import ContentWrapper from "../utils/ContentWrapper"; import ToastUtil from "@common-utils/ToastUtil"; import DataService from "@common-services/DataService"; import { connect } from "react-redux"; import { FormField } from "@amxchange/grid-view-web-client"; import { APPLICATIONS_API_BASE_ROUTE, fetchApplications } from "./constants"; import { Button, Card, CardBody, CardHeader, CardText, CardTitle, Col, ListGroup, ListGroupItem, Row } from "reactstrap"; import ModalAlt from "../utils/ModalAlt"; const Applications = ({ userDetails }) => { //on creation everything of the app is to be set to zero? const [applications, setApplications] = useState([]); const createAppModalRef = useRef(null); const [isLoading, setIsLoading] = useState(false); const createApplication = async application => { try { setIsLoading(true); const reqBody = getReqBody(application); if (!reqBody) return ToastUtil.error("Please enter all the required Fields!!"); const res = await DataService.post(APPLICATIONS_API_BASE_ROUTE, {...reqBody}); // console.log({ "Res from creating Applications": res }); if (res.status?.code === 200) { ToastUtil.success(`Successfully Created the app ${application.name}`); createAppModalRef.current.hide(); init(); } } catch (error) { console.error(`Error while Creating an Application with name ${application.name} `, error); } finally { setIsLoading(false); } }; const getReqBody = application => { if (!application.name || !application.description) return null; return { createdBy: userDetails.email || userDetails.employeeName, appName: application.name, appDescription: application.description }; }; const init = async () => { const applications = await fetchApplications(); setApplications(applications); }; const onClickCreateApp = () => { createAppModalRef.current.setData({ employeeEmail: userDetails.email, createApplication: createApplication }); createAppModalRef.current.show(); }; useEffect(() => { init(); }, []); return (
{"Existing Applications"}
{applications.length === 0 ? (

No applications available

) : ( applications.map(app => ( {app.name} {app.description} Version No:{" "} {app.version.versionNumber || "N/A"} Version Code:{" "} {app.version.versionCode || "N/A"} {getForceUpdateTypeBasedOnInput(app)} Updated By:{" "} {app.version.updatedBy || "N/A"} Last Updated:{" "} {new Date(app.version.timestamp.stamp).toLocaleString()} )) )}
); }; const CreateAppForm = ({ data, close }) => { const { employeeEmail, createApplication } = data; const [application, setApplication] = useState({ name: "", description: "" }); const onClickCreateApp = async () => { createApplication(application); }; return ( <>
setApplication(prev => ({ ...prev, name: newVal }))} /> setApplication(prev => ({ ...prev, description: newVal }))} />
); }; const getForceUpdateTypeBasedOnInput = app => { if (app.version.isSuperUpdate) return ( <> Is Super Update: True ); else if (app.version.isStagedUpdate) return ( <> Is Staged Update: True ); else return ( <> Priority: {app.version.priority} ); }; const mapStateToProps = state => ({ userDetails: state.Auth?.user }); export default connect(mapStateToProps)(Applications);