From d3a2c79a55ba3193176e8ca338dddef8cbdb7222 Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 10 Dec 2021 16:31:54 -0600 Subject: [PATCH] Fix:Native back button go back or ask before quitting #52, Fix:Appbar back button --- android/app/capacitor.build.gradle | 1 + android/app/src/main/AndroidManifest.xml | 8 ++++++++ .../app/src/main/assets/capacitor.plugins.json | 4 ++++ android/capacitor.settings.gradle | 3 +++ components/app/Appbar.vue | 6 +----- package-lock.json | 7 ++++++- package.json | 3 ++- plugins/init.client.js | 17 +++++++++++++++++ 8 files changed, 42 insertions(+), 7 deletions(-) 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'