From 2d7c3c2b00a698b19ac015624154c3c1cd2619b2 Mon Sep 17 00:00:00 2001
From: frankiebee <frankie.diamond@gmail.com>
Date: Fri, 6 Apr 2018 11:07:20 -0700
Subject: meta - transactions - create a transactions dir in controller and
 move relevant files into it

---
 app/scripts/controllers/transactions/lib/util.js | 66 ++++++++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 app/scripts/controllers/transactions/lib/util.js

(limited to 'app/scripts/controllers/transactions/lib/util.js')

diff --git a/app/scripts/controllers/transactions/lib/util.js b/app/scripts/controllers/transactions/lib/util.js
new file mode 100644
index 000000000..f403b0758
--- /dev/null
+++ b/app/scripts/controllers/transactions/lib/util.js
@@ -0,0 +1,66 @@
+const {
+  addHexPrefix,
+  isValidAddress,
+} = require('ethereumjs-util')
+
+module.exports = {
+  normalizeTxParams,
+  validateTxParams,
+  validateFrom,
+  validateRecipient
+}
+
+
+function normalizeTxParams (txParams) {
+  // functions that handle normalizing of that key in txParams
+  const whiteList = {
+    from: from => addHexPrefix(from).toLowerCase(),
+    to: to => addHexPrefix(txParams.to).toLowerCase(),
+    nonce: nonce => addHexPrefix(nonce),
+    value: value => addHexPrefix(value),
+    data: data => addHexPrefix(data),
+    gas: gas => addHexPrefix(gas),
+    gasPrice: gasPrice => addHexPrefix(gasPrice),
+  }
+
+  // apply only keys in the whiteList
+  const normalizedTxParams = {}
+  Object.keys(whiteList).forEach((key) => {
+    if (txParams[key]) normalizedTxParams[key] = whiteList[key](txParams[key])
+  })
+
+  return normalizedTxParams
+}
+
+function validateTxParams (txParams) {
+  validateFrom(txParams)
+  validateRecipient(txParams)
+  if ('value' in txParams) {
+    const value = txParams.value.toString()
+    if (value.includes('-')) {
+      throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`)
+    }
+
+    if (value.includes('.')) {
+      throw new Error(`Invalid transaction value of ${txParams.value} number must be in wei`)
+    }
+  }
+}
+
+function validateFrom (txParams) {
+  if ( !(typeof txParams.from === 'string') ) throw new Error(`Invalid from address ${txParams.from} not a string`)
+  if (!isValidAddress(txParams.from)) throw new Error('Invalid from address')
+}
+
+function validateRecipient (txParams) {
+  if (txParams.to === '0x' || txParams.to === null ) {
+    if (txParams.data) {
+      delete txParams.to
+    } else {
+      throw new Error('Invalid recipient address')
+    }
+  } else if ( txParams.to !== undefined && !isValidAddress(txParams.to) ) {
+    throw new Error('Invalid recipient address')
+  }
+  return txParams
+}
\ No newline at end of file
-- 
cgit 


From 5494aa4f9c34353158dc0c6d07d48abec247ccd8 Mon Sep 17 00:00:00 2001
From: frankiebee <frankie.diamond@gmail.com>
Date: Tue, 10 Apr 2018 14:53:40 -0700
Subject: transactions - lint fixes

---
 app/scripts/controllers/transactions/lib/util.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'app/scripts/controllers/transactions/lib/util.js')

diff --git a/app/scripts/controllers/transactions/lib/util.js b/app/scripts/controllers/transactions/lib/util.js
index f403b0758..5d5e63c59 100644
--- a/app/scripts/controllers/transactions/lib/util.js
+++ b/app/scripts/controllers/transactions/lib/util.js
@@ -7,7 +7,7 @@ module.exports = {
   normalizeTxParams,
   validateTxParams,
   validateFrom,
-  validateRecipient
+  validateRecipient,
 }
 
 
@@ -48,19 +48,19 @@ function validateTxParams (txParams) {
 }
 
 function validateFrom (txParams) {
-  if ( !(typeof txParams.from === 'string') ) throw new Error(`Invalid from address ${txParams.from} not a string`)
+  if (!(typeof txParams.from === 'string')) throw new Error(`Invalid from address ${txParams.from} not a string`)
   if (!isValidAddress(txParams.from)) throw new Error('Invalid from address')
 }
 
 function validateRecipient (txParams) {
-  if (txParams.to === '0x' || txParams.to === null ) {
+  if (txParams.to === '0x' || txParams.to === null) {
     if (txParams.data) {
       delete txParams.to
     } else {
       throw new Error('Invalid recipient address')
     }
-  } else if ( txParams.to !== undefined && !isValidAddress(txParams.to) ) {
+  } else if (txParams.to !== undefined && !isValidAddress(txParams.to)) {
     throw new Error('Invalid recipient address')
   }
   return txParams
-}
\ No newline at end of file
+}
-- 
cgit 


From 943eea043cc40ea42ffe757a7115ccbc5585b37b Mon Sep 17 00:00:00 2001
From: frankiebee <frankie.diamond@gmail.com>
Date: Fri, 13 Apr 2018 13:18:45 -0700
Subject: fix up - more docs

---
 app/scripts/controllers/transactions/lib/util.js | 32 ++++++++++++------------
 1 file changed, 16 insertions(+), 16 deletions(-)

(limited to 'app/scripts/controllers/transactions/lib/util.js')

diff --git a/app/scripts/controllers/transactions/lib/util.js b/app/scripts/controllers/transactions/lib/util.js
index 5d5e63c59..b18283997 100644
--- a/app/scripts/controllers/transactions/lib/util.js
+++ b/app/scripts/controllers/transactions/lib/util.js
@@ -11,24 +11,24 @@ module.exports = {
 }
 
 
+// functions that handle normalizing of that key in txParams
+const normalizers = {
+  from: from => addHexPrefix(from).toLowerCase(),
+  to: to => addHexPrefix(to).toLowerCase(),
+  nonce: nonce => addHexPrefix(nonce),
+  value: value =>  value ? addHexPrefix(value) : '0x0',
+  data: data => addHexPrefix(data),
+  gas: gas => addHexPrefix(gas),
+  gasPrice: gasPrice => addHexPrefix(gasPrice),
+}
+ /**
+ */
 function normalizeTxParams (txParams) {
-  // functions that handle normalizing of that key in txParams
-  const whiteList = {
-    from: from => addHexPrefix(from).toLowerCase(),
-    to: to => addHexPrefix(txParams.to).toLowerCase(),
-    nonce: nonce => addHexPrefix(nonce),
-    value: value => addHexPrefix(value),
-    data: data => addHexPrefix(data),
-    gas: gas => addHexPrefix(gas),
-    gasPrice: gasPrice => addHexPrefix(gasPrice),
-  }
-
-  // apply only keys in the whiteList
+  // apply only keys in the normalizers
   const normalizedTxParams = {}
-  Object.keys(whiteList).forEach((key) => {
-    if (txParams[key]) normalizedTxParams[key] = whiteList[key](txParams[key])
-  })
-
+  for (let key in normalizers) {
+    if (txParams[key]) normalizedTxParams[key] = normalizers[key](txParams[key])
+  }
   return normalizedTxParams
 }
 
-- 
cgit 


From eeb9390de81ce6fc92247d5c499e991dce8330bd Mon Sep 17 00:00:00 2001
From: frankiebee <frankie.diamond@gmail.com>
Date: Thu, 19 Apr 2018 11:29:26 -0700
Subject: meta - transactions - docs yo!

---
 app/scripts/controllers/transactions/lib/util.js | 37 ++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

(limited to 'app/scripts/controllers/transactions/lib/util.js')

diff --git a/app/scripts/controllers/transactions/lib/util.js b/app/scripts/controllers/transactions/lib/util.js
index b18283997..84f7592a0 100644
--- a/app/scripts/controllers/transactions/lib/util.js
+++ b/app/scripts/controllers/transactions/lib/util.js
@@ -3,11 +3,15 @@ const {
   isValidAddress,
 } = require('ethereumjs-util')
 
+/**
+@module
+*/
 module.exports = {
   normalizeTxParams,
   validateTxParams,
   validateFrom,
   validateRecipient,
+  getFinalStates,
 }
 
 
@@ -16,22 +20,30 @@ const normalizers = {
   from: from => addHexPrefix(from).toLowerCase(),
   to: to => addHexPrefix(to).toLowerCase(),
   nonce: nonce => addHexPrefix(nonce),
-  value: value =>  value ? addHexPrefix(value) : '0x0',
+  value: value => addHexPrefix(value),
   data: data => addHexPrefix(data),
   gas: gas => addHexPrefix(gas),
   gasPrice: gasPrice => addHexPrefix(gasPrice),
 }
+
  /**
+  normalizes txParams
+  @param txParams {object}
+  @returns {object} normalized txParams
  */
 function normalizeTxParams (txParams) {
   // apply only keys in the normalizers
   const normalizedTxParams = {}
-  for (let key in normalizers) {
+  for (const key in normalizers) {
     if (txParams[key]) normalizedTxParams[key] = normalizers[key](txParams[key])
   }
   return normalizedTxParams
 }
 
+ /**
+  validates txParams
+  @param txParams {object}
+ */
 function validateTxParams (txParams) {
   validateFrom(txParams)
   validateRecipient(txParams)
@@ -47,11 +59,19 @@ function validateTxParams (txParams) {
   }
 }
 
+ /**
+  validates the from field in  txParams
+  @param txParams {object}
+ */
 function validateFrom (txParams) {
   if (!(typeof txParams.from === 'string')) throw new Error(`Invalid from address ${txParams.from} not a string`)
   if (!isValidAddress(txParams.from)) throw new Error('Invalid from address')
 }
 
+ /**
+  validates the to field in  txParams
+  @param txParams {object}
+ */
 function validateRecipient (txParams) {
   if (txParams.to === '0x' || txParams.to === null) {
     if (txParams.data) {
@@ -64,3 +84,16 @@ function validateRecipient (txParams) {
   }
   return txParams
 }
+
+  /**
+    @returns an {array} of states that can be considered final
+  */
+function getFinalStates () {
+  return [
+    'rejected', // the user has responded no!
+    'confirmed', // the tx has been included in a block.
+    'failed', // the tx failed for some reason, included on tx data.
+    'dropped', // the tx nonce was already used
+  ]
+}
+
-- 
cgit