@@ -17,16 +17,38 @@ import {
1717 ExceptionCode ,
1818 PluginListenerHandle ,
1919} from '@capacitor/core' ;
20- import { App , AppState } from '@capacitor/app' ;
20+ import { App , AppState , EdgeGestureListenerEvent } from '@capacitor/app' ;
2121import { AppLauncher } from '@capacitor/app-launcher' ;
2222
23+ function sortedStringify ( obj : unknown , indent : number = 2 ) : string {
24+ return JSON . stringify (
25+ obj ,
26+ ( key : string , value : unknown ) => {
27+ if ( value && typeof value === 'object' && ! Array . isArray ( value ) ) {
28+ return Object . keys ( value as object )
29+ . sort ( )
30+ . reduce < Record < string , unknown > > ( ( acc , k ) => {
31+ acc [ k ] = ( value as Record < string , unknown > ) [ k ] ;
32+ return acc ;
33+ } , { } ) ;
34+ }
35+ return value ;
36+ } ,
37+ indent ,
38+ ) ;
39+ }
40+
2341const AppPage : React . FC = ( ) => {
2442 const [ appInfoJson , setAppInfoJson ] = useState ( '' ) ;
43+ const [ gestureInfoJson , setGestureInfoJson ] = useState ( '' ) ;
44+ const [ edgeHandlingEnabled , setEdgeHandlingEnabled ] =
45+ useState < boolean > ( false ) ;
2546 let stateChangeHandler : PluginListenerHandle ;
2647 let pauseHandler : PluginListenerHandle ;
2748 let resumeHandler : PluginListenerHandle ;
2849 let urlOpenHandler : PluginListenerHandle ;
2950 let restoredResultHandler : PluginListenerHandle ;
51+ let edgeGestureHandler : PluginListenerHandle ;
3052
3153 useIonViewDidEnter ( ( ) => {
3254 setListeners ( ) ;
@@ -61,6 +83,14 @@ const AppPage: React.FC = () => {
6183 console . log ( 'Restored result:' , data ) ;
6284 } ,
6385 ) ;
86+
87+ edgeGestureHandler = await App . addListener (
88+ 'edgeGesture' ,
89+ ( data : EdgeGestureListenerEvent ) => {
90+ console . log ( 'gesture info' , data ) ;
91+ setGestureInfoJson ( sortedStringify ( data , 2 ) ) ;
92+ } ,
93+ ) ;
6494 } ;
6595
6696 const getLaunchUrl = async ( ) => {
@@ -123,12 +153,18 @@ const AppPage: React.FC = () => {
123153 setAppInfoJson ( JSON . stringify ( info , null , 2 ) ) ;
124154 } ;
125155
156+ const toggleEdgeGestureHandlers = async ( ) => {
157+ await App . toggleEdgeGestureHandler ( { enabled : ! edgeHandlingEnabled } ) ;
158+ setEdgeHandlingEnabled ( ! edgeHandlingEnabled ) ;
159+ } ;
160+
126161 useIonViewDidLeave ( ( ) => {
127162 stateChangeHandler . remove ( ) ;
128163 urlOpenHandler . remove ( ) ;
129164 restoredResultHandler . remove ( ) ;
130165 pauseHandler . remove ( ) ;
131166 resumeHandler . remove ( ) ;
167+ edgeGestureHandler . remove ( ) ;
132168 } ) ;
133169
134170 return (
@@ -168,29 +204,36 @@ const AppPage: React.FC = () => {
168204 < IonButton expand = "block" onClick = { getAppLanguage } >
169205 Get App Language
170206 </ IonButton >
171- < IonButton expand = "block" href = "https://flems.io/#0=N4IgzgpgNhDGAuEAmIBcIB0ALeBbKIANCAGYCWMYaA2qAHYCGuEamO+RIsA9nYn6wA8WAIwA+ADp1BDAARYAThBIBeCSDJ8IfVAHpdWbswDEASS18A3GFhYIzFT1wZYDAA4NYZeNwUArMAx3NwxEMHhgyw9YAGsGAHMIRyMXd09vXwCgtxCwiJzLT3gyXhUGOiQFbjIkDE1+eCCEEroMADVTAFEAdUttJEt1STpZWQAVCHDUWQB5N21ZAEEABWWpQV0GYY3RMU5IGGbeKnQAJlQRADYQAF9CeiYWdAwAzh4LeCE5RWU1LhTXNEMv5AsFQpN8m49AYjBAAPwkKq4FRICAQNxQTQxIZjToAZTGGy2+2gcGKx1YAAZUJcAOy3e4gRjMVguMBUYjvBqsW4AXRuQA" >
172- { /* If the link above ever expires, this is the HTML to test opening an intent for this app.
207+ < IonButton
208+ expand = "block"
209+ href = "https://flems.io/#0=N4IgzgpgNhDGAuEAmIBcIB0ALeBbKIANCAGYCWMYaA2qAHYCGuEamO+RIsA9nYn6wA8WAIwA+ADp1BDAARYAThBIBeCSDJ8IfVAHpdWbswDEASS18A3GFhYIzFT1wZYDAA4NYZeNwUArMAx3NwxEMHhgyw9YAGsGAHMIRyMXd09vXwCgtxCwiJzLT3gyXhUGOiQFbjIkDE1+eCCEEroMADVTAFEAdUttJEt1STpZWQAVCHDUWQB5N21ZAEEABWWpQV0GYY3RMU5IGGbeKnQAJlQRADYQAF9CeiYWdAwAzh4LeCE5RWU1LhTXNEMv5AsFQpN8m49AYjBAAPwkKq4FRICAQNxQTQxIZjToAZTGGy2+2gcGKx1YAAZUJcAOy3e4gRjMVguMBUYjvBqsW4AXRuQA" >
210+ { /* If the link above ever expires, this is the HTML to test opening an intent for this app.
173211 <h1>
174212 <a href="intent://home#Intent;scheme=com.capacitorjs.app.testapp;package=com.capacitorjs.app.testapp;action=android.intent.action.VIEW;end;">
175213 Test: Open APP
176214 </a>
177215 </h1> */ }
178216 Test Intents
179217 </ IonButton >
218+ < IonButton expand = "block" onClick = { toggleEdgeGestureHandlers } >
219+ Toggle `edgeGesture` Listener
220+ </ IonButton >
180221 < p >
181222 < a href = "tel:212-549-2543" > Telephone Test</ a >
182223 < a href = "mailto:name@email.com" > Email Test</ a >
183224 < a
184225 href = "https://capacitorjs.com/"
185226 target = "_blank"
186- rel = "noopener noreferrer"
187- >
227+ rel = "noopener noreferrer" >
188228 Read more
189229 </ a >
190230 </ p >
191231 < div >
192232 < pre > { appInfoJson } </ pre >
193233 </ div >
234+ < div >
235+ < pre > { gestureInfoJson } </ pre >
236+ </ div >
194237 </ IonContent >
195238 </ IonPage >
196239 ) ;
0 commit comments