Compare commits

..

18 Commits

Author SHA1 Message Date
victorAnumudu 25d4751935 fixed product url refresh on successful subscription 2025-07-15 12:51:40 +01:00
CHIEFSOFT\ameye a8d78c4c3f devsocket.mermsemr.com 2025-07-12 19:38:20 -04:00
CHIEFSOFT\ameye 9c672d4bf2 REACT_APP_MAIN_SOCKET="https://devsocket.mermsemr.com" 2025-07-12 19:22:59 -04:00
CHIEFSOFT\ameye c744eccd15 QA .env 2025-07-12 14:44:41 -04:00
CHIEFSOFT\ameye 302a3aa3bb Added more .env 2025-07-12 14:41:46 -04:00
ameye 23a295866a Merge branch 'route-fix' of MERMS/MermsPanelReactJS into master 2025-07-10 12:14:31 +00:00
victorAnumudu 487494fbff route bug fixed 2025-07-10 11:53:55 +01:00
victorAnumudu 919594d7b2 Merge branch 'master' of https://gitlab.chiefsoft.net/MERMS/MermsPanelReactJS 2025-07-10 11:08:41 +01:00
ameye 7eedae8fc2 Merge branch 'signup-payload' of MERMS/MermsPanelReactJS into master 2025-07-10 08:36:37 +00:00
victorAnumudu 51a3c60590 bug fix 2025-07-10 09:05:30 +01:00
victorAnumudu ab597039ba updated complete signup endpoint 2025-07-10 08:59:20 +01:00
victorAnumudu 6fd2dcdb3d updated signup payload 2025-07-10 08:54:41 +01:00
victorAnumudu 614910e29c updated signup payload 2025-07-10 08:52:51 +01:00
ameye 2c832699c2 Merge branch 'signup-payload' of MERMS/MermsPanelReactJS into master 2025-07-08 19:11:40 +00:00
victorAnumudu c8fe2eadf6 removed isChecked value 2025-07-08 19:23:51 +01:00
ameye 1e174b7432 Merge branch 'provision-bug' of MERMS/MermsPanelReactJS into master 2025-07-08 15:59:27 +00:00
ameye d0f1d5ee34 Merge branch 'product-url' of MERMS/MermsPanelReactJS into master 2025-07-08 14:24:05 +00:00
victorAnumudu a2843d97e2 product url fixed 2025-07-08 11:58:37 +01:00
16 changed files with 209 additions and 150 deletions
+6 -6
View File
@@ -2,14 +2,14 @@ SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="development" REACT_APP_NODE_ENV="development"
REACT_APP_SOCKET_URL="https://devsocket.mermsemr.com" REACT_APP_SOCKET_URL="https://devsocket.mermsemr.com"
REACT_APP_MAIN_API="https://devapi.mermsemr.com" REACT_APP_MAIN_API="https://devapi.mermsemr.com"
REACT_APP_MEDIA_SERVER="https://dev-media.mermsemr.com" REACT_APP_MEDIA_SERVER="https://qa-media.mermsemr.com"
REACT_APP_MAIN_SOCKET="https://dev-socket.mermsemr.com" REACT_APP_MAIN_SOCKET="https://devsocket.mermsemr.com"
# login footer links # login footer links
REACT_APP_HOME_LINK='https://dev-www.mermsemr.com/' REACT_APP_HOME_LINK='https://qa-www.mermsemr.com/'
REACT_APP_ABOUT_LINK='https://dev-www.mermsemr.com/about' REACT_APP_ABOUT_LINK='https://qa-www.mermsemr.com/about'
REACT_APP_CONTACTS_LINK='https://dev-www.mermsemr.com/contacts' REACT_APP_CONTACTS_LINK='https://qa-www.mermsemr.com/contacts'
REACT_APP_TERMS_LINK='https://dev-www.mermsemr.com/terms' REACT_APP_TERMS_LINK='https://qa-www.mermsemr.com/terms'
# Inactivity timeout/logout AT 10MINS # Inactivity timeout/logout AT 10MINS
REACT_APP_TIMEOUT=600000 REACT_APP_TIMEOUT=600000
+7 -6
View File
@@ -2,14 +2,15 @@ SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="development" REACT_APP_NODE_ENV="development"
REACT_APP_SOCKET_URL="https://devsocket.mermsemr.com" REACT_APP_SOCKET_URL="https://devsocket.mermsemr.com"
REACT_APP_MAIN_API="https://devapi.mermsemr.com" REACT_APP_MAIN_API="https://devapi.mermsemr.com"
REACT_APP_MEDIA_SERVER="https://dev-media.mermsemr.com" REACT_APP_MEDIA_SERVER="https://qa-media.mermsemr.com"
REACT_APP_MAIN_SOCKET="https://dev-socket.mermsemr.com" REACT_APP_MAIN_SOCKET="https://devsocket.mermsemr.com"
# login footer links # login footer links
REACT_APP_HOME_LINK='https://dev-www.mermsemr.com/' REACT_APP_HOME_LINK='https://qa-www.mermsemr.com/'
REACT_APP_ABOUT_LINK='https://dev-www.mermsemr.com/about' REACT_APP_ABOUT_LINK='https://qa-www.mermsemr.com/about'
REACT_APP_CONTACTS_LINK='https://dev-www.mermsemr.com/contacts' REACT_APP_CONTACTS_LINK='https://qa-www.mermsemr.com/contacts'
REACT_APP_TERMS_LINK='https://dev-www.mermsemr.com/terms' REACT_APP_TERMS_LINK='https://qa-www.mermsemr.com/terms'
# Inactivity timeout/logout AT 10MINS # Inactivity timeout/logout AT 10MINS
REACT_APP_TIMEOUT=600000 REACT_APP_TIMEOUT=600000
+1
View File
@@ -3,6 +3,7 @@ REACT_APP_NODE_ENV="production"
REACT_APP_SOCKET_URL="https://socket.mermsemr.com" REACT_APP_SOCKET_URL="https://socket.mermsemr.com"
REACT_APP_MAIN_API="https://devapi.mermsemr.com" REACT_APP_MAIN_API="https://devapi.mermsemr.com"
REACT_APP_MEDIA_SERVER="https://media.mermsemr.com" REACT_APP_MEDIA_SERVER="https://media.mermsemr.com"
REACT_APP_MAIN_SOCKET="https://socket.mermsemr.com"
# login footer links # login footer links
REACT_APP_HOME_LINK='https://www.mermsemr.com/' REACT_APP_HOME_LINK='https://www.mermsemr.com/'
+15
View File
@@ -0,0 +1,15 @@
SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="development"
REACT_APP_SOCKET_URL="https://devsocket.mermsemr.com"
REACT_APP_MAIN_API="https://devapi.mermsemr.com"
REACT_APP_MEDIA_SERVER="https://qa-media.mermsemr.com"
REACT_APP_MAIN_SOCKET="https://devsocket.mermsemr.com"
# login footer links
REACT_APP_HOME_LINK='https://qa-www.mermsemr.com/'
REACT_APP_ABOUT_LINK='https://qa-www.mermsemr.com/about'
REACT_APP_CONTACTS_LINK='https://qa-www.mermsemr.com/contacts'
REACT_APP_TERMS_LINK='https://qa-www.mermsemr.com/terms'
# Inactivity timeout/logout AT 10MINS
REACT_APP_TIMEOUT=600000
+1 -1
View File
@@ -20,7 +20,7 @@ services:
extra_hosts: extra_hosts:
- api.mermsemr.com:10.10.33.15 - api.mermsemr.com:10.10.33.15
- devapi.mermsemr.com:10.10.33.15 - devapi.mermsemr.com:10.10.33.15
- dev-socket.mermsemr.com:10.10.33.15 - devsocket.mermsemr.com:10.10.33.15
- socket.mermsemr.com:10.10.33.15 - socket.mermsemr.com:10.10.33.15
- dev-media.mermsemr.com:10.10.33.15 - dev-media.mermsemr.com:10.10.33.15
- media.mermsemr.com:10.10.33.15 - media.mermsemr.com:10.10.33.15
+18 -10
View File
@@ -1,11 +1,13 @@
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import { Form, Formik } from "formik"; import { Form, Formik } from "formik";
import * as Yup from "yup"; import * as Yup from "yup";
import { useDispatch } from 'react-redux'
import { Link, useNavigate, useParams } from 'react-router-dom' import { Link, useNavigate, useParams } from 'react-router-dom'
import siteLinks from '../../links/siteLinks' import siteLinks from '../../links/siteLinks'
import { useMutation } from '@tanstack/react-query'; import { useMutation } from '@tanstack/react-query';
import { completeRegistration, verifyEmail } from '../../services/services'; import { completeRegistration, verifyEmail } from '../../services/services';
import { updateUserDetails } from '../../store/UserDetails'
import { IoMdArrowDropdown } from "react-icons/io"; import { IoMdArrowDropdown } from "react-icons/io";
@@ -29,6 +31,8 @@ export default function CSignup() {
const {jwt} = useParams() const {jwt} = useParams()
const dispatch = useDispatch()
const navigate = useNavigate() const navigate = useNavigate()
const [user, setUser] = useState(null) const [user, setUser] = useState(null)
@@ -51,15 +55,19 @@ export default function CSignup() {
return completeRegistration(fields) return completeRegistration(fields)
}, },
onSuccess: (res) => { onSuccess: (res) => {
const {token, room} = res?.data?.data if(res?.data?.resultCode != '0'){
if(token){ throw({message: res?.data?.resultDescription})
localStorage.setItem('token', token)
localStorage.setItem('room', room)
// const data = {token}
// dispatch(updateUserDetails({ ...data }));
navigate('/dash') // later add redux to dispatch state
} }
} const {token, room, uid} = res?.data
if(!token || !room){
throw({message: 'something went wrong, try again!'})
}
localStorage.setItem('token', token)
localStorage.setItem('room', room)
localStorage.setItem('uid', uid)
dispatch(updateUserDetails({ ...res?.data }));
navigate('/dash') // later add redux to dispatch state
},
// onError: (err) => { // onError: (err) => {
// console.log('err', err) // console.log('err', err)
// } // }
@@ -70,7 +78,7 @@ export default function CSignup() {
country : values.country, country : values.country,
username: values.username, username: values.username,
password: values.password, password: values.password,
verify_link: user.verify_link verify_link: jwt
} }
cSignup.mutate(reqData) cSignup.mutate(reqData)
} }
@@ -196,7 +204,7 @@ export default function CSignup() {
} }
<div className="col-12 mt-3 text-center"> <div className="col-12 mt-3 text-center">
<Link to={siteLinks.login} className='text-primary' style={{color: '#6FCAEF'}}>Need help with logging in or signing up?</Link> <Link to={siteLinks.signup} className='text-primary' style={{color: '#6FCAEF'}}>Need help with logging in or signing up?</Link>
</div> </div>
<div className="col-12 mt-3 text-center"> <div className="col-12 mt-3 text-center">
+1
View File
@@ -49,6 +49,7 @@ export default function Signup2() {
const signUp = (values) => { const signUp = (values) => {
// helpers.resetForm() // helpers.resetForm()
// console.log('values', values, helpers) // console.log('values', values, helpers)
delete values.isChecked
mutation.mutate(values) mutation.mutate(values)
} }
+28 -20
View File
@@ -21,29 +21,37 @@ export default function Calendar(){
// queryFn: () => getCalendarEvents() // queryFn: () => getCalendarEvents()
// }) // })
const calendarEvents = useMutation({ // const calendarEvents = useMutation({
mutationFn: (reqData) => { // mutationFn: (reqData) => {
return getCalendarEvents(reqData) // return getCalendarEvents(reqData)
}, // },
onError: (error) => { // onError: (error) => {
console.log(error) // console.log(error)
}, // },
onSuccess: (res) => { // onSuccess: (res) => {
if(res?.data?.resultCode != '0'){ // if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'}) // throw({message: 'Something went wrong'})
} // }
} // }
}) // })
useEffect(()=>{ // useEffect(()=>{
// let reqData = {
// token: localStorage.getItem('token'), // USER TOKEN
// uid: localStorage.getItem('uid') // USER UID
// }
// calendarEvents.mutate(reqData)
// },[])
let reqData = { let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
calendarEvents.mutate(reqData) const {data, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.calendar_events,
queryFn: () => getCalendarEvents(reqData)
})
const receievedEvents = calendarEvents?.data?.data const receievedEvents = data?.data
const category = receievedEvents?.category //EVENT CATEGORIES FROM API const category = receievedEvents?.category //EVENT CATEGORIES FROM API
const eventList = receievedEvents?.list //EVENT LIST FROM API const eventList = receievedEvents?.list //EVENT LIST FROM API
@@ -84,15 +92,15 @@ export default function Calendar(){
</div> </div>
<div className="card-body"> <div className="card-body">
<div className="row"> <div className="row">
{calendarEvents?.isPending ? {isFetching ?
<> <>
<div className="col-12"> <div className="col-12">
<p className='text-mute'>Loading...</p> <p className='text-mute'>Loading...</p>
</div> </div>
</> </>
: calendarEvents?.error ? : isError ?
<div className="col-12"> <div className="col-12">
<p className='text-danger'>{calendarEvents?.error?.message}</p> <p className='text-danger'>{error?.message}</p>
</div> </div>
: :
<> <>
+1 -1
View File
@@ -81,7 +81,7 @@ export default function EventCalendar({removeAfterDrop, eventList, activeCategor
useEffect(()=>{ useEffect(()=>{
// let newEventList = eventList?.map(item => ({...item, start: new Date(item?.start)})) // let newEventList = eventList?.map(item => ({...item, start: new Date(item?.start)}))
let newEventList = eventList?.filter(item => (Number(item.category) == Number(activeCategory)))?.map(item => ({...item, start: new Date(item?.start)})) let newEventList = eventList?.filter(item => (Number(item.category) == Number(activeCategory)))?.map(item => ({...item, start: new Date(item?.start)}))
console.log('newEventList', newEventList) // console.log('newEventList', newEventList)
setCurrentEvents(newEventList) setCurrentEvents(newEventList)
},[activeCategory]) },[activeCategory])
+13 -25
View File
@@ -1,34 +1,22 @@
import React, {useEffect} from 'react' import { useQuery } from '@tanstack/react-query'
import { useMutation } from '@tanstack/react-query'
import { productsData } from '../../services/services' import { productsData } from '../../services/services'
import productPath from "../../utils/productpath"; import productPath from "../../utils/productpath";
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import queryKeys from '../../services/queryKeys'
export default function Products() { export default function Products() {
const getProductsData = useMutation({
mutationFn: (reqData) => {
return productsData(reqData)
},
onError: (error) => {
console.log(error)
},
onSuccess: (res) => {
if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'})
}
}
})
useEffect(()=>{ let reqData = {
let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
getProductsData.mutate(reqData) const {data, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.product,
queryFn: () => productsData(reqData)
const products = getProductsData?.data?.data?.products_data // PRODUCTS DATA })
const products = data?.data?.products_data // PRODUCTS DATA
return ( return (
<> <>
@@ -37,7 +25,7 @@ export default function Products() {
<h4 className="card-title">My Products</h4> <h4 className="card-title">My Products</h4>
</div> </div>
<div className="card-body pb-0"> <div className="card-body pb-0">
{getProductsData?.isPending ? {isFetching ?
<> <>
<div className="row"> <div className="row">
<div className="col-12"> <div className="col-12">
@@ -45,10 +33,10 @@ export default function Products() {
</div> </div>
</div> </div>
</> </>
: getProductsData?.isPending ? : isError ?
<div className="row"> <div className="row">
<div className="col-12"> <div className="col-12">
<p className='text-danger'>{getProductsData?.error?.message}</p> <p className='text-danger'>{error?.message}</p>
</div> </div>
</div> </div>
: :
+15 -6
View File
@@ -5,12 +5,18 @@ import queryKeys from '../../services/queryKeys'
export default function ProductsURL() { export default function ProductsURL() {
const {data:data, isFetching, isError, error} = useQuery({ let reqData = {
token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID
}
const {data, isFetching, isError, error} = useQuery({
queryKey: queryKeys.product_url, queryKey: queryKeys.product_url,
queryFn: () => productsURL() queryFn: () => productsURL(reqData)
}) })
const urlData = data?.data?.url_data?.url const urlData = data?.data?.products_data
// console.log('data', urlData)
return ( return (
<> <>
@@ -57,11 +63,14 @@ export default function ProductsURL() {
let productUrl = '/product/'+ item?.product_id let productUrl = '/product/'+ item?.product_id
return ( return (
<tr key={index}> <tr key={index}>
<td>{Number(item?.no) + Number(index)}</td> <td>{Number(item?.id)}</td>
<td>{item?.description} - <a href={productUrl} target='_blank'>{item?.url}</a></td> <td>
{item?.description} -
{/* <a href={productUrl} target='_blank'>{item?.external_url}</a> */}
</td>
<td><span className={`badge ${statusColor}`}>{item?.status}</span></td> <td><span className={`badge ${statusColor}`}>{item?.status}</span></td>
<td><a className="mr-3" href=""><i className="fe fe-edit"></i></a></td> <td><a className="mr-3" href={productUrl} target='_blank'><i className="fe fe-edit"></i></a></td>
</tr> </tr>
) )
})} })}
+33 -25
View File
@@ -1,36 +1,44 @@
import React, {useEffect} from 'react' import { useQuery } from '@tanstack/react-query'
import { useMutation } from '@tanstack/react-query'
import { topBar } from '../../services/services' import { topBar } from '../../services/services'
import queryKeys from '../../services/queryKeys'
export default function TopBar() { export default function TopBar() {
const topBarData = useMutation({ // const topBarData = useMutation({
mutationFn: (reqData) => { // mutationFn: (reqData) => {
return topBar(reqData) // return topBar(reqData)
}, // },
onError: (error) => { // onError: (error) => {
console.log(error) // console.log(error)
}, // },
onSuccess: (res) => { // onSuccess: (res) => {
if(res?.data?.resultCode != '0'){ // if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'}) // throw({message: 'Something went wrong'})
} // }
} // }
}) // })
useEffect(()=>{ // useEffect(()=>{
let reqData = { // let reqData = {
// token: localStorage.getItem('token'), // USER TOKEN
// uid: localStorage.getItem('uid') // USER UID
// }
// topBarData.mutate(reqData)
// },[])
let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
topBarData.mutate(reqData) const {data:topBarData, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.topBar,
queryFn: () => topBar(reqData)
const data = topBarData?.data?.data?.top_bar // top bar data })
const data = topBarData?.data?.top_bar // top bar data
return ( return (
<> <>
{topBarData.isPending ? {isFetching ?
<> <>
<div className="col-12"> <div className="col-12">
<div className="card p-4"> <div className="card p-4">
@@ -38,10 +46,10 @@ export default function TopBar() {
</div> </div>
</div> </div>
</> </>
: topBarData.error ? : isError?
<div className="col-12"> <div className="col-12">
<div className="card p-4"> <div className="card p-4">
<p className='text-danger'>{topBarData.error.message}</p> <p className='text-danger'>{error.message}</p>
</div> </div>
</div> </div>
: :
+12 -13
View File
@@ -61,21 +61,20 @@ export default function ProductFactory(){
<p className='text-danger'>{getProductData?.error?.message}</p> <p className='text-danger'>{getProductData?.error?.message}</p>
</div> </div>
</div> </div>
: :
<div> <div>
{(product_status <= productConst.PRODUCT_AVAILABLE)? {(product_status <= productConst.PRODUCT_AVAILABLE)?
<ProductStart productData={myproduct_data} /> <ProductStart productData={myproduct_data} />
:<></> } :<></> }
{(product_status === productConst.PRODUCT_PROVISIONING)? {(product_status === productConst.PRODUCT_PROVISIONING)?
<ProductProvision productData={myproduct_data} /> <ProductProvision productData={myproduct_data} />
:<></> } :<></> }
{(product_status === productConst.PRODUCT_ACTIVE)? {(product_status === productConst.PRODUCT_ACTIVE)?
<ProductActive productData={myproduct_data} /> <ProductActive productData={myproduct_data} />
:<></> } :<></> }
</div>
</div>
} }
</div> </div>
</> </>
+38 -17
View File
@@ -1,6 +1,7 @@
import React, { useRef, useState } from "react"; import React, { useRef, useState } from "react";
import {useNavigate} from 'react-router-dom'
import getImage from "../../utils/getImage"; import getImage from "../../utils/getImage";
// import { Modal } from "bootstrap"; import { Modal } from "bootstrap";
import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useMutation, useQueryClient } from "@tanstack/react-query";
import { subscribe } from '../../services/services' import { subscribe } from '../../services/services'
import queryKeys from "../../services/queryKeys"; import queryKeys from "../../services/queryKeys";
@@ -8,26 +9,27 @@ import queryKeys from "../../services/queryKeys";
export default function ProductStart(props){ export default function ProductStart(props){
const queryClient = useQueryClient() const queryClient = useQueryClient()
const navigate = useNavigate()
const [requestStatus, setRequestStatus] = useState({status:false, message: ''}) const [requestStatus, setRequestStatus] = useState({status:false, message: ''})
const product_uid = props?.productData?.product_uid; const product_uid = props?.productData?.product_uid;
const product_id = props?.productData?.product_id; const product_id = props?.productData?.product_id;
const productBanner = "product/"+props.productData?.banner; const productBanner = `product/${props.productData?.banner}`;
const productTitle = props.productData?.title; const productTitle = props?.productData?.title;
const productDescription = props.productData?.description; const productDescription = props?.productData?.description;
const promotion_text = props.productData?.promotion_text; const promotion_text = props?.productData?.promotion_text;
const product_status = props.productData?.status; const product_status = props?.productData?.status;
const saleText = props.productData?.sale_text; const saleText = props?.productData?.sale_text;
const modalRef = useRef() const modalRef = useRef(null)
const refetch = () => { const invalidate = () => {
queryClient.refetchQueries({ // queryClient.refetchQueries({
queryKey: [...queryKeys.product], // queryKey: [...queryKeys.product],
// type: 'active', // // type: 'active',
// exact: true, // // exact: true,
}) // })
queryClient.invalidateQueries({ queryKey: [...queryKeys.product_url] })
} }
const mutation = useMutation({ const mutation = useMutation({
@@ -40,9 +42,12 @@ export default function ProductStart(props){
}, },
onSuccess: (res) => { onSuccess: (res) => {
setRequestStatus({status:true, message:'successful'}) setRequestStatus({status:true, message:'successful'})
navigate(`/product/${product_id}`, {replace: true}) //'/product/'+ product_id
dismissModal()
console.log(res) console.log(res)
}, },
onSettled: () => { onSettled: () => {
invalidate() // Invalidates selected queries
setTimeout(()=>{ setTimeout(()=>{
setRequestStatus({status:false, message:''}) setRequestStatus({status:false, message:''})
},4000) },4000)
@@ -53,6 +58,22 @@ export default function ProductStart(props){
mutation.mutate({product_id: product_id}) mutation.mutate({product_id: product_id})
} }
const dismissModal = () => {
const body = document.querySelector('body')
body.removeAttribute('style')
// body.classList.toggle('modal-open')
const modalBackdrop = document.querySelectorAll('.modal-backdrop')
modalBackdrop.forEach(item => {
if (item) {
item.remove();
}
})
const modal = Modal.getInstance(modalRef.current);
modal && modal.hide();
};
return ( return (
<> <>
<div className="row"> <div className="row">
@@ -113,7 +134,7 @@ export default function ProductStart(props){
<div className="modal-content"> <div className="modal-content">
<div className="modal-header"> <div className="modal-header">
<h5 className="modal-title" id="verticalCenterTitle">{productTitle}</h5> <h5 className="modal-title" id="verticalCenterTitle">{productTitle}</h5>
<button onClick={refetch} type="button" className="close" data-bs-dismiss="modal" aria-label="Close"> <button type="button" className="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
@@ -140,7 +161,7 @@ export default function ProductStart(props){
)} )}
</div> </div>
<div className="modal-footer"> <div className="modal-footer">
<button onClick={refetch} type="button" className="btn btn-danger" data-bs-dismiss="modal">Close</button> <button type="button" className="btn btn-danger" data-bs-dismiss="modal">Close</button>
<button type="button" className="btn btn-success" disabled={mutation.isSuccess} onClick={handleSubscribe}>{mutation.isPending ? 'loading...' : 'Start'}</button> <button type="button" className="btn btn-success" disabled={mutation.isSuccess} onClick={handleSubscribe}>{mutation.isPending ? 'loading...' : 'Start'}</button>
</div> </div>
</div> </div>
+2 -2
View File
@@ -1,11 +1,11 @@
const queryKeys = { const queryKeys = {
user_details: ['user_details'], user_details: ['user_details'],
product_url: ['product_url'],
product: ['product-data'],
dashboard: ['dashboard'], dashboard: ['dashboard'],
topBar: ['top-bar'], topBar: ['top-bar'],
recentAction: ['recent-action'], recentAction: ['recent-action'],
product: ['product-data'],
product_url: ['product_url'],
myproduct_provision: ['myproduct_provision'], myproduct_provision: ['myproduct_provision'],
calendar_events: ['calendar_events'], calendar_events: ['calendar_events'],
contacts: ['contacts'] contacts: ['contacts']
+17 -17
View File
@@ -99,6 +99,22 @@ export const contactData = (reqData) => {
return postAuxEnd(`/panel/contacts`, postData, false) return postAuxEnd(`/panel/contacts`, postData, false)
} }
// FUNCTION TO GET DASHBOARD PRODUCT URL DATA SECTION
export const productsURL = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products/url`, postData, false)
}
// FUNCTION TO GET DASHBOARD PRODUCT DATA SECTION
export const productsData = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products`, postData, false)
}
// FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION // FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION
export const recentActions = (reqData) => { export const recentActions = (reqData) => {
let postData = { let postData = {
@@ -110,29 +126,13 @@ export const recentActions = (reqData) => {
return postAuxEnd(`/panel/account/actions`, postData, false) return postAuxEnd(`/panel/account/actions`, postData, false)
} }
// FUNCTION TO GET DASHBOARD PRODUCT DATA SECTION
export const productsData = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products`, postData, false)
}
// FUNCTION TO GET DASHBOARD PRODUCT URL DATA SECTION
export const productsURL = (reqData) => {
let postData = {
...reqData,
token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID
}
return postAuxEnd(`/panel/account/products/url`, postData, false)
// return getAuxEnd(`/panel/account/products/url`)
}
// FUNCTION TO REGISTER USER // FUNCTION TO REGISTER USER
export const signUpUser = (reqData) => { export const signUpUser = (reqData) => {