function updateMessages()

in reference-architectures/cloud_deploy_flow/WebsiteDemo/public/script.js [4:52]


function updateMessages() {
  fetch('/messages')
    .then((response) => response.json())
    .then((data) => {
      const subscriptionMap = {
        'build_notifications_subscription': 'build_notifications_subscription',
        'deploy-commands-subscription': 'deploy-commands-subscription',
        'clouddeploy-operations-subscription':
          'clouddeploy-operations-subscription',
        'clouddeploy-approvals-subscription':
          'clouddeploy-approvals-subscription',
      };

      // Loop through each subscription and update its content
      for (const subscriptionName in subscriptionMap) {
        const messages = data[subscriptionName] || [];
        const messageContainer = document.getElementById(
          subscriptionMap[subscriptionName],
        );

        // Only update if there are new messages
        if (
          !lastMessageData[subscriptionName] ||
          lastMessageData[subscriptionName].length !== messages.length
        ) {
          messageContainer.innerHTML = ''; // Clear previous messages

          // Add new messages with pretty-printed JSON
          messages.forEach((message) => {
            const messageDiv = document.createElement('div');
            messageDiv.className = 'message';
            messageDiv.textContent = JSON.stringify(
              {
                id: message.id,
                data: message.data,
                attributes: message.attributes,
              },
              null,
              2,
            ); // Prettify JSON with indentation
            messageContainer.appendChild(messageDiv);
          });
        }
      }

      // Save the latest message data to compare on the next refresh
      lastMessageData = data;
    });
}