From 3ac2359ff1397b5c52320ab9428b64fb9a085107 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 19 May 2025 15:44:37 +1000 Subject: [PATCH] FEATURE: allow passing in data attributes to an artifact (#1346) Also allow artifact access to current username Usage inside artifact is: 1. await window.discourseArtifactReady; 2. access data via window.discourseArtifactData; --- .../ai_bot/artifacts_controller.rb | 28 +++++++ .../discourse/components/ai-artifact.gjs | 11 +++ .../javascripts/initializers/ai-artifacts.gjs | 12 +++ spec/system/ai_bot/artifact_spec.rb | 79 +++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 spec/system/ai_bot/artifact_spec.rb diff --git a/app/controllers/discourse_ai/ai_bot/artifacts_controller.rb b/app/controllers/discourse_ai/ai_bot/artifacts_controller.rb index 4e489659..a40965b1 100644 --- a/app/controllers/discourse_ai/ai_bot/artifacts_controller.rb +++ b/app/controllers/discourse_ai/ai_bot/artifacts_controller.rb @@ -42,6 +42,21 @@ module DiscourseAi + #{artifact.html} @@ -74,6 +89,19 @@ module DiscourseAi + HTML diff --git a/assets/javascripts/discourse/components/ai-artifact.gjs b/assets/javascripts/discourse/components/ai-artifact.gjs index 94baa876..a9ccfbc3 100644 --- a/assets/javascripts/discourse/components/ai-artifact.gjs +++ b/assets/javascripts/discourse/components/ai-artifact.gjs @@ -1,6 +1,7 @@ import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; import { action } from "@ember/object"; +import didInsert from "@ember/render-modifiers/modifiers/did-insert"; import { service } from "@ember/service"; import DButton from "discourse/components/d-button"; import htmlClass from "discourse/helpers/html-class"; @@ -88,6 +89,15 @@ export default class AiArtifactComponent extends Component { }`; } + @action + setDataAttributes(element) { + if (this.args.dataAttributes) { + Object.entries(this.args.dataAttributes).forEach(([key, value]) => { + element.setAttribute(key, value); + }); + } + } +