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,21 +202,25 @@ 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')
.then(() => {
document.addEventListener('visibilitychange', async () => {
if (document.visibilityState === 'visible') { if (document.visibilityState === 'visible') {
navigator.wakeLock.request('screen'); navigator.wakeLock.request('screen');
} }
}); });
}) if (defaultStore.state.keepScreenOn && 'wakeLock' in navigator) {
navigator.wakeLock.request('screen')
.then(onVisibilityChange)
.catch(() => { .catch(() => {
// If Permission fails on an AppleDevice such as Safari // 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
if ($i && $i.token) { if ($i && $i.token) {