diff options
Merge branch 'master' into AddTokenList
Diffstat (limited to 'mascara/src')
-rw-r--r-- | mascara/src/background.js | 14 | ||||
-rw-r--r-- | mascara/src/lib/index-db-controller.js | 88 | ||||
-rw-r--r-- | mascara/src/mascara.js | 5 | ||||
-rw-r--r-- | mascara/src/proxy.js | 1 | ||||
-rw-r--r-- | mascara/src/ui.js | 16 |
5 files changed, 29 insertions, 95 deletions
diff --git a/mascara/src/background.js b/mascara/src/background.js index 957570050..d9dbf593a 100644 --- a/mascara/src/background.js +++ b/mascara/src/background.js @@ -1,4 +1,5 @@ global.window = global +const self = global const pipe = require('pump') const SwGlobalListener = require('sw-stream/lib/sw-global-listener.js') @@ -6,7 +7,7 @@ const connectionListener = new SwGlobalListener(self) const setupMultiplex = require('../../app/scripts/lib/stream-utils.js').setupMultiplex const PortStream = require('../../app/scripts/lib/port-stream.js') -const DbController = require('./lib/index-db-controller') +const DbController = require('idb-global') const SwPlatform = require('../../app/scripts/platforms/sw') const MetamaskController = require('../../app/scripts/metamask-controller') @@ -21,6 +22,7 @@ const STORAGE_KEY = 'metamask-config' // const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG' const METAMASK_DEBUG = true let popupIsOpen = false +let connectedClientCount = 0 const log = require('loglevel') global.log = log @@ -40,7 +42,6 @@ console.log('inside:open') let diskStore const dbController = new DbController({ key: STORAGE_KEY, - version: 2, }) loadStateFromPersistence() .then((initState) => setupController(initState)) @@ -107,6 +108,7 @@ function setupController (initState, client) { connectionListener.on('remote', (portStream, messageEvent) => { console.log('REMOTE CONECTION FOUND***********') + connectedClientCount += 1 connectRemote(portStream, messageEvent.data.context) }) @@ -142,4 +144,12 @@ function setupController (initState, client) { return Promise.resolve() } + +function sendMessageToAllClients (message) { + self.clients.matchAll().then(function(clients) { + clients.forEach(function(client) { + client.postMessage(message) + }) + }) +} function noop () {} diff --git a/mascara/src/lib/index-db-controller.js b/mascara/src/lib/index-db-controller.js deleted file mode 100644 index 8db1d5d21..000000000 --- a/mascara/src/lib/index-db-controller.js +++ /dev/null @@ -1,88 +0,0 @@ -const EventEmitter = require('events') -module.exports = class IndexDbController extends EventEmitter { - - constructor (opts) { - super() - this.migrations = opts.migrations - this.key = opts.key - this.dbObject = global.indexedDB - this.IDBTransaction = global.IDBTransaction || global.webkitIDBTransaction || global.msIDBTransaction || {READ_WRITE: "readwrite"}; // This line should only be needed if it is needed to support the object's constants for older browsers - this.IDBKeyRange = global.IDBKeyRange || global.webkitIDBKeyRange || global.msIDBKeyRange; - this.version = opts.version - this.logging = opts.logging - this.initialState = opts.initialState - if (this.logging) this.on('log', logger) - } - - // Opens the database connection and returns a promise - open (version = this.version) { - return new Promise((resolve, reject) => { - const dbOpenRequest = this.dbObject.open(this.key, version) - dbOpenRequest.onerror = (event) => { - return reject(event) - } - dbOpenRequest.onsuccess = (event) => { - this.db = dbOpenRequest.result - this.emit('success') - resolve(this.db) - } - dbOpenRequest.onupgradeneeded = (event) => { - this.db = event.target.result - this.db.createObjectStore('dataStore') - } - }) - .then((openRequest) => { - return this.get('dataStore') - }) - .then((data) => { - if (!data) { - return this._add('dataStore', this.initialState) - .then(() => this.get('dataStore')) - .then((versionedData) => Promise.resolve(versionedData)) - } - return Promise.resolve(data) - }) - } - - requestObjectStore (key, type = 'readonly') { - return new Promise((resolve, reject) => { - const dbReadWrite = this.db.transaction(key, type) - const dataStore = dbReadWrite.objectStore(key) - resolve(dataStore) - }) - } - - get (key = 'dataStore') { - return this.requestObjectStore(key) - .then((dataObject)=> { - return new Promise((resolve, reject) => { - const getRequest = dataObject.get(key) - getRequest.onsuccess = (event) => resolve(event.currentTarget.result) - getRequest.onerror = (event) => reject(event) - }) - }) - } - - put (state) { - return this.requestObjectStore('dataStore', 'readwrite') - .then((dataObject)=> { - const putRequest = dataObject.put(state, 'dataStore') - putRequest.onsuccess = (event) => Promise.resolve(event.currentTarget.result) - putRequest.onerror = (event) => Promise.reject(event) - }) - } - - _add (key, objStore, cb = logger) { - return this.requestObjectStore(key, 'readwrite') - .then((dataObject)=> { - const addRequest = dataObject.add(objStore, key) - addRequest.onsuccess = (event) => Promise.resolve(event.currentTarget.result) - addRequest.onerror = (event) => Promise.reject(event) - }) - } - -} - -function logger (err, ress) { - err ? console.error(`Logger says: ${err}`) : console.dir(`Logger says: ${ress}`) -} diff --git a/mascara/src/mascara.js b/mascara/src/mascara.js index 0fc2868e1..1655d1f64 100644 --- a/mascara/src/mascara.js +++ b/mascara/src/mascara.js @@ -1,6 +1,6 @@ const Web3 = require('web3') const setupProvider = require('./lib/setup-provider.js') - +const setupDappAutoReload = require('../../app/scripts/lib/auto-reload.js') const MASCARA_ORIGIN = process.env.MASCARA_ORIGIN || 'http://localhost:9001' console.log('MASCARA_ORIGIN:', MASCARA_ORIGIN) @@ -14,8 +14,7 @@ const provider = setupProvider({ instrumentForUserInteractionTriggers(provider) const web3 = new Web3(provider) -global.web3 = web3 - +setupDappAutoReload(web3, provider.publicConfigStore) // // ui stuff // diff --git a/mascara/src/proxy.js b/mascara/src/proxy.js index ec5665240..eabc547b4 100644 --- a/mascara/src/proxy.js +++ b/mascara/src/proxy.js @@ -20,6 +20,7 @@ background.on('ready', (_) => { pageStream.pipe(swStream).pipe(pageStream) }) +background.on('updatefound', () => window.location.reload()) background.on('error', console.error) background.startWorker() diff --git a/mascara/src/ui.js b/mascara/src/ui.js index 2873017cb..5f9be542f 100644 --- a/mascara/src/ui.js +++ b/mascara/src/ui.js @@ -24,10 +24,10 @@ const background = new SWcontroller({ fileName: '/background.js', letBeIdle: false, intervalDelay, - wakeUpInterval: 30000 + wakeUpInterval: 20000 }) // Setup listener for when the service worker is read -background.on('ready', (readSw) => { +const connectApp = function (readSw) { let connectionStream = SwStream({ serviceWorker: background.controller, context: name, @@ -39,6 +39,18 @@ background.on('ready', (readSw) => { if (state.appState.shouldClose) window.close() }) }) +} +background.on('ready', (sw) => { + background.removeListener('updatefound', connectApp) + connectApp(sw) }) +background.on('updatefound', () => window.location.reload()) + background.startWorker() +.then(() => { + setTimeout(() => { + const appContent = document.getElementById(`app-content`) + if (!appContent.children.length) window.location.reload() + }, 2000) +}) console.log('hello from MetaMascara ui!') |