Refactored i18n configuration, replacing `DEFAULT_LOCALE` with `DEFAULT_LOCALE_FALLBACK` and enhancing environment-based locale validation. Improved cookie persistence for cart and wishlist, ensuring fallback handling for unauthenticated users. Enhancements: - Added `createProjectKey` utility for consistent project key generation. - Reworked cart and wishlist composables (`useOrderOverwrite`, `useWishlistOverwrite`) to decouple product identifier and handle cookies robustly. - Centralized `DEFAULT_LOCALE` logic for better maintainability. - Refined `useOrderSync` and `useWishlistSync` for clean synchronization across auth states. - Updated SCSS in hero and header styles for alignment corrections. Breaking Changes: `DEFAULT_LOCALE` constant removed; replaced with runtime config and fallback logic. Consumers must adapt to `DEFAULT_LOCALE_FALLBACK` and `$appHelpers.DEFAULT_LOCALE`.
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { COOKIE_KEY_TEMPLATES, DEFAULT_LOCALE_FALLBACK, SUPPORTED_LOCALES } from '~/constants';
|
|
import { createProjectKey } from "~/utils/transliterator";
|
|
|
|
export default defineNuxtPlugin(() => {
|
|
const runtimeConfig = useRuntimeConfig();
|
|
const APP_NAME = runtimeConfig.public.schonProjectName as string;
|
|
const APP_NAME_KEY = createProjectKey(APP_NAME);
|
|
|
|
const envLocale = runtimeConfig.public.schonLanguageCode as string;
|
|
const isValid = SUPPORTED_LOCALES.some(locale => locale.code === envLocale);
|
|
const DEFAULT_LOCALE = isValid ? envLocale : DEFAULT_LOCALE_FALLBACK;
|
|
|
|
return {
|
|
provide: {
|
|
appHelpers: {
|
|
APP_DOMAIN: runtimeConfig.public.schonBaseDomain,
|
|
APP_NAME,
|
|
APP_NAME_KEY,
|
|
DEFAULT_LOCALE,
|
|
COOKIES_LOCALE_KEY: COOKIE_KEY_TEMPLATES.LOCALE(APP_NAME_KEY),
|
|
COOKIES_REFRESH_TOKEN_KEY: COOKIE_KEY_TEMPLATES.REFRESH_TOKEN(APP_NAME_KEY),
|
|
COOKIES_ACCESS_TOKEN_KEY: COOKIE_KEY_TEMPLATES.ACCESS_TOKEN(APP_NAME_KEY),
|
|
COOKIES_WISHLIST_KEY: COOKIE_KEY_TEMPLATES.WISHLIST_TOKEN(APP_NAME_KEY),
|
|
COOKIES_CART_KEY: COOKIE_KEY_TEMPLATES.CART_TOKEN(APP_NAME_KEY),
|
|
COOKIES_PRODUCT_VIEW_KEY: COOKIE_KEY_TEMPLATES.PRODUCT_VIEW(APP_NAME_KEY),
|
|
COOKIES_THEME_KEY: COOKIE_KEY_TEMPLATES.THEME(APP_NAME_KEY),
|
|
},
|
|
},
|
|
};
|
|
});
|