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:
@@ -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')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
87
test-localStorage-persistence.js
Normal file
87
test-localStorage-persistence.js
Normal 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 };
|
||||
Reference in New Issue
Block a user