diff --git a/web/index.html b/web/index.html
index 933180d..5ca2263 100644
--- a/web/index.html
+++ b/web/index.html
@@ -7,6 +7,7 @@
+
ShiftSync
diff --git a/web/src/router/AppRouter.jsx b/web/src/router/AppRouter.jsx
index 19d6710..5fa17a6 100644
--- a/web/src/router/AppRouter.jsx
+++ b/web/src/router/AppRouter.jsx
@@ -69,6 +69,16 @@ const AppRouter = () => {
};
useEffect(() => {
+ const localVersion = localStorage.getItem("APP_VERSION");
+ const currentVersion = window.APP_VERSION;
+
+ if (localVersion && localVersion !== currentVersion) {
+ console.log("Version changed, forcing reload");
+ localStorage.setItem("APP_VERSION", currentVersion);
+ window.location.reload(true); // force full page reload
+ } else {
+ localStorage.setItem("APP_VERSION", currentVersion);
+ }
fetchAPI();
// await call for getting the count of employees and any other calls to db.
diff --git a/web/vite.config.js b/web/vite.config.js
index 68c4221..c0e1bf1 100644
--- a/web/vite.config.js
+++ b/web/vite.config.js
@@ -1,10 +1,20 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
+import pkg from './package.json';
// https://vite.dev/config/
export default defineConfig({
- plugins: [react()],
+ plugins: [
+ react(),
+ {
+ name: 'html-transform',
+ transformIndexHtml(html) {
+ return html
+ .replace(/__appVersion__/g, pkg.version)
+ }
+ }
+ ],
server:{
host: true,
allowedHosts: true,
@@ -21,4 +31,14 @@ export default defineConfig({
'@components': path.resolve(__dirname, 'components')
},
},
+ build: {
+ assetsDir: 'assets',
+ rollupOptions: {
+ output: {
+ entryFileNames: `assets/[name].[hash].js`,
+ chunkFileNames: `assets/[name].[hash].js`,
+ assetFileNames: `assets/[name].[hash].[ext]`,
+ },
+ },
+ }
});