From 401a36611f4877c3c18965ba434223d0c5ed8d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20G=C5=82owala?= Date: Thu, 29 Aug 2024 11:25:45 +0200 Subject: [PATCH] refactor: use single return in plugin --- src/runtime/plugin.ts | 51 +++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/src/runtime/plugin.ts b/src/runtime/plugin.ts index 8e015d1..793f92d 100644 --- a/src/runtime/plugin.ts +++ b/src/runtime/plugin.ts @@ -1,43 +1,38 @@ -import { reactive } from 'vue' +import type { Device } from '../types' import generateFlags from './generateFlags' -import { defineNuxtPlugin, useRuntimeConfig, useRequestHeaders } from '#imports' -// https://github.com/nuxt/module-builder/issues/141 -import type {} from 'nuxt/app' +import { defineNuxtPlugin, reactive, useRequestHeaders, useRuntimeConfig } from '#imports' -export default defineNuxtPlugin((nuxtApp) => { +export default defineNuxtPlugin(() => { const runtimeConfig = useRuntimeConfig() - const defaultUserAgent = runtimeConfig.public?.device?.defaultUserAgent + const defaultUserAgent = runtimeConfig.public.device.defaultUserAgent - // Server Side - if (nuxtApp.ssrContext) { - const headers = useRequestHeaders() + let flags: Device - const userAgent = headers['user-agent'] || defaultUserAgent || '' + if (import.meta.server) { + const headers = useRequestHeaders() - const flags = reactive(generateFlags(userAgent, headers)) + const userAgent = headers['user-agent'] || defaultUserAgent - return { - provide: { - device: flags, - }, - } + flags = reactive(generateFlags(userAgent, headers)) } + else { + const userAgent = navigator.userAgent || defaultUserAgent - // Client Side - const userAgent = navigator.userAgent || defaultUserAgent || '' - const flags = reactive(generateFlags(userAgent)) + flags = reactive(generateFlags(userAgent)) - if (runtimeConfig.public?.device?.refreshOnResize) { - window.addEventListener('resize', () => { - setTimeout(() => { - const newFlags = generateFlags(navigator.userAgent || userAgent) - Object.entries(newFlags).forEach(([key, value]) => { + if (runtimeConfig.public.device.refreshOnResize) { + window.addEventListener('resize', () => { + setTimeout(() => { + const newFlags = generateFlags(navigator.userAgent || userAgent) + + Object.entries(newFlags).forEach(([key, value]) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - (flags as any)[key] = value - }) - }, 50) - }) + (flags as any)[key] = value + }) + }, 50) + }) + } } return {