diff --git a/package.json b/package.json
index 0db8143..c98e568 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
"name": "frangipane-client",
"private": true,
"version": "0.1.0",
+ "backendVersion": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/App.vue b/src/App.vue
index 0eecf19..18b52fb 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,6 +4,9 @@
+
+
@@ -11,7 +14,28 @@
diff --git a/src/locales/en.ftl b/src/locales/en.ftl
index 5f8afc5..7e29e98 100644
--- a/src/locales/en.ftl
+++ b/src/locales/en.ftl
@@ -83,6 +83,11 @@ settings-updating = Updating...
settings-error-required = Username and Email are required.
settings-error-failed = Update failed
+## Warning
+warning-wrongversion-title = Wrong app version
+warning-wrongversion-message = The backend expects version {$expectedBackendVersion} while your version of the app ({$appVersion}) supports backend version {$backendVersion}. Please update to avoid potential issues.
+warning-wrongversion-dismiss = I know what I'm doing
+
## Shared
shared-cancel = Cancel
shared-error = An error occurred
diff --git a/src/locales/fr.ftl b/src/locales/fr.ftl
index f493455..4d42468 100644
--- a/src/locales/fr.ftl
+++ b/src/locales/fr.ftl
@@ -81,6 +81,11 @@ settings-upload-avatar-title = Importer un avatar
settings-error-required = Le nom d'utilisateur et l'email sont requis.
settings-error-failed = Échec de la mise à jour
+## Warning
+warning-wrongversion-title = Mauvaise version de l'application
+warning-wrongversion-message = Le backend attend la version {$expectedBackendVersion} alors que votre version de l'application ({$appVersion}) prend en charge la version {$backendVersion} du backend. Veuillez mettre à jour pour éviter d'éventuels problèmes.
+warning-wrongversion-dismiss = Je sais ce que je fais
+
## Shared
shared-cancel = Annuler
shared-error = Une erreur est survenue
diff --git a/src/types.ts b/src/types.ts
index 95221b2..ac4229f 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -50,3 +50,7 @@ export interface RoomInvite {
sender_uuid: string
sender_username: string
}
+
+export interface VersionResponse {
+ version: string
+}
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
index fc81239..3d6cf68 100644
--- a/src/vite-env.d.ts
+++ b/src/vite-env.d.ts
@@ -5,3 +5,6 @@ declare module "*.vue" {
const component: DefineComponent<{}, {}, any>;
export default component;
}
+
+declare const __APP_VERSION__: string
+declare const __BACKEND_VERSION__: string
diff --git a/vite.config.ts b/vite.config.ts
index 570276d..dc8d0dc 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,5 +1,6 @@
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
+import packageJson from './package.json' // Import package.json
// @ts-expect-error process is a nodejs global
const host = process.env.TAURI_DEV_HOST;
@@ -31,4 +32,9 @@ export default defineConfig(async () => ({
ignored: ["**/src-tauri/**"],
},
},
+
+ define: {
+ '__APP_VERSION__': JSON.stringify(packageJson.version),
+ '__BACKEND_VERSION__': JSON.stringify(packageJson.backendVersion)
+ }
}));