fix(ui): inject window.FRONTEND_TYPE from server + rename SHOP→STOREFRONT
Server now injects window.FRONTEND_TYPE in all base templates via get_context_for_frontend(). Both log-config.js and dev-toolbar.js read this instead of guessing from URL paths, fixing: - UNKNOWN prefix on merchant pages - Incorrect detection on custom domains/subdomains in prod Also adds frontend_type to login page contexts (admin, merchant, store). Renames all [SHOP] logger prefixes to [STOREFRONT] across 7 files (storefront-layout.js + 6 storefront templates). Adds 'merchant' and 'storefront' to log-config.js frontend detection, log levels, and logger selection. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -286,11 +286,11 @@
|
||||
}
|
||||
|
||||
function detectFrontend() {
|
||||
// Prefer server-injected value (set in base templates)
|
||||
if (window.FRONTEND_TYPE) return window.FRONTEND_TYPE;
|
||||
|
||||
// Fallback for pages without base template (e.g., API docs)
|
||||
var path = window.location.pathname;
|
||||
if (path.startsWith('/store/') || path === '/store') return 'store';
|
||||
if (path.startsWith('/admin/') || path === '/admin') return 'admin';
|
||||
if (path.indexOf('/merchants/') !== -1) return 'merchant';
|
||||
if (path.indexOf('/storefront/') !== -1) return 'storefront';
|
||||
if (path.startsWith('/api/')) return 'api';
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
@@ -43,14 +43,11 @@ const LOG_LEVELS = {
|
||||
|
||||
/**
|
||||
* Detect which frontend we're in based on URL path
|
||||
* @returns {string} 'admin' | 'store' | 'shop' | 'unknown'
|
||||
* @returns {string} 'admin' | 'store' | 'merchant' | 'storefront' | 'unknown'
|
||||
*/
|
||||
function detectFrontend() {
|
||||
const path = window.location.pathname;
|
||||
|
||||
if (path.startsWith('/admin')) return 'admin';
|
||||
if (path.startsWith('/store')) return 'store';
|
||||
if (path.startsWith('/shop')) return 'shop';
|
||||
// Prefer server-injected value (set in base templates before this script loads)
|
||||
if (window.FRONTEND_TYPE) return window.FRONTEND_TYPE;
|
||||
|
||||
return 'unknown';
|
||||
}
|
||||
@@ -94,9 +91,13 @@ const DEFAULT_LOG_LEVELS = {
|
||||
development: LOG_LEVELS.DEBUG,
|
||||
production: LOG_LEVELS.INFO // Stores might need more logging
|
||||
},
|
||||
shop: {
|
||||
merchant: {
|
||||
development: LOG_LEVELS.DEBUG,
|
||||
production: LOG_LEVELS.ERROR // Shop frontend: minimal logging in production
|
||||
production: LOG_LEVELS.INFO // Merchant portal: same as store
|
||||
},
|
||||
storefront: {
|
||||
development: LOG_LEVELS.DEBUG,
|
||||
production: LOG_LEVELS.ERROR // Storefront: minimal logging in production
|
||||
},
|
||||
unknown: {
|
||||
development: LOG_LEVELS.DEBUG,
|
||||
@@ -275,10 +276,10 @@ const storeLoggers = {
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
// PRE-CONFIGURED LOGGERS FOR SHOP FRONTEND
|
||||
// PRE-CONFIGURED LOGGERS FOR STOREFRONT
|
||||
// ============================================================================
|
||||
|
||||
const shopLoggers = {
|
||||
const storefrontLoggers = {
|
||||
// Product browsing
|
||||
catalog: createLogger('CATALOG', ACTIVE_LOG_LEVEL),
|
||||
product: createLogger('PRODUCT', ACTIVE_LOG_LEVEL),
|
||||
@@ -309,8 +310,10 @@ function getLoggers() {
|
||||
return adminLoggers;
|
||||
case 'store':
|
||||
return storeLoggers;
|
||||
case 'shop':
|
||||
return shopLoggers;
|
||||
case 'merchant':
|
||||
return storeLoggers; // Merchant portal reuses store logger set
|
||||
case 'storefront':
|
||||
return storefrontLoggers;
|
||||
default:
|
||||
return {}; // Empty object, use createLogger instead
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user