# 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

