diff --git a/gui/.gitignore b/gui/.gitignore index 934d6a8981ad1a047d8ad41f64a5478e37a911b7..dfa47e48416cf605a28eb39000507437496a74e9 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 0000000000000000000000000000000000000000..8a5482b95848b05ece4a3e4c67fee791e9aae614 --- /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 72bfb37240d80230f1b888285aa1e5c4782821f1..34f88cf59d72edf16dc2649e34acaf88cab6c61a 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 77ed9192469378cceb13e5d7eb6e64528b1ff384..e8508f1a2ad9f5762e77d980d6de0a927c58d734 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 }) }