@@ -13,6 +13,8 @@ import {
1313 CodeFixSuggestionAllMessage ,
1414 CodeSuggestionAcceptedMessage ,
1515 CodeSuggestionRejectedMessage ,
16+ DataRequestMessage ,
17+ DataResponseMessage ,
1618 DiagramDisplayMessage ,
1719 DownloadChatMessage ,
1820 DownloadDumpMessage ,
@@ -424,6 +426,24 @@ class IframeCommService {
424426 this . sendMessage ( message ) ;
425427 }
426428
429+ public sendAssetsUpdated ( projectId : string , assetType : "variables" | "connections" | "triggers" ) : void {
430+ const message = {
431+ type : MessageTypes . ASSET_UPDATED ,
432+ source : CONFIG . APP_SOURCE ,
433+ data : {
434+ projectId,
435+ assetType,
436+ } ,
437+ } ;
438+
439+ LoggerService . debug (
440+ namespaces . iframeCommService ,
441+ `Sending assets updated notification: ${ assetType } for project ${ projectId } `
442+ ) ;
443+
444+ this . sendMessage ( message ) ;
445+ }
446+
427447 public async requestData < T > ( resource : string , originalRequestId ?: string ) : Promise < T > {
428448 if ( ! this . isConnected ) {
429449 await this . waitForConnection ( ) ;
@@ -669,7 +689,7 @@ class IframeCommService {
669689 case MessageTypes . DISPLAY_DIAGRAM :
670690 this . handleDiagramDisplayMessage ( message as DiagramDisplayMessage ) ;
671691 break ;
672- case MessageTypes . VAR_UPDATED :
692+ case MessageTypes . ASSET_UPDATED :
673693 this . handleVarUpdatedMessage ( message as VarUpdatedMessage ) ;
674694 break ;
675695 case MessageTypes . REFRESH_DEPLOYMENTS :
@@ -690,6 +710,12 @@ class IframeCommService {
690710 case MessageTypes . DOWNLOAD_CHAT :
691711 this . handleDownloadChatMessage ( message as DownloadChatMessage ) ;
692712 break ;
713+ case MessageTypes . DATA_REQUEST :
714+ this . handleDataRequestMessage ( message as DataRequestMessage ) ;
715+ break ;
716+ case MessageTypes . DATA_RESPONSE :
717+ this . handleDataResponseMessage ( message as DataResponseMessage ) ;
718+ break ;
693719 }
694720
695721 this . listeners
@@ -1101,5 +1127,109 @@ class IframeCommService {
11011127 ) ;
11021128 }
11031129 }
1130+
1131+ private async handleDataRequestMessage ( message : DataRequestMessage ) : Promise < void > {
1132+ const { requestId, resource } = message . data ;
1133+
1134+ try {
1135+ let data : unknown ;
1136+
1137+ switch ( resource ) {
1138+ case "variables" :
1139+ case "vars" : {
1140+ const { useCacheStore } = await import ( "@src/store/cache/useCacheStore" ) ;
1141+ const { variables, currentProjectId } = useCacheStore . getState ( ) ;
1142+ if ( currentProjectId ) {
1143+ // Ensure we have the latest variables
1144+ await useCacheStore . getState ( ) . fetchVariables ( currentProjectId , true ) ;
1145+ data = useCacheStore . getState ( ) . variables ;
1146+ } else {
1147+ data = variables ;
1148+ }
1149+ break ;
1150+ }
1151+ case "connections" : {
1152+ const { useCacheStore } = await import ( "@src/store/cache/useCacheStore" ) ;
1153+ const { connections, currentProjectId } = useCacheStore . getState ( ) ;
1154+ if ( currentProjectId ) {
1155+ // Ensure we have the latest connections
1156+ await useCacheStore . getState ( ) . fetchConnections ( currentProjectId , true ) ;
1157+ data = useCacheStore . getState ( ) . connections ;
1158+ } else {
1159+ data = connections ;
1160+ }
1161+ break ;
1162+ }
1163+ case "triggers" : {
1164+ const { useCacheStore } = await import ( "@src/store/cache/useCacheStore" ) ;
1165+ const { triggers, currentProjectId } = useCacheStore . getState ( ) ;
1166+ if ( currentProjectId ) {
1167+ // Ensure we have the latest triggers
1168+ await useCacheStore . getState ( ) . fetchTriggers ( currentProjectId , true ) ;
1169+ data = useCacheStore . getState ( ) . triggers ;
1170+ } else {
1171+ data = triggers ;
1172+ }
1173+ break ;
1174+ }
1175+ case "project" : {
1176+ const { useCacheStore } = await import ( "@src/store/cache/useCacheStore" ) ;
1177+ const { currentProjectId } = useCacheStore . getState ( ) ;
1178+ if ( currentProjectId ) {
1179+ const { useProjectStore } = await import ( "@src/store" ) ;
1180+ const project = await useProjectStore . getState ( ) . getProject ( currentProjectId ) ;
1181+ data = project . data ;
1182+ } else {
1183+ data = null ;
1184+ }
1185+ break ;
1186+ }
1187+ case "resources" : {
1188+ const { useCacheStore } = await import ( "@src/store/cache/useCacheStore" ) ;
1189+ const { resources, currentProjectId } = useCacheStore . getState ( ) ;
1190+ if ( currentProjectId ) {
1191+ // Ensure we have the latest resources
1192+ await useCacheStore . getState ( ) . fetchResources ( currentProjectId , true ) ;
1193+ data = useCacheStore . getState ( ) . resources ;
1194+ } else {
1195+ data = resources ;
1196+ }
1197+ break ;
1198+ }
1199+ default :
1200+ throw new Error ( `Unknown resource type: ${ resource } ` ) ;
1201+ }
1202+
1203+ // Send the response back
1204+ this . sendMessage ( {
1205+ type : MessageTypes . DATA_RESPONSE ,
1206+ source : CONFIG . APP_SOURCE ,
1207+ data : {
1208+ requestId,
1209+ data,
1210+ } ,
1211+ } ) ;
1212+ } catch ( error ) {
1213+ // Send error response
1214+ this . sendMessage ( {
1215+ type : MessageTypes . ERROR ,
1216+ source : CONFIG . APP_SOURCE ,
1217+ data : {
1218+ code : `REQUEST_${ requestId } ` ,
1219+ message : error instanceof Error ? error . message : "Unknown error occurred" ,
1220+ } ,
1221+ } ) ;
1222+ }
1223+ }
1224+
1225+ private handleDataResponseMessage ( message : DataResponseMessage ) : void {
1226+ const { requestId, data } = message . data ;
1227+
1228+ const pendingRequest = this . pendingRequests . get ( requestId ) ;
1229+ if ( pendingRequest ) {
1230+ pendingRequest . resolve ( data ) ;
1231+ this . pendingRequests . delete ( requestId ) ;
1232+ }
1233+ }
11041234}
11051235export const iframeCommService = new IframeCommService ( ) ;
0 commit comments