summaryrefslogtreecommitdiff
path: root/packages/frontend-shared/js/use-document-visibility.ts
blob: b1197e68dae2bcdedeefb09de5cf7b3202d289b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import { onMounted, onUnmounted, ref } from 'vue';
import type { Ref } from 'vue';

export function useDocumentVisibility(): Ref<DocumentVisibilityState> {
	const visibility = ref(document.visibilityState);

	const onChange = (): void => {
		visibility.value = document.visibilityState;
	};

	onMounted(() => {
		document.addEventListener('visibilitychange', onChange);
	});

	onUnmounted(() => {
		document.removeEventListener('visibilitychange', onChange);
	});

	return visibility;
}