Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

FIX: Image caption feature should respect composer AI helper groups #522

Merged
merged 1 commit into from
Mar 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion assets/javascripts/initializers/ai-image-caption.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,15 @@ export default apiInitializer("1.25.0", (api) => {
class: "generate-caption",
};
const settings = api.container.lookup("service:site-settings");
const currentUser = api.getCurrentUser();

if (!settings.ai_helper_enabled_features.includes("image_caption")) {
if (
!settings.ai_helper_enabled_features.includes("image_caption") ||
!currentUser.can_use_assistant
) {
return;
}

api.addComposerImageWrapperButton(
buttonAttrs.label,
buttonAttrs.class,
Expand Down
22 changes: 22 additions & 0 deletions spec/system/ai_helper/ai_image_caption_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

RSpec.describe "AI image caption", type: :system, js: true do
fab!(:user) { Fabricate(:admin, refresh_auto_groups: true) }
fab!(:non_member_group) { Fabricate(:group) }

let(:composer) { PageObjects::Components::Composer.new }
let(:popup) { PageObjects::Components::AiCaptionPopup.new }
let(:file_path) { file_from_fixtures("logo.jpg", "images").path }
Expand All @@ -25,6 +27,26 @@
)
end

shared_examples "shows no image caption button" do
it "should not show an image caption button" do
visit("/latest")
page.find("#create-topic").click
attach_file([file_path]) { composer.click_toolbar_button("upload") }
wait_for { composer.has_no_in_progress_uploads? }
expect(popup).to have_no_generate_caption_button
end
end

context "when not a member of ai helper group" do
before { SiteSetting.ai_helper_allowed_groups = non_member_group.id.to_s }
include_examples "shows no image caption button"
end

context "when image caption feature is disabled" do
before { SiteSetting.ai_helper_enabled_features = "" }
include_examples "shows no image caption button"
end

context "when triggering caption with AI on desktop" do
it "should show an image caption in an input field" do
visit("/latest")
Expand Down
4 changes: 4 additions & 0 deletions spec/system/page_objects/components/ai_caption_popup.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ def cancel_caption
def has_no_disabled_generate_button?
page.has_no_css?("#{GENERATE_CAPTION_SELECTOR}.disabled", visible: false)
end

def has_no_generate_caption_button?
page.has_no_css?(GENERATE_CAPTION_SELECTOR, visible: false)
end
end
end
end