From 8012ede12698477692b80769781096b559159a32 Mon Sep 17 00:00:00 2001 From: kumavis Date: Wed, 11 Jan 2017 19:04:19 -0800 Subject: background - introduce ObservableStore --- mock-dev.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'mock-dev.js') diff --git a/mock-dev.js b/mock-dev.js index 283bc2c79..dfd0b4961 100644 --- a/mock-dev.js +++ b/mock-dev.js @@ -47,11 +47,13 @@ const controller = new MetamaskController({ showUnconfirmedMessage: noop, unlockAccountMessage: noop, showUnapprovedTx: noop, - // Persistence Methods: - setData, - loadData, + // initial state + initState: loadData(), }) +// setup state persistence +controller.store.subscribe(setData) + // Stub out localStorage for non-browser environments if (!window.localStorage) { window.localStorage = {} -- cgit From 3bc996878b467e1fa5fd63656bd465377daa137d Mon Sep 17 00:00:00 2001 From: kumavis Date: Wed, 11 Jan 2017 22:47:56 -0800 Subject: background - move pojo migrator to outside of metamask controller --- mock-dev.js | 94 ++++++++++++++++++++++--------------------------------------- 1 file changed, 33 insertions(+), 61 deletions(-) (limited to 'mock-dev.js') diff --git a/mock-dev.js b/mock-dev.js index dfd0b4961..a404c64b0 100644 --- a/mock-dev.js +++ b/mock-dev.js @@ -12,6 +12,9 @@ * To use, run `npm run mock`. */ +// pollyfill localStorage for non-browser environments +if (!global.localStorage) global.localStorage + const extend = require('xtend') const render = require('react-dom').render const h = require('react-hyperscript') @@ -21,93 +24,62 @@ const actions = require('./ui/app/actions') const states = require('./development/states') const Selector = require('./development/selector') const MetamaskController = require('./app/scripts/metamask-controller') +const firstTimeState = require('./app/scripts/first-time-state') +const LocalStorageStore = require('./app/scripts/lib/observable/local-storage') +const synchronizeStore = require('./app/scripts/lib/observable/util/sync') const extension = require('./development/mockExtension') +const noop = function () {} + +const STORAGE_KEY = 'metamask-config' +// // Query String +// + const qs = require('qs') let queryString = qs.parse(window.location.href.split('#')[1]) let selectedView = queryString.view || 'first time' const firstState = states[selectedView] updateQueryParams(selectedView) +function updateQueryParams(newView) { + queryString.view = newView + const params = qs.stringify(queryString) + window.location.href = window.location.href.split('#')[0] + `#${params}` +} + +// // CSS +// + const MetaMaskUiCss = require('./ui/css') const injectCss = require('inject-css') +// +// MetaMask Controller +// -function updateQueryParams(newView) { - queryString.view = newView - const params = qs.stringify(queryString) - window.location.href = window.location.href.split('#')[0] + `#${params}` +let dataStore = new LocalStorageStore({ storageKey: STORAGE_KEY }) +// initial state for first time users +if (!dataStore.get()) { + dataStore.put(firstTimeState) } -const noop = function () {} const controller = new MetamaskController({ // User confirmation callbacks: showUnconfirmedMessage: noop, unlockAccountMessage: noop, showUnapprovedTx: noop, // initial state - initState: loadData(), + initState: dataStore.get(), }) // setup state persistence -controller.store.subscribe(setData) - -// Stub out localStorage for non-browser environments -if (!window.localStorage) { - window.localStorage = {} -} -const STORAGE_KEY = 'metamask-config' -function loadData () { - var oldData = getOldStyleData() - var newData - try { - newData = JSON.parse(window.localStorage[STORAGE_KEY]) - } catch (e) {} - - var data = extend({ - meta: { - version: 0, - }, - data: { - config: { - provider: { - type: 'testnet', - }, - }, - }, - }, oldData || null, newData || null) - return data -} - -function setData (data) { - window.localStorage[STORAGE_KEY] = JSON.stringify(data) -} - -function getOldStyleData () { - var config, wallet, seedWords +synchronizeStore(controller.store, dataStore) - var result = { - meta: { version: 0 }, - data: {}, - } - - try { - config = JSON.parse(window.localStorage['config']) - result.data.config = config - } catch (e) {} - try { - wallet = JSON.parse(window.localStorage['lightwallet']) - result.data.wallet = wallet - } catch (e) {} - try { - seedWords = window.localStorage['seedWords'] - result.data.seedWords = seedWords - } catch (e) {} - - return result -} +// +// User Interface +// actions._setBackgroundConnection(controller.getApi()) actions.update = function(stateName) { -- cgit From 76ce348a04b83693eda0e8a40f9888c1f5fe7ef5 Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 24 Jan 2017 19:47:00 -0800 Subject: obs-store - use published module --- mock-dev.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'mock-dev.js') diff --git a/mock-dev.js b/mock-dev.js index a404c64b0..f5760bd1f 100644 --- a/mock-dev.js +++ b/mock-dev.js @@ -18,6 +18,8 @@ if (!global.localStorage) global.localStorage const extend = require('xtend') const render = require('react-dom').render const h = require('react-hyperscript') +const pipe = require('mississippi').pipe +const LocalStorageStore = require('obs-store/lib/localStorage') const Root = require('./ui/app/root') const configureStore = require('./ui/app/store') const actions = require('./ui/app/actions') @@ -25,8 +27,6 @@ const states = require('./development/states') const Selector = require('./development/selector') const MetamaskController = require('./app/scripts/metamask-controller') const firstTimeState = require('./app/scripts/first-time-state') -const LocalStorageStore = require('./app/scripts/lib/observable/local-storage') -const synchronizeStore = require('./app/scripts/lib/observable/util/sync') const extension = require('./development/mockExtension') const noop = function () {} @@ -61,8 +61,8 @@ const injectCss = require('inject-css') let dataStore = new LocalStorageStore({ storageKey: STORAGE_KEY }) // initial state for first time users -if (!dataStore.get()) { - dataStore.put(firstTimeState) +if (!dataStore.getState()) { + dataStore.putState(firstTimeState) } const controller = new MetamaskController({ @@ -71,11 +71,14 @@ const controller = new MetamaskController({ unlockAccountMessage: noop, showUnapprovedTx: noop, // initial state - initState: dataStore.get(), + initState: dataStore.getState(), }) // setup state persistence -synchronizeStore(controller.store, dataStore) +pipe( + controller.store, + dataStore +) // // User Interface -- cgit From 0f33acb80ca90e07e6f7b7c083f52a1f4344c48e Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 24 Jan 2017 20:28:10 -0800 Subject: mock-dev - cleanup missing polyfill --- mock-dev.js | 3 --- 1 file changed, 3 deletions(-) (limited to 'mock-dev.js') diff --git a/mock-dev.js b/mock-dev.js index f5760bd1f..bd3a1ad77 100644 --- a/mock-dev.js +++ b/mock-dev.js @@ -12,9 +12,6 @@ * To use, run `npm run mock`. */ -// pollyfill localStorage for non-browser environments -if (!global.localStorage) global.localStorage - const extend = require('xtend') const render = require('react-dom').render const h = require('react-hyperscript') -- cgit