diff --git a/package-lock.json b/package-lock.json index 3ad55dc1a1..e8f88783d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@shiguredo/virtual-background": "^2023.2.0", "@traptitech/traq": "^3.26.1-1", "@traptitech/traq-markdown-it": "^7.0.2", + "@vueuse/core": "^14.1.0", "autosize": "^6.0.1", "browser-image-compression": "^2.0.2", "cropperjs": "^1.6.2", @@ -4806,6 +4807,12 @@ "csstype": "^3.1.0" } }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@types/webappsec-credential-management": { "version": "0.6.9", "resolved": "https://registry.npmjs.org/@types/webappsec-credential-management/-/webappsec-credential-management-0.6.9.tgz", @@ -5569,6 +5576,44 @@ "vue-component-type-helpers": "^2.0.0" } }, + "node_modules/@vueuse/core": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.1.0.tgz", + "integrity": "sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.1.0", + "@vueuse/shared": "14.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.1.0.tgz", + "integrity": "sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.1.0.tgz", + "integrity": "sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", diff --git a/package.json b/package.json index 2f2883344a..781782293e 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@shiguredo/virtual-background": "^2023.2.0", "@traptitech/traq": "^3.26.1-1", "@traptitech/traq-markdown-it": "^7.0.2", + "@vueuse/core": "^14.1.0", "autosize": "^6.0.1", "browser-image-compression": "^2.0.2", "cropperjs": "^1.6.2", diff --git a/src/App.vue b/src/App.vue index ecb81852e3..e73a240deb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -18,23 +18,17 @@ import { computed, watch, watchEffect } from 'vue' import useDocumentTitle from '/@/composables/document/useDocumentTitle' import useHtmlDataset from '/@/composables/document/useHtmlDataset' import { useThemeVariables } from '/@/composables/document/useThemeVariables' +import { useBeforeUnload } from '/@/composables/dom/useBeforeUnload' +import useResponsive from '/@/composables/useResponsive' import { useBrowserSettings } from '/@/store/app/browserSettings' import { useThemeSettings } from '/@/store/app/themeSettings' import { useTts } from '/@/store/app/tts' -import { useResponsiveStore } from '/@/store/ui/responsive' const useQallConfirmer = () => { - window.addEventListener('beforeunload', event => { - // TODO: Qall - // ここは適切な変数を置く - const isCurrentDevice = computed(() => false) - if (isCurrentDevice.value) { - const unloadMessage = 'Qall中ですが本当に終了しますか?' - event.preventDefault() - event.returnValue = unloadMessage - return unloadMessage - } - }) + //TODO: 適切な変数にする + const isCurrentDevice = computed(() => false) + + useBeforeUnload(isCurrentDevice, 'Qall中ですが本当に終了しますか?') } const useThemeObserver = () => { @@ -106,7 +100,7 @@ watch( useTts() -const { isMobile } = useResponsiveStore() +const { isMobile } = useResponsive() useDocumentTitle() useQallConfirmer() diff --git a/src/components/Main/CommandPalette/CommandPalette.vue b/src/components/Main/CommandPalette/CommandPalette.vue index 6df755340d..15faac6c8f 100644 --- a/src/components/Main/CommandPalette/CommandPalette.vue +++ b/src/components/Main/CommandPalette/CommandPalette.vue @@ -19,14 +19,14 @@ import { computed } from 'vue' import ClickOutside from '/@/components/UI/ClickOutside' +import useResponsive from '/@/composables/useResponsive' import { useCommandPalette } from '/@/store/app/commandPalette' -import { useResponsiveStore } from '/@/store/ui/responsive' import CommandPaletteInput from './CommandPaletteInput.vue' import SearchResult from './SearchResult.vue' import SearchSuggestion from './SearchSuggestion.vue' -const { isMobile } = useResponsiveStore() +const { isMobile } = useResponsive() const { mode, query, closeCommandPalette } = useCommandPalette() type SupplementalViewType = 'search-result' | 'search-suggestion' | undefined diff --git a/src/components/Main/CommandPalette/CommandPaletteInput.vue b/src/components/Main/CommandPalette/CommandPaletteInput.vue index f136cf966c..f3ec324b17 100644 --- a/src/components/Main/CommandPalette/CommandPaletteInput.vue +++ b/src/components/Main/CommandPalette/CommandPaletteInput.vue @@ -28,10 +28,10 @@ import { computed, onMounted, shallowRef, watch } from 'vue' import AIcon from '/@/components/UI/AIcon.vue' import CloseButton from '/@/components/UI/CloseButton.vue' +import useResponsive from '/@/composables/useResponsive' import { useCommandPalette } from '/@/store/app/commandPalette' -import { useResponsiveStore } from '/@/store/ui/responsive' -const { isMobile } = useResponsiveStore() +const { isMobile } = useResponsive() const inputRef = shallowRef(null) const focus = () => { inputRef.value?.focus() diff --git a/src/components/Main/CommandPalette/SearchSuggestion.vue b/src/components/Main/CommandPalette/SearchSuggestion.vue index 61dee49063..1a0ba6a58e 100644 --- a/src/components/Main/CommandPalette/SearchSuggestion.vue +++ b/src/components/Main/CommandPalette/SearchSuggestion.vue @@ -30,8 +30,8 @@