aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/controllers')
-rw-r--r--app/scripts/controllers/preferences.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js
index f6250dc16..8a4a63bb6 100644
--- a/app/scripts/controllers/preferences.js
+++ b/app/scripts/controllers/preferences.js
@@ -25,6 +25,7 @@ class PreferencesController {
frequentRpcList: [],
currentAccountTab: 'history',
tokens: [],
+ suggestedTokens: {},
useBlockie: false,
featureFlags: {},
currentLocale: opts.initLangCode,
@@ -35,6 +36,7 @@ class PreferencesController {
this.diagnostics = opts.diagnostics
this.store = new ObservableStore(initState)
+ this.showAddTokenUi = opts.showAddTokenUi
}
// PUBLIC METHODS
@@ -48,6 +50,45 @@ class PreferencesController {
this.store.updateState({ useBlockie: val })
}
+ getSuggestedTokens () {
+ return this.store.getState().suggestedTokens
+ }
+
+ addSuggestedToken (tokenOpts) {
+ // TODO: Validate params
+ const suggested = this.getSuggestedTokens()
+ suggested[tokenOpts.address] = suggested
+ this.store.updateState({ suggestedTokens: suggested })
+ }
+
+ /**
+ * RPC engine middleware for requesting new token added
+ *
+ * @param req
+ * @param res
+ * @param {Function} - next
+ * @param {Function} - end
+ */
+ requestAddToken(req, res, next, end) {
+ if (req.method === 'eth_watchToken') {
+ // TODO: Validate params!
+ const [ rawAddress, symbol, decimals ] = req.params
+
+ const tokenOpts = {
+ address: rawAddress,
+ decimals,
+ symbol,
+ }
+
+ this.addSuggestedToken(tokenOpts)
+ this.showAddTokenUi()
+
+ return end(rawAddress)
+ } else {
+ return next()
+ }
+ }
+
/**
* Getter for the `useBlockie` property
*