diff --git a/assets/javascripts/discourse/connectors/user-preferences-nav/ai-preferences.gjs b/assets/javascripts/discourse/connectors/user-preferences-nav/ai-preferences.gjs index 2fc2a2b4..8f0283a0 100644 --- a/assets/javascripts/discourse/connectors/user-preferences-nav/ai-preferences.gjs +++ b/assets/javascripts/discourse/connectors/user-preferences-nav/ai-preferences.gjs @@ -3,24 +3,19 @@ import { LinkTo } from "@ember/routing"; import dIcon from "discourse-common/helpers/d-icon"; import i18n from "discourse-common/helpers/i18n"; -function showAiPreferences(user, siteSettings) { +function showAiPreferences(user) { // Since we only have one AI related user setting we don't show // AI preferences if these conditions aren't met. // If we add more user settings in the future we can move this // logic to the the specific settings and conditionally show it in the template. - const userGroups = user.groups.map((g) => g.id); - const captionGroups = siteSettings.ai_auto_image_caption_allowed_groups - .split("|") - .map((id) => parseInt(id, 10)); - - return userGroups.some((groupId) => captionGroups.includes(groupId)); + return user?.user_allowed_ai_auto_image_captions; } export default class AutoImageCaptionSetting extends Component { static shouldRender(outletArgs, helper) { return ( helper.siteSettings.discourse_ai_enabled && - showAiPreferences(outletArgs.model, helper.siteSettings) + showAiPreferences(outletArgs.model) ); } diff --git a/lib/ai_helper/entry_point.rb b/lib/ai_helper/entry_point.rb index 2566f15c..0032f098 100644 --- a/lib/ai_helper/entry_point.rb +++ b/lib/ai_helper/entry_point.rb @@ -43,6 +43,10 @@ module DiscourseAi ) end + plugin.add_to_serializer(:current_user, :user_allowed_ai_auto_image_captions) do + scope.user.in_any_groups?(SiteSetting.ai_auto_image_caption_allowed_groups_map) + end + UserUpdater::OPTION_ATTR.push(:auto_image_caption) plugin.add_to_serializer( :user_option,