mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
migration 18 - move to diff-based history
This commit is contained in:
parent
fdffb6fedc
commit
accd057b1a
52
app/scripts/migrations/018.js
Normal file
52
app/scripts/migrations/018.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
const version = 18
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
This migration updates "transaction state history" to diffs style
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
const clone = require('clone')
|
||||||
|
const txStateHistoryHelper = require('../tx-state-history-helper')
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
version,
|
||||||
|
|
||||||
|
migrate: function (originalVersionedData) {
|
||||||
|
const versionedData = clone(originalVersionedData)
|
||||||
|
versionedData.meta.version = version
|
||||||
|
try {
|
||||||
|
const state = versionedData.data
|
||||||
|
const newState = transformState(state)
|
||||||
|
versionedData.data = newState
|
||||||
|
} catch (err) {
|
||||||
|
console.warn(`MetaMask Migration #${version}` + err.stack)
|
||||||
|
}
|
||||||
|
return Promise.resolve(versionedData)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
function transformState (state) {
|
||||||
|
const newState = state
|
||||||
|
const transactions = newState.TransactionController.transactions
|
||||||
|
newState.TransactionController.transactions = transactions.map((txMeta) => {
|
||||||
|
// no history: initialize
|
||||||
|
if (!txMeta.history || tx.history.length === 0) {
|
||||||
|
const snapshot = txStateHistoryHelper.snapshotFromTxMeta(txMeta)
|
||||||
|
txMeta.history = [snapshot]
|
||||||
|
return txMeta
|
||||||
|
}
|
||||||
|
// has history: migrate
|
||||||
|
const newHistory = (
|
||||||
|
txStateHistoryHelper.migrateFromSnapshotsToDiffs(txMeta.history)
|
||||||
|
// remove empty diffs
|
||||||
|
.filter((entry) => {
|
||||||
|
return !Array.isArray(entry) || entry.length > 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
txMeta.history = newHistory
|
||||||
|
return txMeta
|
||||||
|
})
|
||||||
|
return newState
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user