# API Errors Fix ## Issues Fixed ### 1. `createSkeletonLoader is not defined` Error **Status**: ✅ Fixed - The function is properly defined at line 945 in `index.html` - Function handles 'stats', 'table', and 'detail' skeleton loader types - If error persists, it may be a browser caching issue - try hard refresh (Ctrl+Shift+R) ### 2. API "Unknown action" Errors **Status**: ✅ Fixed - **Root Cause**: `loadAllBlocks()` and `loadAllTransactions()` were using Etherscan-compatible API format (`/api?module=block&action=eth_get_block_by_number`) which Blockscout doesn't support - **Fix**: Updated both functions to check `CHAIN_ID === 138` and use Blockscout API endpoints: - `loadAllBlocks()`: Now uses `${BLOCKSCOUT_API}/v2/blocks?page=1&page_size=50` - `loadAllTransactions()`: Now uses `${BLOCKSCOUT_API}/v2/transactions?page=1&page_size=50` - **Other Networks**: For non-138 chains, functions still use Etherscan-compatible API format ## Changes Made ### `loadAllBlocks()` Function - Added ChainID 138 check - Uses Blockscout API: `/api/v2/blocks?page=1&page_size=50` - Normalizes blocks using `normalizeBlock()` adapter - Improved error handling with retry button ### `loadAllTransactions()` Function - Added ChainID 138 check - Uses Blockscout API: `/api/v2/transactions?page=1&page_size=50` - Normalizes transactions using `normalizeTransaction()` adapter - Fixed duplicate/old code that was causing issues - Improved error handling with retry button ## Deployment **Status**: ✅ **DEPLOYED** (2025-12-24) The fixed frontend has been successfully deployed to VMID 5000. ### Deployment Method Used ```bash cd /home/intlc/projects/proxmox bash explorer-monorepo/scripts/deploy-frontend-fix.sh ``` **Result**: - ✅ File copied successfully (139KB) - ✅ Permissions set correctly - ✅ Nginx configuration tested and restarted - ✅ Frontend available at https://explorer.d-bis.org/ ### Alternative Deployment Methods #### Option 1: Using Deployment Script (from Proxmox host) ```bash cd /home/intlc/projects/proxmox/explorer-monorepo bash scripts/deploy-frontend-to-vmid5000.sh ``` #### Option 2: Manual Deployment (from VMID 5000) ```bash # On VMID 5000, copy the file: cp /path/to/explorer-monorepo/frontend/public/index.html /var/www/html/index.html chown www-data:www-data /var/www/html/index.html # Restart nginx nginx -t && systemctl restart nginx ``` #### Option 3: Using SCP (from local machine) ```bash scp explorer-monorepo/frontend/public/index.html root@192.168.11.140:/var/www/html/index.html ssh root@192.168.11.140 "chown www-data:www-data /var/www/html/index.html && nginx -t && systemctl restart nginx" ``` ## Verification **Deployment Date**: 2025-12-24 **Status**: ✅ Deployed and ready for testing ### Verification Steps 1. **Open browser console** (F12) 2. **Navigate to Blocks page** - should load without "Unknown action" errors 3. **Navigate to Transactions page** - should load without "Unknown action" errors 4. **Check for skeleton loaders** - should appear during loading, not throw "not defined" errors ### Expected Behavior - ✅ Blocks page loads 50 blocks from Blockscout API - ✅ Transactions page loads 50 transactions from Blockscout API - ✅ Skeleton loaders appear during loading - ✅ No "Unknown action" errors in console - ✅ No "createSkeletonLoader is not defined" errors ### Test URLs - Home: https://explorer.d-bis.org/ - Blocks: https://explorer.d-bis.org/ (click "Blocks" in navigation) - Transactions: https://explorer.d-bis.org/ (click "Transactions" in navigation) ## Testing Test the following scenarios: 1. **Home Page**: Should load stats, latest blocks, and latest transactions 2. **Blocks Page**: Should show 50 blocks without errors 3. **Transactions Page**: Should show 50 transactions without errors 4. **Block Detail**: Click on a block number - should show block details 5. **Transaction Detail**: Click on a transaction hash - should show transaction details ## Notes - The fixes maintain backward compatibility with other networks (non-138 chains) - For ChainID 138, all API calls now use Blockscout REST API format - Error handling includes retry buttons for better UX - Skeleton loaders provide visual feedback during data loading