From e7689a1e7108780fdd93dd018fc5b211fd040cdf Mon Sep 17 00:00:00 2001 From: Markus Scheidgen <markus.scheidgen@gmail.com> Date: Thu, 4 Jul 2019 14:06:58 +0200 Subject: [PATCH] Implemented hard reload on GUI version change #168. --- gui/.gitignore | 1 + gui/generateBuildVersion.js | 19 +++++++++++++++++++ gui/package.json | 2 ++ gui/src/components/App.js | 15 +++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 gui/generateBuildVersion.js diff --git a/gui/.gitignore b/gui/.gitignore index 934d6a8981..dfa47e4841 100644 --- a/gui/.gitignore +++ b/gui/.gitignore @@ -11,6 +11,7 @@ # generated public/metainfo/ +public/meta.json # misc .DS_Store diff --git a/gui/generateBuildVersion.js b/gui/generateBuildVersion.js new file mode 100644 index 0000000000..8a5482b958 --- /dev/null +++ b/gui/generateBuildVersion.js @@ -0,0 +1,19 @@ +const fs = require('fs') +const packageJson = require('./package.json') + +const appVersion = packageJson.version + +const jsonData = { + version: appVersion +} + +var jsonContent = JSON.stringify(jsonData) + +fs.writeFile('./public/meta.json', jsonContent, 'utf8', function(err) { + if (err) { + console.log('An error occured while writing JSON Object to meta.json') + return console.log(err) + } + + console.log('meta.json file has been saved with latest version number') +}) diff --git a/gui/package.json b/gui/package.json index 72bfb37240..34f88cf59d 100644 --- a/gui/package.json +++ b/gui/package.json @@ -37,6 +37,8 @@ "url-parse": "^1.4.3" }, "scripts": { + "generate-build-version": "node generateBuildVersion", + "prebuild": "npm run generate-build-version", "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", diff --git a/gui/src/components/App.js b/gui/src/components/App.js index 77ed919246..e8508f1a2a 100644 --- a/gui/src/components/App.js +++ b/gui/src/components/App.js @@ -26,6 +26,7 @@ import LoginLogout from './LoginLogout' import { genTheme, repoTheme, archiveTheme } from '../config' import { DomainProvider } from './domains' import MetaInfoBrowser from './metaInfoBrowser/MetaInfoBrowser' +import packageJson from '../../package.json' const drawerWidth = 200 @@ -155,6 +156,20 @@ class NavigationUnstyled extends React.Component { this.handleDrawerClose = this.handleDrawerClose.bind(this) } + componentDidMount() { + fetch('/meta.json') + .then((response) => response.json()) + .then((meta) => { + if (meta.version !== packageJson.version) { + console.log('Different version, hard reloading...') + window.location.reload(true) + } + }) + .catch(() => { + console.log('Could not validate version, continue...') + }) + } + handleDrawerOpen() { this.setState({ open: true }) } -- GitLab