async viewMessageHandler()

in src/common/chat/gitlab_chat_controller.ts [56:125]


  async viewMessageHandler(message: ViewEmittedMessage) {
    switch (message.eventType) {
      case 'newPrompt': {
        const record = await GitLabChatRecord.buildWithContext(
          {
            role: 'user',
            content: message.record.content,
            type: detectType(
              message.record.content,
              await this.getGitLabVersionForClear(this.#manager),
            ),
          },
          this.#aiContextManager,
        );

        await Promise.all([this.processNewUserRecord(record), this.#clearSelectedContextItems()]);
        break;
      }
      case 'cancelPrompt': {
        this.#canceledPromptRequestIds.push(message.canceledPromptRequestId);
        await this.#view.cancelPrompt(this.#canceledPromptRequestIds);
        break;
      }
      case 'isChatFocused': {
        await this.#view.setChatFocused(message.isChatFocused);
        break;
      }
      case 'trackFeedback': {
        if (message.data) {
          const gitlabEnvironment = await this.#manager.getGitLabEnvironment();

          await submitFeedback({
            didWhat: message.data.didWhat,
            improveWhat: message.data.improveWhat,
            feedbackChoices: message.data.feedbackChoices,
            gitlabEnvironment,
          });
        }

        break;
      }
      case 'insertCodeSnippet': {
        if (message.data && message.data.snippet) {
          await insertCodeSnippet(message.data.snippet);
        }

        break;
      }
      case 'contextItemSearchQuery': {
        const { category, query } = message.query;
        await this.#searchContextItems(category, query);
        break;
      }
      case 'contextItemAdded': {
        await this.#addContextItem(message.item);
        break;
      }
      case 'contextItemRemoved': {
        await this.#removeContextItem(message.item);
        break;
      }
      case 'contextItemGetContent': {
        await this.#getContextItemContent(message.item, message.messageId);
        break;
      }
      default:
        log.warn(`Unhandled chat-webview message: "${JSON.stringify(message)}"`);
        break;
    }
  }