From 75f7c1244a43e48d45767e559a3b1b48f068030b Mon Sep 17 00:00:00 2001
From: Kevin Serrano <kevgagser@gmail.com>
Date: Wed, 15 Feb 2017 11:14:53 -0800
Subject: Made migrations non-destructive; fixed currency migration.

---
 app/scripts/migrations/002.js |  6 +++++-
 app/scripts/migrations/003.js |  5 ++++-
 app/scripts/migrations/004.js | 17 ++++++++++-------
 app/scripts/migrations/005.js |  7 +++++--
 app/scripts/migrations/006.js |  6 ++++--
 app/scripts/migrations/007.js |  6 ++++--
 app/scripts/migrations/008.js |  6 ++++--
 app/scripts/migrations/009.js |  9 ++++++---
 app/scripts/migrations/010.js |  4 +++-
 app/scripts/migrations/011.js |  5 ++++-
 10 files changed, 49 insertions(+), 22 deletions(-)

diff --git a/app/scripts/migrations/002.js b/app/scripts/migrations/002.js
index 476b0a43a..36a870342 100644
--- a/app/scripts/migrations/002.js
+++ b/app/scripts/migrations/002.js
@@ -1,9 +1,13 @@
 const version = 2
 
+const clone = require('clone')
+
+
 module.exports = {
   version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       if (versionedData.data.config.provider.type === 'etherscan') {
diff --git a/app/scripts/migrations/003.js b/app/scripts/migrations/003.js
index eceaeaa4b..1893576ad 100644
--- a/app/scripts/migrations/003.js
+++ b/app/scripts/migrations/003.js
@@ -2,10 +2,13 @@ const version = 3
 const oldTestRpc = 'https://rawtestrpc.metamask.io/'
 const newTestRpc = 'https://testrpc.metamask.io/'
 
+const clone = require('clone')
+
 module.exports = {
   version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       if (versionedData.data.config.provider.rpcTarget === oldTestRpc) {
diff --git a/app/scripts/migrations/004.js b/app/scripts/migrations/004.js
index 0f9850208..405d932f8 100644
--- a/app/scripts/migrations/004.js
+++ b/app/scripts/migrations/004.js
@@ -1,25 +1,28 @@
 const version = 4
 
+const clone = require('clone')
+
 module.exports = {
-  version,  
+  version,
 
   migrate: function (versionedData) {
-    versionedData.meta.version = version
+    let safeVersionedData = clone(versionedData)
+    safeVersionedData.meta.version = version
     try {
-      if (versionedData.data.config.provider.type !== 'rpc') return Promise.resolve(versionedData)
-      switch (versionedData.data.config.provider.rpcTarget) {
+      if (safeVersionedData.data.config.provider.type !== 'rpc') return Promise.resolve(safeVersionedData)
+      switch (safeVersionedData.data.config.provider.rpcTarget) {
         case 'https://testrpc.metamask.io/':
-          versionedData.data.config.provider = {
+          safeVersionedData.data.config.provider = {
             type: 'testnet',
           }
           break
         case 'https://rpc.metamask.io/':
-          versionedData.data.config.provider = {
+          safeVersionedData.data.config.provider = {
             type: 'mainnet',
           }
           break
       }
     } catch (_) {}
-    return Promise.resolve(versionedData)
+    return Promise.resolve(safeVersionedData)
   },
 }
diff --git a/app/scripts/migrations/005.js b/app/scripts/migrations/005.js
index 65f62a861..e4b84f460 100644
--- a/app/scripts/migrations/005.js
+++ b/app/scripts/migrations/005.js
@@ -7,11 +7,14 @@ This migration moves state from the flat state trie into KeyringController subst
 */
 
 const extend = require('xtend')
+const clone = require('clone')
+
 
 module.exports = {
-  version,  
+  version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
diff --git a/app/scripts/migrations/006.js b/app/scripts/migrations/006.js
index 950c4deb8..94d1b6ecd 100644
--- a/app/scripts/migrations/006.js
+++ b/app/scripts/migrations/006.js
@@ -7,11 +7,13 @@ This migration moves KeyringController.selectedAddress to PreferencesController.
 */
 
 const extend = require('xtend')
+const clone = require('clone')
 
 module.exports = {
-  version,  
+  version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
diff --git a/app/scripts/migrations/007.js b/app/scripts/migrations/007.js
index 3ae8cdc2d..236e35224 100644
--- a/app/scripts/migrations/007.js
+++ b/app/scripts/migrations/007.js
@@ -7,11 +7,13 @@ This migration breaks out the TransactionManager substate
 */
 
 const extend = require('xtend')
+const clone = require('clone')
 
 module.exports = {
-  version,  
+  version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
diff --git a/app/scripts/migrations/008.js b/app/scripts/migrations/008.js
index 7f6e72ee6..cd5e95d22 100644
--- a/app/scripts/migrations/008.js
+++ b/app/scripts/migrations/008.js
@@ -7,11 +7,13 @@ This migration breaks out the NoticeController substate
 */
 
 const extend = require('xtend')
+const clone = require('clone')
 
 module.exports = {
-  version,  
+  version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
diff --git a/app/scripts/migrations/009.js b/app/scripts/migrations/009.js
index 38e6dcc09..4612fefdc 100644
--- a/app/scripts/migrations/009.js
+++ b/app/scripts/migrations/009.js
@@ -7,11 +7,13 @@ This migration breaks out the CurrencyController substate
 */
 
 const merge = require('deep-extend')
+const clone = require('clone')
 
 module.exports = {
-  version,  
+  version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
@@ -27,12 +29,13 @@ module.exports = {
 function transformState (state) {
   const newState = merge({}, state, {
     CurrencyController: {
-      currentCurrency: state.currentFiat || 'USD',
+      currentCurrency: state.currentFiat || state.fiatCurrency || 'USD',
       conversionRate: state.conversionRate,
       conversionDate: state.conversionDate,
     },
   })
   delete newState.currentFiat
+  delete newState.fiatCurrency
   delete newState.conversionRate
   delete newState.conversionDate
 
diff --git a/app/scripts/migrations/010.js b/app/scripts/migrations/010.js
index d41c63fcd..48a841bc1 100644
--- a/app/scripts/migrations/010.js
+++ b/app/scripts/migrations/010.js
@@ -7,11 +7,13 @@ This migration breaks out the CurrencyController substate
 */
 
 const merge = require('deep-extend')
+const clone = require('clone')
 
 module.exports = {
   version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
diff --git a/app/scripts/migrations/011.js b/app/scripts/migrations/011.js
index 227fd87f7..bf283ef98 100644
--- a/app/scripts/migrations/011.js
+++ b/app/scripts/migrations/011.js
@@ -6,10 +6,13 @@ This migration breaks out the CurrencyController substate
 
 */
 
+const clone = require('clone')
+
 module.exports = {
   version,
 
-  migrate: function (versionedData) {
+  migrate: function (originalVersionedData) {
+    let versionedData = clone(originalVersionedData)
     versionedData.meta.version = version
     try {
       const state = versionedData.data
-- 
cgit v1.2.3