export function getLiveModeFromClientKey(clientKey: string): boolean { try { // Split the JWT into header, payload, and signature parts const parts = clientKey.split('.'); if (parts.length !== 3) { throw new Error('Invalid JWT token format'); } // The payload is the second part const payload = parts[1]; // Convert from base64url to base64 by replacing URL-specific characters. const base64 = payload!.replace(/-/g, '+').replace(/_/g, '/'); // Decode the base64 string. This approach accounts for special characters. const jsonPayload = decodeURIComponent( atob(base64) .split('') .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)) .join('') ); const parsedPayload = JSON.parse(jsonPayload); // Return the live_mode value, ensuring it's a boolean. return Boolean(parsedPayload.live_mode); } catch (err) { console.error('Error decoding JWT token:', err); // Fallback to a safe default mode (e.g., test mode). return false; } }