From cc1bb92f9d842f4d8a757358bf31c5de6c32592d Mon Sep 17 00:00:00 2001 From: kumavis Date: Sat, 1 Aug 2015 16:33:31 -0700 Subject: [PATCH] build overhaul + basic structure --- Gruntfile.js | 105 +++++++++++---------- app/.DS_Store | Bin 6148 -> 6148 bytes app/manifest.json | 8 +- app/popup.html | 25 ----- app/scripts/background.js | 44 +++++++-- app/scripts/contentscript.js | 15 ++- app/scripts/inpage.js | 15 +++ app/scripts/{ => lib}/metamask-provider.js | 0 app/scripts/popup.js | 3 - app/scripts/web3.js | 14 --- 10 files changed, 127 insertions(+), 102 deletions(-) delete mode 100644 app/popup.html create mode 100644 app/scripts/inpage.js rename app/scripts/{ => lib}/metamask-provider.js (100%) delete mode 100644 app/scripts/popup.js delete mode 100644 app/scripts/web3.js diff --git a/Gruntfile.js b/Gruntfile.js index d0c3b8f26..49e175366 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -15,8 +15,6 @@ module.exports = function (grunt) { // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); - grunt.loadNpmTasks('grunt-browserify'); - // Configurable paths var config = { app: 'app', @@ -72,11 +70,11 @@ module.exports = function (grunt) { // change this to '0.0.0.0' to access the server from outside hostname: 'localhost' }, - chrome: { + dev: { options: { open: false, base: [ - '<%= config.app %>' + '<%= config.dist %>' ] } }, @@ -93,9 +91,7 @@ module.exports = function (grunt) { // Empties folders to start fresh clean: { - chrome: { - }, - dist: { + basic: { files: [{ dot: true, src: [ @@ -215,15 +211,21 @@ module.exports = function (grunt) { // } // } // }, - // uglify: { - // dist: { - // files: { - // '<%= config.dist %>/scripts/scripts.js': [ - // '<%= config.dist %>/scripts/scripts.js' - // ] - // } - // } - // }, + uglify: { + dist: { + files: { + '<%= config.dist %>/scripts/background.js': [ + '<%= config.dist %>/scripts/background.js' + ], + '<%= config.dist %>/scripts/contentscript.js': [ + '<%= config.dist %>/scripts/contentscript.js' + ], + '<%= config.dist %>/scripts/inpage.js': [ + '<%= config.dist %>/scripts/inpage.js' + ], + } + } + }, // concat: { // dist: {} // }, @@ -231,7 +233,9 @@ module.exports = function (grunt) { browserify: { basic: { files: { - '<%= config.dist %>/scripts/web3.js': ['<%= config.app %>/scripts/web3.js'], + '<%= config.dist %>/scripts/background.js': ['<%= config.app %>/scripts/background.js'], + '<%= config.dist %>/scripts/contentscript.js': ['<%= config.app %>/scripts/contentscript.js'], + '<%= config.dist %>/scripts/inpage.js': ['<%= config.app %>/scripts/inpage.js'], }, }, }, @@ -251,26 +255,12 @@ module.exports = function (grunt) { 'styles/{,*/}*.css', 'styles/fonts/{,*/}*.*', '_locales/{,*/}*.json', + 'manifest.json', ] }] } }, - // Run some tasks in parallel to speed up build process - concurrent: { - chrome: [ - 'browserify', - ], - dist: [ - 'imagemin', - 'svgmin', - 'browserify', - ], - test: [ - 'browserify', - ] - }, - // Auto buildnumber, exclude dev files. smart builds that event pages chromeManifest: { dist: { @@ -284,9 +274,9 @@ module.exports = function (grunt) { ] } }, - src: '<%= config.app %>', + src: '<%= config.dist %>', dest: '<%= config.dist %>' - } + }, }, // Compres dist files to package @@ -305,40 +295,57 @@ module.exports = function (grunt) { dest: '' }] } - } + }, + + // Run some tasks in parallel to speed up build process + concurrent: { + dev: [ + 'browserify', + ], + dist: [ + 'imagemin', + 'svgmin', + 'browserify', + ], + test: [ + 'browserify', + ] + }, + + }); grunt.registerTask('dev', function () { grunt.task.run([ - 'concurrent:chrome', - 'connect:chrome', - 'build', + 'clean', + 'concurrent:dev', + 'connect:dev', + 'copy', + 'watch', ]); }); grunt.registerTask('test', [ - 'jshint', + // 'jshint', + 'concurrent:test', 'connect:test', - 'mocha' + 'copy', + + 'mocha', ]); grunt.registerTask('build', [ - 'clean:dist', - 'chromeManifest:dist', - 'useminPrepare', + 'clean', 'concurrent:dist', - 'cssmin', - 'concat', 'uglify', 'copy', - 'usemin', - 'compress' + 'chromeManifest:dist', + 'compress', ]); grunt.registerTask('default', [ - 'jshint', 'test', - 'build' + 'build', ]); }; diff --git a/app/.DS_Store b/app/.DS_Store index 9f45b9329097849c1792338b247ac3da5bc7498f..817a0eb72d3e424c75ce8b4f99e218f7e562d4f4 100644 GIT binary patch delta 76 zcmZoMXffEJ&cyh0vIf&CE{W=DLo)*%1q;K;cbSxx4j*Lz14c#&%^(b=VbrnBhRoMk NCN>CcX6N|J4*;FG577Vs delta 48 zcmZoMXffEJ&cyg@vIf&CZprFuLn8|V9R(xv$#>Pjj E0d_eLY5)KL diff --git a/app/manifest.json b/app/manifest.json index bc7518691..3a5456cce 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,6 +1,6 @@ { "name": "__MSG_appName__", - "version": "0.0.17", + "version": "0.0.49", "manifest_version": 2, "description": "__MSG_appDescription__", "icons": { @@ -19,8 +19,7 @@ "19": "images/icon-19.png", "38": "images/icon-38.png" }, - "default_title": "metamask", - "default_popup": "popup.html" + "default_title": "metamask" }, "content_scripts": [ { @@ -35,6 +34,9 @@ "all_frames": false } ], + "permissions": [ + "storage" + ], "web_accessible_resources": [ "scripts/web3.js" ] diff --git a/app/popup.html b/app/popup.html deleted file mode 100644 index bc8b6411b..000000000 --- a/app/popup.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - -

'Allo, 'Allo!

- - - - - - - - - - - diff --git a/app/scripts/background.js b/app/scripts/background.js index 87a27d0db..1557814b4 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -1,9 +1,41 @@ -'use strict'; +const web3 = require('web3') -chrome.runtime.onInstalled.addListener(function (details) { - console.log('previousVersion', details.previousVersion); -}); +const identitiesUrl = 'https://alpha.metamask.io/identities/' +const messagingChannelName = 'metamask' -chrome.browserAction.setBadgeText({text: '2'}); -console.log('\'Allo \'Allo! Event Page for Browser Action'); +// setup badge click handler +chrome.browserAction.onClicked.addListener(function(activeTab) { + chrome.tabs.create({ url: identitiesUrl }) +}) + +// setup page<->plugin messaging +chrome.runtime.onConnect.addListener(function(port) { + console.assert(port.name == messagingChannelName) + port.onMessage.addListener(function(msg) { + console.log(msg) + port.postMessage({answer: 'Madame'}) + }) +}) + +// update badge text +chrome.browserAction.setBadgeText({text: '2'}) + +// listen to storage changes +chrome.storage.onChanged.addListener(function(changes, namespace) { + for (key in changes) { + var storageChange = changes[key] + console.log('Storage key "%s" in namespace "%s" changed. ' + + 'Old value was "%s", new value is "%s".', + key, + namespace, + storageChange.oldValue, + storageChange.newValue) + } +}) + +// Save it using the Chrome extension storage API. +chrome.storage.sync.set({'zzz': 22}, function() { + // Notify that we saved. + console.log('Settings saved') +}) \ No newline at end of file diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index 23df227b4..2e50ae3a5 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -1,5 +1,16 @@ +const web3 = require('web3') + +// inject script tag var scriptTag = document.createElement('script') scriptTag.src = chrome.extension.getURL('scripts/web3.js') - scriptTag.onload = function() { debugger; this.parentNode.removeChild(this) } -;(document.head||document.documentElement).appendChild(scriptTag) +var container = document.head || document.documentElement +container.appendChild(scriptTag) + +// listen for messages +var port = chrome.runtime.connect({name: 'metamask'}) +port.postMessage({joke: 'Knock knock'}) +port.onMessage.addListener(function(msg) { + console.log(msg) + // port.postMessage({answer: 'Madame'}) +}) \ No newline at end of file diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js new file mode 100644 index 000000000..02bf226cb --- /dev/null +++ b/app/scripts/inpage.js @@ -0,0 +1,15 @@ +const web3 = require('web3') +const MetamaskProvider = require('./lib/metamask-provider.js') + +const rpcUrl = 'https://rpc.metamask.io' + + +var provider = new MetamaskProvider(forwardPayload, rpcUrl) +web3.setProvider(provider) + +// injecting web3 +window.web3 = web3 + +function forwardPayload(){ + debugger +} \ No newline at end of file diff --git a/app/scripts/metamask-provider.js b/app/scripts/lib/metamask-provider.js similarity index 100% rename from app/scripts/metamask-provider.js rename to app/scripts/lib/metamask-provider.js diff --git a/app/scripts/popup.js b/app/scripts/popup.js deleted file mode 100644 index 815abcb42..000000000 --- a/app/scripts/popup.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -console.log('\'Allo \'Allo! Popup'); diff --git a/app/scripts/web3.js b/app/scripts/web3.js deleted file mode 100644 index f0fec7b06..000000000 --- a/app/scripts/web3.js +++ /dev/null @@ -1,14 +0,0 @@ -const web3 = require('web3') -const MetamaskProvider = require('./metamask-provider.js') - - -var provider = new MetamaskProvider(forwardPayload, 'https://rpc.metamask.io') -web3.setProvider(provider) - -console.log('injecting web3....') -window.web3 = web3 - - -function forwardPayload(){ - debugger -} \ No newline at end of file