import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; import { action } from "@ember/object"; import { next } from "@ember/runloop"; import { htmlSafe } from "@ember/template"; import DButton from "discourse/components/d-button"; import DModal from "discourse/components/d-modal"; import { ajax } from "discourse/lib/ajax"; import { clipboardCopy, escapeExpression } from "discourse/lib/utilities"; import i18n from "discourse-common/helpers/i18n"; import discourseLater from "discourse-common/lib/later"; import I18n from "discourse-i18n"; export default class DebugAiModal extends Component { @tracked info = null; @tracked justCopiedText = ""; constructor() { super(...arguments); next(() => { this.loadApiRequestInfo(); }); } get htmlContext() { if (!this.info) { return ""; } let parsed; try { parsed = JSON.parse(this.info.raw_request_payload); } catch (e) { return this.info.raw_request_payload; } return htmlSafe(this.jsonToHtml(parsed)); } jsonToHtml(json) { let html = ""; return html; } @action copyRequest() { this.copy(this.info.raw_request_payload); } @action copyResponse() { this.copy(this.info.raw_response_payload); } copy(text) { clipboardCopy(text); this.justCopiedText = I18n.t("discourse_ai.ai_bot.conversation_shared"); discourseLater(() => { this.justCopiedText = ""; }, 2000); } loadApiRequestInfo() { ajax( `/discourse-ai/ai-bot/post/${this.args.model.id}/show-debug-info.json` ).then((result) => { this.info = result; }); } }