new changes 12/5/2025

This commit is contained in:
JaiPandey425 2025-12-05 13:23:11 +05:30
parent 9c8499ff2f
commit bebb4fb980
4 changed files with 69 additions and 14 deletions

View File

@ -13,7 +13,8 @@ const httpsAgent = new https.Agent({
const api: AxiosInstance = axios.create({ const api: AxiosInstance = axios.create({
// https://dreadingly-unfighting-pandora.ngrok-free.dev/ // https://dreadingly-unfighting-pandora.ngrok-free.dev/
baseURL: 'https://daniela-nonprofessed-boastfully.ngrok-free.app/api/v1/va', // 🔁 your backend // https://quality-friendly-goldfish.ngrok-free.app/
baseURL: 'https://quality-friendly-goldfish.ngrok-free.app/api/v1/va', // 🔁 your backend
httpsAgent httpsAgent
// timeout: 10000, // timeout: 10000,
}); });
@ -39,17 +40,17 @@ api.interceptors.request.use(
); );
// --- Response Interceptor --- // --- Response Interceptor ---
api.interceptors.response.use( // api.interceptors.response.use(
(response: AxiosResponse) => response.data, // (response: AxiosResponse) => response.data,
async (error) => { // async (error) => {
console.error('[Axios Error]', error.status); // console.error('[Axios Error]', error.status);
if (error.status === 401 || 403) { // if (error.status === 401 || 403) {
console.warn('Token expired — trigger refresh logic if needed'); // console.warn('Token expired — trigger refresh logic if needed');
// sendTokenExpired(); // // sendTokenExpired();
} // }
return Promise.reject(error); // return Promise.reject(error);
} // }
); // );
api.interceptors.response.use( api.interceptors.response.use(
(response: AxiosResponse) => response.data, (response: AxiosResponse) => response.data,

View File

@ -68,7 +68,7 @@ export const handleLogin = async (credentials: { email: string, password: string
try { try {
console.log("➡️ Calling API..."); console.log("➡️ Calling API...");
const response = await axios.post( const response = await axios.post(
'https://daniela-nonprofessed-boastfully.ngrok-free.app/api/v1/va/login', 'https://quality-friendly-goldfish.ngrok-free.app/api/v1/va/login',
{ userDetails: { ...credentials } }, { userDetails: { ...credentials } },
{ headers: { "ngrok-skip-browser-warning": 69420 }, httpsAgent } { headers: { "ngrok-skip-browser-warning": 69420 }, httpsAgent }
); );

View File

@ -588,7 +588,7 @@ const DashboardLayout = () => {
if (!selectedProject?.projectId) return if (!selectedProject?.projectId) return
console.log(selectedProject?.projectId, "SelectedProject ID") console.log(selectedProject?.projectId, "SelectedProject ID")
socketRef.current = io("https://daniela-nonprofessed-boastfully.ngrok-free.app", { socketRef.current = io("https://quality-friendly-goldfish.ngrok-free.app", {
transports: ["websocket"], transports: ["websocket"],
secure: true, secure: true,
rejectUnauthorized: false, rejectUnauthorized: false,

View File

@ -0,0 +1,54 @@
import React, { useEffect, useState } from "react";
interface Props {
children: React.ReactNode;
}
const VpnGuard: React.FC<Props> = ({ children }) => {
const [checking, setChecking] = useState(true);
const [vpnConnected, setVpnConnected] = useState(true);
// const checkVPN = async () => {
// try {
// const res = await window.electron.checkVpnConnection();
// setVpnConnected(res?.success);
// } catch {
// setVpnConnected(false);
// } finally {
// setChecking(false);
// }
// };
useEffect(() => {
// checkVPN();
}, []);
if (checking) {
return (
<div className="min-h-screen flex justify-center items-center">
<span className="loading loading-spinner loading-lg"></span>
<span className="ml-3">Checking VPN...</span>
</div>
);
}
if (!vpnConnected) {
return (
<div className="min-h-screen flex justify-center items-center text-center">
<div className="card shadow-xl bg-base-100 p-6">
<h2 className="text-xl font-bold text-red-600">VPN Required</h2>
<p className="mt-2">Please connect to your company VPN to continue.</p>
<button className="btn btn-primary mt-4"
onClick={() => window.location.reload()}>
Retry
</button>
</div>
</div>
);
}
return <>{children}</>;
};
export default VpnGuard;