|
1 | | -import { reactive } from 'vue' |
| 1 | +import type { Device } from '../types' |
2 | 2 | import generateFlags from './generateFlags' |
3 | | -import { defineNuxtPlugin, useRuntimeConfig, useRequestHeaders } from '#imports' |
4 | | -// https://github.com/nuxt/module-builder/issues/141 |
5 | | -import type {} from 'nuxt/app' |
| 3 | +import { defineNuxtPlugin, reactive, useRequestHeaders, useRuntimeConfig } from '#imports' |
6 | 4 |
|
7 | | -export default defineNuxtPlugin((nuxtApp) => { |
| 5 | +export default defineNuxtPlugin(() => { |
8 | 6 | const runtimeConfig = useRuntimeConfig() |
9 | 7 |
|
10 | | - const defaultUserAgent = runtimeConfig.public?.device?.defaultUserAgent |
| 8 | + const defaultUserAgent = runtimeConfig.public.device.defaultUserAgent |
11 | 9 |
|
12 | | - // Server Side |
13 | | - if (nuxtApp.ssrContext) { |
14 | | - const headers = useRequestHeaders() |
| 10 | + let flags: Device |
15 | 11 |
|
16 | | - const userAgent = headers['user-agent'] || defaultUserAgent || '' |
| 12 | + if (import.meta.server) { |
| 13 | + const headers = useRequestHeaders() |
17 | 14 |
|
18 | | - const flags = reactive(generateFlags(userAgent, headers)) |
| 15 | + const userAgent = headers['user-agent'] || defaultUserAgent |
19 | 16 |
|
20 | | - return { |
21 | | - provide: { |
22 | | - device: flags, |
23 | | - }, |
24 | | - } |
| 17 | + flags = reactive(generateFlags(userAgent, headers)) |
25 | 18 | } |
| 19 | + else { |
| 20 | + const userAgent = navigator.userAgent || defaultUserAgent |
26 | 21 |
|
27 | | - // Client Side |
28 | | - const userAgent = navigator.userAgent || defaultUserAgent || '' |
29 | | - const flags = reactive(generateFlags(userAgent)) |
| 22 | + flags = reactive(generateFlags(userAgent)) |
30 | 23 |
|
31 | | - if (runtimeConfig.public?.device?.refreshOnResize) { |
32 | | - window.addEventListener('resize', () => { |
33 | | - setTimeout(() => { |
34 | | - const newFlags = generateFlags(navigator.userAgent || userAgent) |
35 | | - Object.entries(newFlags).forEach(([key, value]) => { |
| 24 | + if (runtimeConfig.public.device.refreshOnResize) { |
| 25 | + window.addEventListener('resize', () => { |
| 26 | + setTimeout(() => { |
| 27 | + const newFlags = generateFlags(navigator.userAgent || userAgent) |
| 28 | + |
| 29 | + Object.entries(newFlags).forEach(([key, value]) => { |
36 | 30 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
37 | | - (flags as any)[key] = value |
38 | | - }) |
39 | | - }, 50) |
40 | | - }) |
| 31 | + (flags as any)[key] = value |
| 32 | + }) |
| 33 | + }, 50) |
| 34 | + }) |
| 35 | + } |
41 | 36 | } |
42 | 37 |
|
43 | 38 | return { |
|
0 commit comments