fix(frontend): WebKitブラウザー上でも「デバイスの画面を常にオンにする」機能が効くように (#12484)

* fix(frontend): WebKitブラウザー上でもkeepScreenOnが効くように

* chore: add comment
This commit is contained in:
zyoshoka 2023-11-29 10:29:24 +09:00 committed by GitHub
parent 4e882414b2
commit d5deef5699
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -202,20 +202,24 @@ export async function common(createVue: () => App<Element>) {
} }
}, { immediate: true }); }, { immediate: true });
if (defaultStore.state.keepScreenOn) { // Keep screen on
if ('wakeLock' in navigator) { const onVisibilityChange = () => document.addEventListener('visibilitychange', () => {
navigator.wakeLock.request('screen') if (document.visibilityState === 'visible') {
.then(() => { navigator.wakeLock.request('screen');
document.addEventListener('visibilitychange', async () => {
if (document.visibilityState === 'visible') {
navigator.wakeLock.request('screen');
}
});
})
.catch(() => {
// If Permission fails on an AppleDevice such as Safari
});
} }
});
if (defaultStore.state.keepScreenOn && 'wakeLock' in navigator) {
navigator.wakeLock.request('screen')
.then(onVisibilityChange)
.catch(() => {
// On WebKit-based browsers, user activation is required to send wake lock request
// https://webkit.org/blog/13862/the-user-activation-api/
document.addEventListener(
'click',
() => navigator.wakeLock.request('screen').then(onVisibilityChange),
{ once: true },
);
});
} }
//#region Fetch user //#region Fetch user