diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle
index 6295774a..a10f1982 100644
--- a/android/app/capacitor.build.gradle
+++ b/android/app/capacitor.build.gradle
@@ -10,6 +10,7 @@ android {
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
dependencies {
implementation project(':capacitor-community-sqlite')
+ implementation project(':capacitor-app')
implementation project(':capacitor-dialog')
implementation project(':capacitor-network')
implementation project(':capacitor-storage')
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 67bbe6d1..1e6ea18f 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -50,6 +50,14 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/assets/capacitor.plugins.json b/android/app/src/main/assets/capacitor.plugins.json
index 30c65280..127f911b 100644
--- a/android/app/src/main/assets/capacitor.plugins.json
+++ b/android/app/src/main/assets/capacitor.plugins.json
@@ -3,6 +3,10 @@
"pkg": "@capacitor-community/sqlite",
"classpath": "com.getcapacitor.community.database.sqlite.CapacitorSQLitePlugin"
},
+ {
+ "pkg": "@capacitor/app",
+ "classpath": "com.capacitorjs.plugins.app.AppPlugin"
+ },
{
"pkg": "@capacitor/dialog",
"classpath": "com.capacitorjs.plugins.dialog.DialogPlugin"
diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle
index 99af1d75..0d7ae3ec 100644
--- a/android/capacitor.settings.gradle
+++ b/android/capacitor.settings.gradle
@@ -5,6 +5,9 @@ project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/
include ':capacitor-community-sqlite'
project(':capacitor-community-sqlite').projectDir = new File('../node_modules/@capacitor-community/sqlite/android')
+include ':capacitor-app'
+project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
+
include ':capacitor-dialog'
project(':capacitor-dialog').projectDir = new File('../node_modules/@capacitor/dialog/android')
diff --git a/components/app/Appbar.vue b/components/app/Appbar.vue
index 99ea37c5..9d8d24be 100644
--- a/components/app/Appbar.vue
+++ b/components/app/Appbar.vue
@@ -61,11 +61,7 @@ export default {
this.$store.commit('libraries/setShowModal', true)
},
back() {
- if (this.$route.name === 'audiobook-id-edit') {
- this.$router.push(`/audiobook/${this.$route.params.id}`)
- } else {
- this.$router.push('/bookshelf')
- }
+ window.history.back()
}
},
mounted() {}
diff --git a/package-lock.json b/package-lock.json
index 3b96407b..ace69487 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "audiobookshelf-app",
- "version": "v0.9.17-beta",
+ "version": "0.9.33-beta",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1010,6 +1010,11 @@
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-3.2.2.tgz",
"integrity": "sha512-+/qbSZIHPP1VndRUe5c6dgheLV0MgX9CXeUo7el8ODHgVrC2DXKhczgvs+EpTAmvS2VZFxzDeld7AMUmHybTcg=="
},
+ "@capacitor/app": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@capacitor/app/-/app-1.0.7.tgz",
+ "integrity": "sha512-7CcMGp9yshBR0fkmNPVsYmUUhlAQnJFCeJGJIF3862D5l+drBjEOE+QoGjiKtaqPriadkGCsoYVrX10yGULDpA=="
+ },
"@capacitor/cli": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-3.1.2.tgz",
diff --git a/package.json b/package.json
index f4d04dd6..5152f51d 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"dependencies": {
"@capacitor-community/sqlite": "^3.2.0",
"@capacitor/android": "^3.2.2",
+ "@capacitor/app": "^1.0.7",
"@capacitor/cli": "^3.1.2",
"@capacitor/core": "^3.2.2",
"@capacitor/dialog": "^1.0.3",
@@ -37,4 +38,4 @@
"@nuxtjs/tailwindcss": "^4.2.0",
"postcss": "^8.3.5"
}
-}
\ No newline at end of file
+}
diff --git a/plugins/init.client.js b/plugins/init.client.js
index cc3dedca..0935b955 100644
--- a/plugins/init.client.js
+++ b/plugins/init.client.js
@@ -1,6 +1,23 @@
import Vue from 'vue'
+import { App } from '@capacitor/app'
+import { Dialog } from '@capacitor/dialog'
import { formatDistance, format } from 'date-fns'
+App.addListener('backButton', async ({ canGoBack }) => {
+ if (!canGoBack) {
+ const { value } = await Dialog.confirm({
+ title: 'Confirm',
+ message: `Did you want to exit the app?`,
+ })
+ if (value) {
+ App.exitApp()
+ }
+
+ } else {
+ window.history.back()
+ }
+});
+
Vue.prototype.$eventBus = new Vue()
Vue.prototype.$isDev = process.env.NODE_ENV !== 'production'