diff --git a/assets/javascripts/discourse/controllers/discourse-ai-bot-conversations.js b/assets/javascripts/discourse/controllers/discourse-ai-bot-conversations.js index 167cfbc0..42dbb0d6 100644 --- a/assets/javascripts/discourse/controllers/discourse-ai-bot-conversations.js +++ b/assets/javascripts/discourse/controllers/discourse-ai-bot-conversations.js @@ -3,6 +3,7 @@ import Controller from "@ember/controller"; import { action } from "@ember/object"; import { getOwner } from "@ember/owner"; import { service } from "@ember/service"; +import { TrackedArray } from "@ember-compat/tracked-built-ins"; import { popupAjaxError } from "discourse/lib/ajax-error"; import UppyUpload from "discourse/lib/uppy/uppy-upload"; import UppyMediaOptimization from "discourse/lib/uppy-media-optimization-plugin"; @@ -15,7 +16,7 @@ export default class DiscourseAiBotConversations extends Controller { @service site; @service siteSettings; - @tracked uploads = []; + @tracked uploads = new TrackedArray(); // Don't track this directly - we'll get it from uppyUpload textarea = null; @@ -46,8 +47,6 @@ export default class DiscourseAiBotConversations extends Controller { init() { super.init(...arguments); - this.uploads = []; - this.uppyUpload = new UppyUpload(getOwner(this), { id: "ai-bot-file-uploader", type: "ai-bot-conversation", @@ -85,7 +84,7 @@ export default class DiscourseAiBotConversations extends Controller { }, uploadDone: (upload) => { - this.uploads.pushObject(upload); + this.uploads.push(upload); }, // Fix: Don't try to set inProgressUploads directly @@ -162,7 +161,7 @@ export default class DiscourseAiBotConversations extends Controller { @action removeUpload(upload) { - this.uploads.removeObject(upload); + this.uploads = new TrackedArray(this.uploads.filter((u) => u !== upload)); } @action @@ -178,7 +177,7 @@ export default class DiscourseAiBotConversations extends Controller { this.aiBotConversationsHiddenSubmit.uploads = this.uploads; try { await this.aiBotConversationsHiddenSubmit.submitToBot(); - this.uploads.clear(); + this.uploads = new TrackedArray(); } catch (error) { popupAjaxError(error); } diff --git a/assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs b/assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs index c4f9bc14..8420f647 100644 --- a/assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs +++ b/assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs @@ -90,7 +90,7 @@ export default RouteTemplate( {{/each}} diff --git a/spec/system/ai_bot/homepage_spec.rb b/spec/system/ai_bot/homepage_spec.rb index 47ae7dcd..eca810d1 100644 --- a/spec/system/ai_bot/homepage_spec.rb +++ b/spec/system/ai_bot/homepage_spec.rb @@ -138,8 +138,6 @@ RSpec.describe "AI Bot - Homepage", type: :system do end it "allows removing an upload before submission" do - skip "TODO: fix this test for playwright" - ai_pm_homepage.visit expect(ai_pm_homepage).to have_homepage @@ -147,7 +145,6 @@ RSpec.describe "AI Bot - Homepage", type: :system do attach_file([file_path]) { find(".ai-bot-upload-btn", visible: true).click } expect(page).to have_css(".ai-bot-upload", count: 1) - # TODO: for some reason this line fails in playwright find(".ai-bot-upload__remove").click expect(page).to have_no_css(".ai-bot-upload")