Skip to content

Commit 46f93cb

Browse files
committed
feat: add status bar events
1 parent 915280e commit 46f93cb

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

src/pages/StatusBar.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,45 @@ import {
99
IonTitle,
1010
IonToolbar,
1111
useIonViewDidEnter,
12+
useIonViewDidLeave,
1213
} from '@ionic/react';
1314
import React, { useState } from 'react';
14-
import { Capacitor } from '@capacitor/core';
15-
import { StatusBar, Style } from '@capacitor/status-bar';
15+
import { Capacitor, PluginListenerHandle } from '@capacitor/core';
16+
import { StatusBar, StatusBarInfo, Style } from '@capacitor/status-bar';
1617

1718
const StatusBarPage: React.FC = () => {
1819
const [statusbarInfoJson, setStatusbarInfoJson] = useState('');
1920
const [showButtons, setShowButtons] = useState(true);
21+
let visibilityChangedHandler: PluginListenerHandle;
22+
let overlayChangedHandler: PluginListenerHandle;
2023

2124
useIonViewDidEnter(() => {
2225
if (Capacitor.isPluginAvailable('StatusBar')) {
2326
window.addEventListener('statusTap', function () {
2427
console.log('statusbar tapped');
2528
});
29+
setListeners();
2630
} else {
2731
setShowButtons(false);
2832
}
2933
});
3034

35+
const setListeners = async () => {
36+
visibilityChangedHandler = await StatusBar.addListener(
37+
'statusBarVisibilityChanged',
38+
(info: StatusBarInfo) => {
39+
console.log('status bar visibility changed', info);
40+
},
41+
);
42+
43+
overlayChangedHandler = await StatusBar.addListener(
44+
'statusBarOverlayChanged',
45+
(info: StatusBarInfo) => {
46+
console.log('status bar overlay changed', info);
47+
},
48+
);
49+
};
50+
3151
const changeStatusBar = async () => {
3252
StatusBar.setStyle({
3353
style: Style.Default,
@@ -83,6 +103,11 @@ const StatusBarPage: React.FC = () => {
83103
setStatusbarInfoJson(JSON.stringify(info, null, 2));
84104
};
85105

106+
useIonViewDidLeave(() => {
107+
visibilityChangedHandler.remove();
108+
overlayChangedHandler.remove();
109+
});
110+
86111
return (
87112
<IonPage>
88113
<IonHeader>

0 commit comments

Comments
 (0)