diff --git a/background.js b/background.js index 6ea12d0..3fdd65d 100644 --- a/background.js +++ b/background.js @@ -30,3 +30,7 @@ chrome.app.runtime.onLaunched.addListener(function() { win.onClosed.addListener(closeSerialPorts); }); }); + +chrome.runtime.onInstalled.addListener(function(evt){ + chrome.storage.local.set({newVersion: 'newVersion'}); +}); diff --git a/client.js b/client.js index a9690d0..3300987 100644 --- a/client.js +++ b/client.js @@ -71,6 +71,7 @@ function onRender(err){ const { newFile, + showNewVersionOverlay, changeFile, changeProject } = handlers; @@ -88,6 +89,7 @@ function onRender(err){ } else { newFile(); } + showNewVersionOverlay(); }) .catch(console.error.bind(console)); } diff --git a/manifest.json b/manifest.json index 90356fd..d54cb2d 100644 --- a/manifest.json +++ b/manifest.json @@ -7,7 +7,8 @@ "permissions": [ "serial", "unlimitedStorage", - "syncFileSystem" + "syncFileSystem", + "storage" ], "icons": { "16": "icons/icon16.png", diff --git a/src/constants/overlay-states.js b/src/constants/overlay-states.js index 9ed71d5..efd0dc3 100644 --- a/src/constants/overlay-states.js +++ b/src/constants/overlay-states.js @@ -7,6 +7,7 @@ const overlayStates = { DOWNLOAD_OVERLAY: 'DOWNLOAD_OVERLAY', PROJECTS_OVERLAY: 'PROJECTS_OVERLAY', OVERWRITE_OVERLAY: 'OVERWRITE_OVERLAY', + NEW_VERSION_OVERLAY: 'NEW_VERSION_OVERLAY', DELETE_FILE_OVERLAY: 'DELETE_FILE_OVERLAY', DELETE_PROJECT_OVERLAY: 'DELETE_PROJECT_OVERLAY' }; diff --git a/src/creators/index.js b/src/creators/index.js index f94ef0d..42bde55 100644 --- a/src/creators/index.js +++ b/src/creators/index.js @@ -8,6 +8,7 @@ const creators = { showDownloadOverlay: require('./show-download-overlay'), showProjectsOverlay: require('./show-projects-overlay'), showOverwriteOverlay: require('./show-overwrite-overlay'), + showNewVersionOverlay: require('./show-new-version-overlay'), showSaveOverlay: require('./show-save-overlay'), showHelpOverlay: require('./show-help-overlay'), hideOverlay: require('./hide-overlay'), diff --git a/src/creators/show-new-version-overlay.js b/src/creators/show-new-version-overlay.js new file mode 100644 index 0000000..f716b69 --- /dev/null +++ b/src/creators/show-new-version-overlay.js @@ -0,0 +1,20 @@ +'use strict'; + +const { + SHOW_OVERLAY +} = require('../constants/action-types'); + +const { + NEW_VERSION_OVERLAY +} = require('../constants/overlay-states'); + +function showHelpOverlay(){ + return { + type: SHOW_OVERLAY, + payload: { + state: NEW_VERSION_OVERLAY + } + }; +} + +module.exports = showHelpOverlay; diff --git a/src/plugins/handlers.js b/src/plugins/handlers.js index 5eae8fc..d309f1d 100644 --- a/src/plugins/handlers.js +++ b/src/plugins/handlers.js @@ -265,6 +265,16 @@ function handlers(app, opts, done){ store.dispatch(creators.showDeleteFileOverlay()); } + function showNewVersionOverlay(){ + chrome.storage.local.get('newVersion', function(val) { + if(val.newVersion){ + chrome.storage.local.remove('newVersion', function() { + store.dispatch(creators.showNewVersionOverlay()); + }); + } + }); + } + function hideOverlay(){ store.dispatch(creators.hideOverlay()); } @@ -596,6 +606,7 @@ function handlers(app, opts, done){ // overlay methods showHelpOverlay, showSaveOverlay, + showNewVersionOverlay, showDownloadOverlay, showProjectsOverlay, showDeleteFileOverlay, diff --git a/src/plugins/overlays.js b/src/plugins/overlays.js index f04ff56..6a0db45 100644 --- a/src/plugins/overlays.js +++ b/src/plugins/overlays.js @@ -4,6 +4,7 @@ const React = require('react'); const HelpOverlay = require('../views/help-overlay'); const SaveOverlay = require('../views/save-overlay'); +const NewVersionOverlay = require('../views/new-version-overlay'); const ProjectOverlay = require('../views/project-overlay'); const DownloadOverlay = require('../views/download-overlay'); const OverwriteOverlay = require('../views/overwrite-overlay'); @@ -19,6 +20,7 @@ const { DOWNLOAD_OVERLAY, PROJECTS_OVERLAY, OVERWRITE_OVERLAY, + NEW_VERSION_OVERLAY, DELETE_FILE_OVERLAY, DELETE_PROJECT_OVERLAY } = require('../constants/overlay-states'); @@ -48,6 +50,9 @@ function overlays(app, opts, done){ case OVERWRITE_OVERLAY: renderOverlay(); break; + case NEW_VERSION_OVERLAY: + renderOverlay(); + break; case DOWNLOAD_OVERLAY: renderOverlay(); break; diff --git a/src/views/new-version-overlay.js b/src/views/new-version-overlay.js new file mode 100644 index 0000000..5498b43 --- /dev/null +++ b/src/views/new-version-overlay.js @@ -0,0 +1,51 @@ +'use strict'; + +const React = require('react'); +const Button = require('react-material/components/Button'); + +const Overlay = require('../components/overlay'); +const OverlayTitle = require('../components/overlay-title'); +const OverlayFooter = require('../components/overlay-footer'); + +const contentStyle = { + position: 'relative' +}; + +const releaseNotesLink = 'https://github.com/parallaxinc/Parallax-IDE/releases'; +const installationNotesLink = 'https://www.parallax.com/downloads/parallax-ide-chrome'; + +class NewVersionOverlay extends React.Component { + + render(){ + + const { + handlers + } = this.props; + + const { + hideOverlay + } = handlers; + + const { + name, + version + } = chrome.runtime.getManifest(); + + return ( + + {name} Automatically Updated to v{version} + + You are now running a new release of {name}! + + + See Release Notes and Installation Notes for more details. + + + OK + + + ); + } +} + +module.exports = NewVersionOverlay;