Allow disabling AI assistant (#146)

* Test disabling AI assistant

* Leave "Maybe" out of it

* It's "sure" now
This commit is contained in:
Juan José Mata
2025-10-22 22:11:01 +02:00
committed by GitHub
parent 4cd737b5d9
commit e7e85748e4
4 changed files with 38 additions and 1 deletions

View File

@@ -21,9 +21,11 @@ class UsersController < ApplicationController
@user.update!(user_params.except(:redirect_to, :delete_profile_image))
@user.profile_image.purge if should_purge_profile_image?
# Add a special notice if AI was just enabled
# Add a special notice if AI was just enabled or disabled
notice = if !was_ai_enabled && @user.ai_enabled
"AI Assistant has been enabled successfully."
elsif was_ai_enabled && !@user.ai_enabled
"AI Assistant has been disabled."
else
t(".success")
end
@@ -72,6 +74,8 @@ class UsersController < ApplicationController
redirect_to goals_onboarding_path
when "trial"
redirect_to trial_onboarding_path
when "ai_prompts"
redirect_to settings_ai_prompts_path, notice: notice
else
redirect_to settings_profile_path, notice: notice
end

View File

@@ -1,5 +1,18 @@
<%= content_for :page_title, t(".page_title") %>
<% if Current.user.ai_enabled? %>
<div class="mb-4 flex justify-end">
<%= render DS::Button.new(
text: t(".disable_ai"),
href: user_path(Current.user),
method: :patch,
params: { user: { ai_enabled: false, redirect_to: "ai_prompts" } },
data: { turbo: false },
variant: :destructive
) %>
</div>
<% end %>
<div class="bg-container rounded-xl shadow-border-xs p-4">
<div class="rounded-xl bg-container-inset space-y-1 p-1">
<div class="flex items-center gap-1.5 px-4 py-2 text-xs font-medium text-secondary">

View File

@@ -5,6 +5,7 @@ en:
show:
page_title: AI Prompts
openai_label: OpenAI
disable_ai: Disable AI Assistant
prompt_instructions: Prompt Instructions
main_system_prompt:
title: Main System Prompt

View File

@@ -0,0 +1,19 @@
require "application_system_test_case"
class Settings::AiPromptsTest < ApplicationSystemTestCase
setup do
@user = users(:family_admin)
@user.update!(ai_enabled: true)
login_as @user
end
test "user can disable ai assistant" do
visit settings_ai_prompts_path
click_button "Disable AI Assistant"
assert_current_path settings_ai_prompts_path
@user.reload
assert_not @user.ai_enabled?
end
end