fix: localStorage key consistency for Safe Paper Trading positions

- Fixed conflicting localStorage keys causing positions to disappear
- Added backward compatibility to load from both old and new key patterns
- Standardized to safePaperTrading_ prefix for consistency
- Updated reset function to clear all key patterns
- Positions should now persist when navigating between pages
This commit is contained in:
mindesbunister
2025-08-06 00:20:33 +02:00
parent af1b091640
commit dc8120ca61
2 changed files with 105 additions and 4 deletions

View File

@@ -426,15 +426,18 @@ export default function SafePaperTradingPage() {
}
useEffect(() => {
// Load paper trading data from localStorage
const savedTrades = localStorage.getItem('safePaperTrades')
const savedBalance = localStorage.getItem('safePaperBalance')
// Load paper trading data from localStorage using consistent keys
// Check both old and new key patterns for backward compatibility
const savedTrades = localStorage.getItem('safePaperTrading_paperTrades') || localStorage.getItem('safePaperTrades')
const savedBalance = localStorage.getItem('safePaperTrading_paperBalance') || localStorage.getItem('safePaperBalance')
if (savedTrades) {
setPaperTrades(JSON.parse(savedTrades))
console.log('📂 Restored paper trades from localStorage')
}
if (savedBalance) {
setPaperBalance(parseFloat(savedBalance))
console.log('📂 Restored paper balance from localStorage')
}
// Fetch AI learning status
@@ -456,8 +459,12 @@ export default function SafePaperTradingPage() {
}
}, [selectedTimeframes])
// Save to localStorage whenever data changes
// Save to localStorage whenever data changes - use consistent prefixed keys
useEffect(() => {
localStorage.setItem('safePaperTrading_paperTrades', JSON.stringify(paperTrades))
localStorage.setItem('safePaperTrading_paperBalance', paperBalance.toString())
// Also save to old keys for backward compatibility (temporarily)
localStorage.setItem('safePaperTrades', JSON.stringify(paperTrades))
localStorage.setItem('safePaperBalance', paperBalance.toString())
}, [paperTrades, paperBalance])
@@ -803,8 +810,15 @@ export default function SafePaperTradingPage() {
setPaperBalance(1000)
setPaperTrades([])
setCurrentAnalysis(null)
// Clear both key patterns to ensure complete reset
localStorage.removeItem('safePaperTrades')
localStorage.removeItem('safePaperBalance')
localStorage.removeItem('safePaperTrading_paperTrades')
localStorage.removeItem('safePaperTrading_paperBalance')
localStorage.removeItem('safePaperTrading_currentAnalysis')
console.log('🗑️ All safe paper trading data reset')
}
}

View File

@@ -0,0 +1,87 @@
/**
* Test script to check localStorage persistence for Safe Paper Trading
*/
// Test the localStorage data that should persist
const testLocalStorageKeys = [
'safePaperTrades',
'safePaperBalance',
'safePaperTrading_paperTrades',
'safePaperTrading_paperBalance',
'safePaperTrading_currentAnalysis',
'safePaperTrading_analysisHistory',
'safePaperTrading_learningInsights'
];
console.log('📋 Testing Safe Paper Trading localStorage persistence...\n');
// Create a sample trade to test with
const sampleTrade = {
id: 'TEST_' + Date.now(),
symbol: 'SOLUSD',
type: 'BUY',
size: 100,
entryPrice: 142.50,
timestamp: new Date().toISOString(),
status: 'OPEN',
confidence: 75,
reasoning: 'Test trade for localStorage persistence'
};
console.log('✅ Sample trade created:', JSON.stringify(sampleTrade, null, 2));
// Test saving to both key patterns
const currentTrades = [sampleTrade];
const currentBalance = 1000;
console.log('\n💾 Saving to localStorage with both key patterns...');
// Save using both patterns
localStorage.setItem('safePaperTrades', JSON.stringify(currentTrades));
localStorage.setItem('safePaperBalance', currentBalance.toString());
localStorage.setItem('safePaperTrading_paperTrades', JSON.stringify(currentTrades));
localStorage.setItem('safePaperTrading_paperBalance', currentBalance.toString());
console.log('✅ Data saved to localStorage');
// Test reading back
console.log('\n📖 Reading back from localStorage...');
testLocalStorageKeys.forEach(key => {
const value = localStorage.getItem(key);
if (value) {
try {
const parsed = JSON.parse(value);
console.log(`${key}: ${Array.isArray(parsed) ? `${parsed.length} trades` : `value: ${parsed}`}`);
} catch (e) {
console.log(`${key}: ${value}`);
}
} else {
console.log(`${key}: NOT FOUND`);
}
});
// Test the backward compatibility loading logic
console.log('\n🔄 Testing backward compatibility loading...');
const loadedTrades = localStorage.getItem('safePaperTrading_paperTrades') || localStorage.getItem('safePaperTrades');
const loadedBalance = localStorage.getItem('safePaperTrading_paperBalance') || localStorage.getItem('safePaperBalance');
if (loadedTrades) {
const trades = JSON.parse(loadedTrades);
console.log(`✅ Successfully loaded ${trades.length} trades using backward compatibility`);
console.log(`📊 Trade details:`, trades[0]);
} else {
console.log('❌ Failed to load trades using backward compatibility');
}
if (loadedBalance) {
console.log(`✅ Successfully loaded balance: $${loadedBalance}`);
} else {
console.log('❌ Failed to load balance using backward compatibility');
}
console.log('\n🎯 Test completed!');
console.log('💡 If you see this data when you refresh the page, localStorage persistence is working correctly.');
module.exports = { sampleTrade, testLocalStorageKeys };