From 21a7348bebb0167b887628eaee53889062ca4baf Mon Sep 17 00:00:00 2001 From: Steven Date: Mon, 24 Nov 2025 10:26:39 -0500 Subject: [PATCH] Enhance WebSocketBroadcastService and ThemeStudio logging for better diagnostics. Updated WebSocket management endpoint handling and added detailed logging for missing endpoints in ThemeStudio component. --- .../services/websocket-broadcast.service.ts | 16 +++++++++++++--- app/store/[slug]/studio/studioClient.tsx | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/api/stores/_lib/dev-server/infrastructure/services/websocket-broadcast.service.ts b/app/api/stores/_lib/dev-server/infrastructure/services/websocket-broadcast.service.ts index a5a0d96f..4769e313 100644 --- a/app/api/stores/_lib/dev-server/infrastructure/services/websocket-broadcast.service.ts +++ b/app/api/stores/_lib/dev-server/infrastructure/services/websocket-broadcast.service.ts @@ -29,10 +29,13 @@ export class WebSocketBroadcastService { private readonly managementApiClient: ApiGatewayManagementApiClient | null; constructor() { - const managementEndpoint = outputs.custom?.APIs?.WebSocketDevServerApi?.managementEndpoint; + const websocketConfig = outputs.custom?.APIs?.WebSocketDevServerApi; + const managementEndpoint = websocketConfig?.managementEndpoint; if (!managementEndpoint) { logger.warn( - 'WebSocket management endpoint not found. WebSocket broadcast will be disabled.', + `WebSocket management endpoint not found. WebSocket broadcast disabled. Config snapshot: ${JSON.stringify( + websocketConfig || {} + )}`, 'WebSocketBroadcastService' ); this.managementApiClient = null; @@ -42,6 +45,10 @@ export class WebSocketBroadcastService { this.managementApiClient = new ApiGatewayManagementApiClient({ endpoint: managementEndpoint, }); + logger.info( + `WebSocketBroadcastService initialized with management endpoint ${managementEndpoint}`, + 'WebSocketBroadcastService' + ); } /** @@ -49,7 +56,10 @@ export class WebSocketBroadcastService { */ async broadcastMessage(storeId: string, templateType: TemplateType, message: string): Promise { if (!this.managementApiClient) { - logger.warn('WebSocket broadcast service is not available', 'WebSocketBroadcastService'); + logger.warn( + `WebSocket broadcast service is not available (storeId=${storeId}, templateType=${templateType})`, + 'WebSocketBroadcastService' + ); return; } diff --git a/app/store/[slug]/studio/studioClient.tsx b/app/store/[slug]/studio/studioClient.tsx index 5513105e..91bc0aa8 100644 --- a/app/store/[slug]/studio/studioClient.tsx +++ b/app/store/[slug]/studio/studioClient.tsx @@ -58,6 +58,22 @@ export default function StudioClient() { return outputs.custom?.APIs?.WebSocketDevServerApi?.endpoint; }, []); + useMemo(() => { + if (!websocketEndpoint) { + console.warn('[ThemeStudio] WebSocket endpoint missing in amplify_outputs.json', { + outputsWebsocketConfig: outputs.custom?.APIs?.WebSocketDevServerApi, + env: process.env.NODE_ENV, + storeId, + }); + } else { + console.info('[ThemeStudio] WebSocket endpoint detected', { + websocketEndpoint, + env: process.env.NODE_ENV, + storeId, + }); + } + }, [websocketEndpoint, storeId]); + if (loading || !domain) { return ; }