diff --git a/src/assets/images/payment-cards/american-express-card.svg b/src/assets/images/payment-cards/american-express-card.svg new file mode 100644 index 0000000..bbb0364 --- /dev/null +++ b/src/assets/images/payment-cards/american-express-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/payment-cards/discover-card.svg b/src/assets/images/payment-cards/discover-card.svg new file mode 100644 index 0000000..e44ebb4 --- /dev/null +++ b/src/assets/images/payment-cards/discover-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/payment-cards/master-card.svg b/src/assets/images/payment-cards/master-card.svg new file mode 100644 index 0000000..730cc7c --- /dev/null +++ b/src/assets/images/payment-cards/master-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/payment-cards/visa-card.svg b/src/assets/images/payment-cards/visa-card.svg new file mode 100644 index 0000000..4815ad1 --- /dev/null +++ b/src/assets/images/payment-cards/visa-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/settings/settings.svg b/src/assets/images/settings/settings.svg new file mode 100644 index 0000000..c608904 --- /dev/null +++ b/src/assets/images/settings/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Blogs/index.jsx b/src/components/Blogs/index.jsx index 7656650..7d10246 100644 --- a/src/components/Blogs/index.jsx +++ b/src/components/Blogs/index.jsx @@ -31,7 +31,7 @@ export default function BlogItem(props) {
- Blog Items Details + Blog Items Details need implenet
diff --git a/src/components/MyActiveJobs/ActiveJobMessage.jsx b/src/components/MyActiveJobs/ActiveJobMessage.jsx index 8bc4abd..9feb091 100644 --- a/src/components/MyActiveJobs/ActiveJobMessage.jsx +++ b/src/components/MyActiveJobs/ActiveJobMessage.jsx @@ -32,7 +32,7 @@ export default function ActiveJobMessage({ activeJobMesList }) { {currentActiveJobMesList.map((item, index) => ( -
+
{item.msg_date} {item.msg_firstname}
diff --git a/src/components/MyActiveJobs/JobActions/CurrentJobAction.jsx b/src/components/MyActiveJobs/JobActions/CurrentJobAction.jsx index 9081c8b..5c954d5 100644 --- a/src/components/MyActiveJobs/JobActions/CurrentJobAction.jsx +++ b/src/components/MyActiveJobs/JobActions/CurrentJobAction.jsx @@ -4,15 +4,15 @@ function CurrentJobAction() { return (

- +
diff --git a/src/components/MyActiveJobs/JobActions/CurrentTaskAction.jsx b/src/components/MyActiveJobs/JobActions/CurrentTaskAction.jsx index d68c1c6..78a8759 100644 --- a/src/components/MyActiveJobs/JobActions/CurrentTaskAction.jsx +++ b/src/components/MyActiveJobs/JobActions/CurrentTaskAction.jsx @@ -62,14 +62,14 @@ function CurrentTaskAction({jobDetails}) { return (
-
-
+
-

+
Waiting for the completion message from the client before you can approve. -

+
{/*
*/}
+
diff --git a/src/components/MyActiveJobs/JobActions/ReviewJobAction.jsx b/src/components/MyActiveJobs/JobActions/ReviewJobAction.jsx index f12fe39..6f808ff 100644 --- a/src/components/MyActiveJobs/JobActions/ReviewJobAction.jsx +++ b/src/components/MyActiveJobs/JobActions/ReviewJobAction.jsx @@ -96,11 +96,11 @@ function ReviewJobAction({jobDetails}) { diff --git a/src/components/MyActiveJobs/JobActions/ReviewTaskAction.jsx b/src/components/MyActiveJobs/JobActions/ReviewTaskAction.jsx index 9163dcd..0e90332 100644 --- a/src/components/MyActiveJobs/JobActions/ReviewTaskAction.jsx +++ b/src/components/MyActiveJobs/JobActions/ReviewTaskAction.jsx @@ -2,7 +2,7 @@ import React from 'react' function ReviewTaskAction() { return ( -
+

Waiting for the completion message from the client before you can approve. Worker True & Review Job

diff --git a/src/components/Settings/Tabs/CardList.jsx b/src/components/Settings/Tabs/CardList.jsx new file mode 100644 index 0000000..7d02eaa --- /dev/null +++ b/src/components/Settings/Tabs/CardList.jsx @@ -0,0 +1,112 @@ +import React, {useEffect, useState} from 'react' +import method1 from "../../../assets/images/payment-cards/discover-card.svg"; +import LoadingSpinner from '../../Spinners/LoadingSpinner'; +import localImgLoad from '../../../lib/localImgLoad'; + +import usersService from "../../../services/UsersService"; +import { handlePagingFunc } from '../../Pagination'; +import PaginatedList from '../../Pagination/PaginatedList'; + +import DeleteCardPopout from './DeleteCardPopout'; + +function CardList() { + const api = new usersService(); + + const [reloadCardList, setReloadCardList] = useState(false) // STATE TO DETERMINE WHEN CARD LIST RELOADS. EG: WHEN USER DELETES A CARD + + const [cardList, setCardList] = useState({loading: true, data: []}) + + const [deleteCardModal, setDeleteCardModal] = useState({show: false, data: {}}) // STATE TO HOLD WHEN DELETE MODAL POPS UP + const handleDeleteCardModal = () => { + setDeleteCardModal(prev => ({...prev, show:!prev.show})) + } + + const [currentPage, setCurrentPage] = useState(0); + const indexOfFirstItem = Number(currentPage); + const indexOfLastItem = + Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); + const currentCardList = cardList?.data?.slice(indexOfFirstItem, indexOfLastItem); + + const handlePagination = (e) => { + handlePagingFunc(e, setCurrentPage); + }; + + useEffect(()=>{ + setCardList({loading: true, data: []}) + api.payListCard().then(res=>{ + setCardList({loading: false, data:res.data?.result_list}) + }).catch(err => { + setCardList({loading: false, data:[]}) + console.log('ERROR', err) + }) + },[reloadCardList]) + return ( +
+
    + {cardList.loading ? +
    + +
    + : + cardList.data.length ? + currentCardList.map(item =>{ + let image = item.description && localImgLoad(`images/payment-cards/${item.description.toLowerCase()}-card.svg`) + return( +
  • +
    +
    + payment +
    +
    +

    + Added: {item.added} +

    +

    + {item.description} **********{item.digits} +

    + {/*

    + Verified +

    */} +
    +
    +
    + +
    +
  • + )} + ) + : +

    No Cards Found

    + } +
+ + {/* PAGINATION BUTTON */} + = + cardList?.data?.length + ? true + : false + } + data={cardList?.data} + start={indexOfFirstItem} + stop={indexOfLastItem} + /> + {/* END OF PAGINATION BUTTON */} + + {deleteCardModal.show && + + } +
+ ) +} + +export default CardList \ No newline at end of file diff --git a/src/components/Settings/Tabs/ChangePasswordTab.jsx b/src/components/Settings/Tabs/ChangePasswordTab.jsx index b3e5236..a4c5eaf 100644 --- a/src/components/Settings/Tabs/ChangePasswordTab.jsx +++ b/src/components/Settings/Tabs/ChangePasswordTab.jsx @@ -3,11 +3,39 @@ import React, { useState } from "react"; import Icons from "../../Helpers/Icons"; import PasswordSvg from "../PasswordSvg"; +import LoadingSpinner from "../../Spinners/LoadingSpinner"; +import usersService from "../../../services/UsersService"; +import { useNavigate } from "react-router-dom"; export default function ChangePasswordTab() { + const apiUrl = new usersService() + const navigate = useNavigate() + const [oldPass, setOldPass] = useState("hide-password"); const [newPass, setNewPass] = useState("hide-password"); const [confirmPass, setConfirmPass] = useState("hide-password"); + + const [requestStatus, setRequestStatus] = useState({loading: false, status: false, message: ''}) + + const [inputEmpty, setInputEmpty] = useState(false) + let [inputs, setInputs] = useState({ + old_pwd: '', + new_pwd: '', + confirm_new_pwd: '' + }) + + const handleInputChange = ({target:{name, value}}) => { // FUNCTION TO HANDLE WHEN AN INPUT CHANGES + setInputs(prev => ({...prev, [name]:value})) + } + + const handleCancel = () => { // FUNCTION TO CLEAR ALL TYPED INPUTS + setInputs({ + old_pwd: '', + new_pwd: '', + confirm_new_pwd: '' + }) + } + const showPassword = (value) => { const password = document.getElementById(`${value}`); if (value && value === "old_password") { @@ -38,16 +66,61 @@ export default function ChangePasswordTab() { } } }; + + const handlePwdUpdate = () => { + setInputEmpty(false) // SETS THE STATE OF ANY INPUT IS EMPTY TO FALSE + if(!inputs.old_pwd || !inputs.new_pwd || !inputs.confirm_new_pwd){ // CHECKS IF ANY INPUT FIELD IS EMPTY AND SETS INPUT EMPTY TO TRUE + setInputEmpty(true) + return setTimeout(()=>{setInputEmpty(false)},3000) + } + + if(inputs.new_pwd != inputs.confirm_new_pwd){ // CHECKS IF PASSWORD MATCHES CONFIRM PASSWORD + setRequestStatus({loading: false, status: false, message: 'new password must match confirm password'}) + return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) + } + + if(/^[a-zA-Z0-9]*$/.test(inputs.new_pwd) == false){ // CHECKS IF PASSWORD IS ALPHANUMERIC + setRequestStatus({loading: false, status: false, message: 'password must be alphanumeric'}) + return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) + } + + if(inputs.new_pwd.length < 6){ // CHECKS IF PASSWORD IS UPTO SIX CHARACTERS + setRequestStatus({loading: false, status: false, message: 'password must be upto six characters'}) + return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) + } + + + let reqData = { // REQUEST PAYLOAD + current_pass: inputs.old_pwd, + new_pass: inputs.new_pwd + } + + + setRequestStatus({loading: true, status: false, message: ''}) + + apiUrl.profilePassChange(reqData).then(res => { + if(res.status != 200 || res.data.internal_return < 0){ + setRequestStatus({loading: false, status: false, message: 'unable to complete request'}) + return + } + setRequestStatus({loading: false, status: true, message: 'password update was successful'}) + setTimeout(()=>{navigate('/settings', {replace: true})}, 5000) + }).catch(err => { + setRequestStatus({loading: false, status: false, message: 'unable to complete request'}) + }).finally(()=>{ + setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},4000) + }) + } return (
-
+
@@ -58,6 +131,10 @@ export default function ChangePasswordTab() { className="input-field placeholder:text-base text-bese px-12 text-dark-gray dark:text-white w-full h-full bg-[#FAFAFA] dark:bg-[#11131F] focus:ring-0 focus:outline-none" type="password" id="old_password" + value={inputs.old_pwd} + name='old_pwd' + onChange={handleInputChange} + autoComplete='false' />
- New Password + New Password {(inputEmpty && !inputs.new_pwd) && 'required'}
@@ -83,6 +160,10 @@ export default function ChangePasswordTab() { className="input-field placeholder:text-base text-bese px-12 text-dark-gray dark:text-white w-full h-full bg-[#FAFAFA] dark:bg-[#11131F] focus:ring-0 focus:outline-none" type="password" id="new_password" + value={inputs.new_pwd} + name='new_pwd' + onChange={handleInputChange} + autoComplete='false' />
- Confirm Password + Confirm Password {(inputEmpty && !inputs.confirm_new_pwd) && 'required'}
@@ -108,6 +189,10 @@ export default function ChangePasswordTab() { className="input-field placeholder:text-base text-bese px-12 text-dark-gray dark:text-white w-full h-full bg-[#FAFAFA] dark:bg-[#11131F] focus:ring-0 focus:outline-none" type="password" id="confirm_password" + value={inputs.confirm_new_pwd} + name='confirm_new_pwd' + onChange={handleInputChange} + autoComplete='false' />
- + {requestStatus.loading ? + + : + + }
+ + {/* error or success display */} + {requestStatus.message != "" && + (!requestStatus.status ? ( +
+ {requestStatus.message} +
+ ) : ( + requestStatus.status && ( +
+ {requestStatus.message} +
+ ) + ))} + {/* End of error or success display */}
diff --git a/src/components/Settings/Tabs/DeleteCardPopout.jsx b/src/components/Settings/Tabs/DeleteCardPopout.jsx new file mode 100644 index 0000000..899981b --- /dev/null +++ b/src/components/Settings/Tabs/DeleteCardPopout.jsx @@ -0,0 +1,142 @@ +import React, { useState } from 'react' +import ModalCom from '../../Helpers/ModalCom' +import LoadingSpinner from '../../Spinners/LoadingSpinner' +import usersService from '../../../services/UsersService' + +function DeleteCardPopout({action, situation, data, setReloadCardList}) { + const api = new usersService() + + const [requestStatus, setRequestStatus] = useState({loading: false, status:false, message: ''}) + + let handleDeleteCard = () => { // FUNCTION TO DELETE A CARD + setRequestStatus(prev => ({...prev, loading: true})) + api.payRemCard({card_uid:data.card_uid}).then(res=>{ + if(res.status != 200 || res.data.internal_return < 0){ + setRequestStatus({loading: false, status:false, message: 'unable to delete card. Try Again'}) + return + } + setRequestStatus({loading: false, status:true, message: 'Card deleted'}) + setReloadCardList(prev => !prev) // RELOADS PAY CARD LIST + setTimeout(()=>{action()},3000) // CLOSES MODAL AFTER SOME SECONDS + }).catch(err => { + setRequestStatus({loading: false, status:false, message: 'network error. Try Again'}) + }).finally(()=>{ + setTimeout(()=>{ + setRequestStatus(prev => ({...prev, message: ''})) + },4000) + }) + } + return ( + +
+
+

+ Confirm Card Delete +

+ +
+
+
+ + + + + +
+
+

+ Are you sure you want to delete? +

+
+

+ Added: {data.added} +

+

+ {data.description} **********{data.digits} +

+
+
+ {/* error or success display */} + {requestStatus.message != "" && + (!requestStatus.status ? ( +
+ {requestStatus.message} +
+ ) : ( + requestStatus.status && ( +
+ {requestStatus.message} +
+ ) + ))} + {/* End of error or success display */} +
+ + {requestStatus.loading ? + + : + + } +
+
+
+
+ ) +} + +export default DeleteCardPopout \ No newline at end of file diff --git a/src/components/Settings/Tabs/NotificationSettingTab.jsx b/src/components/Settings/Tabs/NotificationSettingTab.jsx index 85dffc8..dfd98f1 100644 --- a/src/components/Settings/Tabs/NotificationSettingTab.jsx +++ b/src/components/Settings/Tabs/NotificationSettingTab.jsx @@ -1,237 +1,112 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import SwitchCom from "../../Helpers/SwitchCom"; +import LoadingSpinner from "../../Spinners/LoadingSpinner"; +import usersService from "../../../services/UsersService"; +import localImgLoad from "../../../lib/localImgLoad"; +import { toast } from "react-toastify"; + +import defaultImage from '../../../assets/images/banner-job-due.jpg' + + export default function NotificationSettingTab() { - const [updateNotification, setUpdateNotification] = useState(false); - const [uploadProduct, setUploadProduct] = useState(true); - const [saleProduct, setSaleProduct] = useState(true); - const [getProduct, setGetProduct] = useState(false); - const [authLevel, setAuthLevel] = useState(true); + const api = new usersService(); + + const [accSettings, setAccSettings] = useState({loading: true, data: []}) // STATE TO HOLD ACCOUNT SETTINGS + + let [notificationChange, setNotificationChange] = useState({loading: false, uid: ''}) + + // const [updateNotification, setUpdateNotification] = useState(false); + // const [uploadProduct, setUploadProduct] = useState(true); + // const [saleProduct, setSaleProduct] = useState(true); + // const [getProduct, setGetProduct] = useState(false); + // const [authLevel, setAuthLevel] = useState(true); + + const NotificationInterfaceChange = (item) => { + setAccSettings(prev => { + let newAccSettings = prev.data.map(data => { + if(data.uid == item.uid){ + let newPrefValue = data.pref_value == null || data.pref_value == false ? true : false + return {...data, pref_value: newPrefValue} + }else{ + return data + } + }) + return {...prev, data: newAccSettings} + }) + } + + let handleNotificationChange = (item) => { // FUNCTION TO SET ACCOUNT SETTING + setNotificationChange({loading: true, uid: item.uid}) + let reqData = { // API PAYLOADS + pref_id: item.pref_id, + status: '100' + } + api.setAccSettings(reqData).then(res => { + if(res.status != 200 || res.data.internal_return < 0){ + toast.error("unable to complete"); + } + toast.success("successful"); + NotificationInterfaceChange(item) // CHANGES NOTIFICATION UI INTERFACE + }).catch(errer => { + toast.error("unable to complete"); + }).finally(()=>{ + setNotificationChange({loading: false, uid: {}}) + // setTimeout(()=>{setNotificationChange({loading: false, uid: {}})},2000) + }) + } + + useEffect(()=>{ + api.getAccSettings().then(res => { + setAccSettings({loading: false, data: res.data?.result_list || []}) + }).catch(errer => { + setAccSettings({loading: false, data: []}) + }) + },[]) + return (
-
    -
  • -
    -
    - - - - - - - - - - - - +
      + {accSettings.loading ? + + : + accSettings.data.length ? + accSettings.data.map(item =>{ + let image = item.banner && localImgLoad(`images/settings/${item.banner.toLowerCase()}`) + return( +
    • +
      +
      + account-settings +
      +
      +

      + {item.title} +

      +

      + {item.description} +

      +
      -
      -

      - All Notifcation update off -

      -

      - Unlockable content, only revealed by the owner of the item. -

      +
      + {notificationChange.loading && notificationChange.uid == item.uid ? + + : + {} : () => handleNotificationChange(item)} + // value={updateNotification} + // handler={() => setUpdateNotification(!updateNotification)} + /> + }
      -
      -
      - setUpdateNotification(!updateNotification)} - /> -
      -
    • -
    • -
      -
      - - - - - - -
      -
      -

      - When you upload prodcuts -

      -

      - Evey new prodcuts upload seccessfullly doen you can get - notifcation -

      -
      -
      -
      - setUploadProduct(!uploadProduct)} - /> -
      -
    • -
    • -
      -
      - - - - - - - - -
      -
      -

      - You got sell your prodcuts -

      -

      - Evey new prodcuts sell you can get notifcation -

      -
      -
      -
      - setSaleProduct(!saleProduct)} - /> -
      -
    • -
    • -
      -
      - - - - - - -
      -
      -

      - Got new follower -

      -

      - Evey new follower you can get notifcation -

      -
      -
      -
      - setGetProduct(!getProduct)} - /> -
      -
    • -
    • -
      -
      - - - - -
      -
      -

      - Auther leavel up -

      -

      - Evey new prodcuts sell you can get notifcation -

      -
      -
      -
      - setAuthLevel(!authLevel)} - /> -
      -
    • + + )} + ) + : +

      No Cards Found

      + }
    diff --git a/src/components/Settings/Tabs/PaymentMathodsTab.jsx b/src/components/Settings/Tabs/PaymentMathodsTab.jsx index 2e34a82..e58e8ac 100644 --- a/src/components/Settings/Tabs/PaymentMathodsTab.jsx +++ b/src/components/Settings/Tabs/PaymentMathodsTab.jsx @@ -1,134 +1,17 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import method1 from "../../../assets/images/payment-method-1.png"; import method2 from "../../../assets/images/payment-method-2.png"; import method3 from "../../../assets/images/payment-method-3.png"; import method4 from "../../../assets/images/payment-method-4.png"; +import CardList from "./CardList"; + export default function PaymentMathodsTab() { return ( <>
    -
      -
    • -
      -
      - payment -
      -
      -

      - Datch Bangla Bank Ltd -

      -

      - Bank **********5535 -

      -

      - Verified -

      -
      -
      -
      - -
      -
    • -
    • -
      -
      - payment -
      -
      -

      - Master Card -

      -

      - Bank **********5535 -

      -

      - Verified -

      -
      -
      -
      - -
      -
    • -
    • -
      -
      - payment -
      -
      -

      - Paypal Account -

      -

      - Bank **********5535 -

      -

      - Verified -

      -
      -
      -
      - -
      -
    • -
    • -
      -
      - payment -
      -
      -

      - Visa Card -

      -

      - Bank **********5535 -

      -

      - Unverified -

      -
      -
      -
      - -
      -
    • -
    -
    - - -
    +
    diff --git a/src/components/Settings/index.jsx b/src/components/Settings/index.jsx index b96e6a7..64917b7 100644 --- a/src/components/Settings/index.jsx +++ b/src/components/Settings/index.jsx @@ -58,7 +58,7 @@ export default function Settings({ faq }) { { id: 2, name: "payment", - title: "Payment Method", + title: "Payment Cards", iconName: "bank-card", }, { diff --git a/src/index.css b/src/index.css index 15e7d7c..67aab4d 100644 --- a/src/index.css +++ b/src/index.css @@ -11,6 +11,14 @@ font-family: "Product Sans"; src: url("./assets/fonts/Product Sans Bold.ttf"); } +.SENDER{ + margin-left: 60px !important; + background-color: azure; +} +.RECIPIENT{ + margin-right: 60px !important; + background-color: lightblue; +} .wallet-box{ background-color: aliceblue; border-radius: 20px; @@ -24,6 +32,13 @@ .referral{ margin-bottom: 20px } +.task_action_panel{ + font-family: sans; color: white; + font-weight: bolder; + font-size: 14px; + font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif; + padding: 0px 10px 5px 10px +} .heroSilderTitle{ text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; font-family: sans; color: white; @@ -34,7 +49,7 @@ min-width: 280px !important; } .job-action{ - background-color: aliceblue; + background-color: #4687ba; height: 100px; border-radius: 15px; padding: 5px; @@ -47,9 +62,12 @@ border-radius: 15px; } .msg_header{ - background-color: #1a3544; - color: white; + background-color: white; + color: black; font-weight: bold; + border-radius: 9px; + font-size: 14px; + font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif; } .siderCardDescription{ background-color: aliceblue; diff --git a/src/services/UsersService.js b/src/services/UsersService.js index bf27810..f78ad17 100644 --- a/src/services/UsersService.js +++ b/src/services/UsersService.js @@ -921,6 +921,53 @@ class usersService { return this.postAuxEnd("/familysuggestlist", postData); } + // FUNCTION TO CHANGE PROFILE PASSWORD + profilePassChange(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 11005, + ...reqData, + }; + return this.postAuxEnd("/profilepasschange", postData); + } + + // FUNCTION TO GET ACCOUNT SETTINGS + getAccSettings() { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 11059, + }; + return this.postAuxEnd("/getaccsettings", postData); + } + + // FUNCTION TO SET ACCOUNT SETTINGS + setAccSettings(reqdata) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 11058, + ...reqdata, + }; + return this.postAuxEnd("/setaccsettings", postData); + } + + // FUNCTION TO DELETE PAY CARD + payRemCard(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 11057, + ...reqData, + }; + return this.postAuxEnd("/payremcard", postData); + } + /* - 20:27:30.118 FLOG_MAX [757411]: REQ_STRING(username) - 20:27:30.118 FLOG_MAX [757411]: REQ_STRING(password) diff --git a/yarn.lock b/yarn.lock index bfcbcff..4aa0c7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2504,7 +2504,12 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -2516,7 +2521,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2526,27 +2531,37 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== +ajv@^6.12.2: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.6.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.8.0: +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -7685,6 +7700,11 @@ q@^1.1.2: resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +qr.js@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz" + integrity sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ== + qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -7748,6 +7768,11 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" +react-apple-login@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/react-apple-login/-/react-apple-login-1.1.6.tgz" + integrity sha512-ySV6ax0aB+ksA7lKzhr4MvsgjwSH068VtdHJXS+7rL380IJnNQNl14SszR31k3UqB8q8C1H1oyjJFGq4MyO6tw== + react-chartjs-2@^4.1.0: version "4.3.1" resolved "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-4.3.1.tgz" @@ -7824,6 +7849,14 @@ react-is@^18.0.0: resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-qr-code@^2.0.11: + version "2.0.11" + resolved "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.0.11.tgz" + integrity sha512-P7mvVM5vk9NjGdHMt4Z0KWeeJYwRAtonHTghZT2r+AASinLUUKQ9wfsGH2lPKsT++gps7hXmaiMGRvwTDEL9OA== + dependencies: + prop-types "^15.8.1" + qr.js "0.0.0" + react-redux@^8.0.5: version "8.0.5" resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz" @@ -7922,6 +7955,13 @@ react-slick@^0.29.0: lodash.debounce "^4.0.8" resize-observer-polyfill "^1.5.0" +react-to-print@^2.14.12: + version "2.14.12" + resolved "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.12.tgz" + integrity sha512-qFJAwvDFd95Z+FWNqitt+HaB1/z+Zdd0MMrNOPUSus3fG32vqv512yB+HXhQ94J3HKoyqaIg44v0Zfc6xUBqlg== + dependencies: + prop-types "^15.8.1" + react-toastify@^9.0.1: version "9.1.1" resolved "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.1.tgz"
-
-

+
+
I completed this task and ready for review and acceptance. -

+
{/*
*/} {/*
*/} diff --git a/src/components/MyActiveJobs/JobActions/PastDueJobAction.jsx b/src/components/MyActiveJobs/JobActions/PastDueJobAction.jsx index f943d7c..972c048 100644 --- a/src/components/MyActiveJobs/JobActions/PastDueJobAction.jsx +++ b/src/components/MyActiveJobs/JobActions/PastDueJobAction.jsx @@ -107,19 +107,18 @@ function PastDueJobAction({jobDetails}) {
-
+
-

+
Time allocated has passed -

- {/*
*/} +
-
diff --git a/src/components/MyActiveJobs/JobActions/PastDueTaskAction.jsx b/src/components/MyActiveJobs/JobActions/PastDueTaskAction.jsx index d742b73..5bd83f3 100644 --- a/src/components/MyActiveJobs/JobActions/PastDueTaskAction.jsx +++ b/src/components/MyActiveJobs/JobActions/PastDueTaskAction.jsx @@ -8,11 +8,11 @@ function PastDueTaskAction() {
-
+
-

+
You have missed the allocated time -

+
{/*
*/}
-
+
-

+
This Job is Ready for your review -

+
{/*
*/}