From b2fde51bfb3190f5c48f51847333aac88a9685de Mon Sep 17 00:00:00 2001 From: KryptoPX Date: Tue, 29 Nov 2022 08:51:27 +0100 Subject: [PATCH 1/3] Fix android back action --- packages/app/package.json | 1 + packages/app/src/App.jsx | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/app/package.json b/packages/app/package.json index c9644eec..c9596703 100755 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -24,6 +24,7 @@ "dependencies": { "@ant-design/icons": "4.7.0", "@capacitor/android": "^4.5.0", + "@capacitor/app": "^4.1.1", "@capacitor/cli": "^4.5.0", "@capacitor/core": "^4.5.0", "@capacitor/haptics": "1.1.4", diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx index 6e91630c..0e1000c5 100755 --- a/packages/app/src/App.jsx +++ b/packages/app/src/App.jsx @@ -54,6 +54,7 @@ import { Helmet } from "react-helmet" import * as antd from "antd" import { Toast } from "antd-mobile" import { StatusBar, Style } from "@capacitor/status-bar" +import { App as CapacitorApp } from "@capacitor/app" import { Translation } from "react-i18next" import { Session, User } from "models" @@ -105,6 +106,17 @@ class App extends React.Component { // append var to #root document.getElementById("root").classList.add("electron") } + + if (this.publicMethods.isAppCapacitor()) { + // prevent back button to close app + CapacitorApp.addListener('backButton', ({ canGoBack }) => { + if (!canGoBack) { + CapacitorApp.exitApp(); + } else { + window.history.back(); + } + }); + } } static publicEvents = { @@ -316,7 +328,7 @@ class App extends React.Component { escClosable: true, }) } - + return window.app.ModalController.open((props) => ) }, openSettings: (goTo) => { From dc57ab1e34ecdc031a431b82f3884300c311755d Mon Sep 17 00:00:00 2001 From: KryptoPX Date: Tue, 29 Nov 2022 16:01:09 +0100 Subject: [PATCH 2/3] moved listener to componentDidMount --- packages/app/src/App.jsx | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx index 0e1000c5..f5af5326 100755 --- a/packages/app/src/App.jsx +++ b/packages/app/src/App.jsx @@ -106,17 +106,6 @@ class App extends React.Component { // append var to #root document.getElementById("root").classList.add("electron") } - - if (this.publicMethods.isAppCapacitor()) { - // prevent back button to close app - CapacitorApp.addListener('backButton', ({ canGoBack }) => { - if (!canGoBack) { - CapacitorApp.exitApp(); - } else { - window.history.back(); - } - }); - } } static publicEvents = { @@ -431,6 +420,14 @@ class App extends React.Component { StatusBar.setOverlaysWebView({ overlay: true }) //window.app.hideStatusBar() + + CapacitorApp.addListener('backButton', ({ canGoBack }) => { + if (!canGoBack) { + CapacitorApp.exitApp(); + } else { + window.history.back(); + } + }); } const userAgentPlatform = window.navigator.userAgent.toLowerCase() From afc94d36fa29f68cc22d01a2d2986da172d6cebf Mon Sep 17 00:00:00 2001 From: KryptoPX Date: Tue, 29 Nov 2022 18:10:32 +0100 Subject: [PATCH 3/3] add build config on capacitor app --- packages/app/android/app/capacitor.build.gradle | 1 + packages/app/android/capacitor.settings.gradle | 3 +++ packages/app/ios/App/Podfile | 1 + 3 files changed, 5 insertions(+) diff --git a/packages/app/android/app/capacitor.build.gradle b/packages/app/android/app/capacitor.build.gradle index a1310b73..638b0f00 100644 --- a/packages/app/android/app/capacitor.build.gradle +++ b/packages/app/android/app/capacitor.build.gradle @@ -9,6 +9,7 @@ android { apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { + implementation project(':capacitor-app') implementation project(':capacitor-haptics') implementation project(':capacitor-push-notifications') implementation project(':capacitor-status-bar') diff --git a/packages/app/android/capacitor.settings.gradle b/packages/app/android/capacitor.settings.gradle index 64b1029e..919a9ef8 100644 --- a/packages/app/android/capacitor.settings.gradle +++ b/packages/app/android/capacitor.settings.gradle @@ -2,6 +2,9 @@ include ':capacitor-android' project(':capacitor-android').projectDir = new File('../../../node_modules/@capacitor/android/capacitor') +include ':capacitor-app' +project(':capacitor-app').projectDir = new File('../../../node_modules/@capacitor/app/android') + include ':capacitor-haptics' project(':capacitor-haptics').projectDir = new File('../../../node_modules/@capacitor/haptics/android') diff --git a/packages/app/ios/App/Podfile b/packages/app/ios/App/Podfile index bc649f2f..29d575ba 100644 --- a/packages/app/ios/App/Podfile +++ b/packages/app/ios/App/Podfile @@ -11,6 +11,7 @@ install! 'cocoapods', :disable_input_output_paths => true def capacitor_pods pod 'Capacitor', :path => '../../../../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../../../../node_modules/@capacitor/ios' + pod 'CapacitorApp', :path => '../../../../node_modules/@capacitor/app' pod 'CapacitorHaptics', :path => '../../../../node_modules/@capacitor/haptics' pod 'CapacitorPushNotifications', :path => '../../../../node_modules/@capacitor/push-notifications' pod 'CapacitorStatusBar', :path => '../../../../node_modules/@capacitor/status-bar'