mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	Chore: API Improvements (#3469)
This commit is contained in:
		| @@ -57,7 +57,7 @@ Metrics/BlockLength: | |||||||
|     - db/schema.rb |     - db/schema.rb | ||||||
| Metrics/ModuleLength: | Metrics/ModuleLength: | ||||||
|   Exclude: |   Exclude: | ||||||
|     - lib/woot_message_seeder.rb |     - lib/seeders/message_seeder.rb | ||||||
| Rails/ApplicationController: | Rails/ApplicationController: | ||||||
|   Exclude: |   Exclude: | ||||||
|     - 'app/controllers/api/v1/widget/messages_controller.rb' |     - 'app/controllers/api/v1/widget/messages_controller.rb' | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ class Api::V1::Accounts::CannedResponsesController < Api::V1::Accounts::BaseCont | |||||||
|  |  | ||||||
|   def canned_responses |   def canned_responses | ||||||
|     if params[:search] |     if params[:search] | ||||||
|       Current.account.canned_responses.where('short_code ILIKE ?', "#{params[:search]}%") |       Current.account.canned_responses.where('short_code ILIKE :search OR content ILIKE :search', search: "%#{params[:search]}%") | ||||||
|     else |     else | ||||||
|       Current.account.canned_responses |       Current.account.canned_responses | ||||||
|     end |     end | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								app/presenters/agent_bot_presenter.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/presenters/agent_bot_presenter.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | class AgentBotPresenter < SimpleDelegator | ||||||
|  |   def access_token | ||||||
|  |     return if account_id.blank? | ||||||
|  |  | ||||||
|  |     Current.account.id == account_id ? super&.token : nil | ||||||
|  |   end | ||||||
|  | end | ||||||
| @@ -1 +1 @@ | |||||||
| json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot | json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot) | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| json.array! @agent_bots do |agent_bot| | json.array! @agent_bots do |agent_bot| | ||||||
|   json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: agent_bot |   json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(agent_bot) | ||||||
| end | end | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot | json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot) | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot | json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot) | ||||||
|   | |||||||
| @@ -3,3 +3,4 @@ json.name resource.name | |||||||
| json.description resource.description | json.description resource.description | ||||||
| json.outgoing_url resource.outgoing_url | json.outgoing_url resource.outgoing_url | ||||||
| json.account_id resource.account_id | json.account_id resource.account_id | ||||||
|  | json.access_token resource.access_token if resource.access_token.present? | ||||||
|   | |||||||
| @@ -3,3 +3,4 @@ json.name resource.name | |||||||
| json.description resource.description | json.description resource.description | ||||||
| json.outgoing_url resource.name | json.outgoing_url resource.name | ||||||
| json.account_id resource.account_id | json.account_id resource.account_id | ||||||
|  | json.access_token resource.access_token.token | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								db/seeds.rb
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								db/seeds.rb
									
									
									
									
									
								
							| @@ -60,20 +60,20 @@ unless Rails.env.production? | |||||||
|   ) |   ) | ||||||
|  |  | ||||||
|   # sample email collect |   # sample email collect | ||||||
|   WootMessageSeeder.create_sample_email_collect_message conversation |   Seeders::MessageSeeder.create_sample_email_collect_message conversation | ||||||
|  |  | ||||||
|   Message.create!(content: 'Hello', account: account, inbox: inbox, conversation: conversation, message_type: :incoming) |   Message.create!(content: 'Hello', account: account, inbox: inbox, conversation: conversation, message_type: :incoming) | ||||||
|  |  | ||||||
|   # sample card |   # sample card | ||||||
|   WootMessageSeeder.create_sample_cards_message conversation |   Seeders::MessageSeeder.create_sample_cards_message conversation | ||||||
|   # input select |   # input select | ||||||
|   WootMessageSeeder.create_sample_input_select_message conversation |   Seeders::MessageSeeder.create_sample_input_select_message conversation | ||||||
|   # form |   # form | ||||||
|   WootMessageSeeder.create_sample_form_message conversation |   Seeders::MessageSeeder.create_sample_form_message conversation | ||||||
|   # articles |   # articles | ||||||
|   WootMessageSeeder.create_sample_articles_message conversation |   Seeders::MessageSeeder.create_sample_articles_message conversation | ||||||
|   # csat |   # csat | ||||||
|   WootMessageSeeder.create_sample_csat_collect_message conversation |   Seeders::MessageSeeder.create_sample_csat_collect_message conversation | ||||||
|  |  | ||||||
|   CannedResponse.create!(account: account, short_code: 'start', content: 'Hello welcome to chatwoot.') |   CannedResponse.create!(account: account, short_code: 'start', content: 'Hello welcome to chatwoot.') | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								lib/seeders/account_seeder.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								lib/seeders/account_seeder.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | ## Class to generate sample data for a chatwoot test Account. | ||||||
|  | ############################################################ | ||||||
|  | ### Usage ##### | ||||||
|  | # | ||||||
|  | #   # Seed an account with all data types in this class | ||||||
|  | #   Seeders::AccountSeeder.new(account: account).seed! | ||||||
|  | # | ||||||
|  | #   # When you want to seed only a specific type of data | ||||||
|  | #   Seeders::AccountSeeder.new(account: account).seed_canned_responses | ||||||
|  | #   # Seed specific number of objects | ||||||
|  | #   Seeders::AccountSeeder.new(account: account).seed_canned_responses(count: 10) | ||||||
|  | # | ||||||
|  | ############################################################ | ||||||
|  |  | ||||||
|  | class Seeders::AccountSeeder | ||||||
|  |   pattr_initialize [:account!] | ||||||
|  |  | ||||||
|  |   def seed! | ||||||
|  |     seed_canned_responses | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def seed_canned_responses(count: 50) | ||||||
|  |     count.times do | ||||||
|  |       account.canned_responses.create(content: Faker::Quote.fortune_cookie, short_code: Faker::Alphanumeric.alpha(number: 10)) | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| module WootMessageSeeder | module Seeders::MessageSeeder | ||||||
|   def self.create_sample_email_collect_message(conversation) |   def self.create_sample_email_collect_message(conversation) | ||||||
|     Message.create!( |     Message.create!( | ||||||
|       account: conversation.account, |       account: conversation.account, | ||||||
| @@ -25,6 +25,8 @@ RSpec.describe 'Agent Bot API', type: :request do | |||||||
|         expect(response).to have_http_status(:success) |         expect(response).to have_http_status(:success) | ||||||
|         expect(response.body).to include(agent_bot.name) |         expect(response.body).to include(agent_bot.name) | ||||||
|         expect(response.body).to include(global_bot.name) |         expect(response.body).to include(global_bot.name) | ||||||
|  |         expect(response.body).to include(agent_bot.access_token.token) | ||||||
|  |         expect(response.body).not_to include(global_bot.access_token.token) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| @@ -46,6 +48,7 @@ RSpec.describe 'Agent Bot API', type: :request do | |||||||
|  |  | ||||||
|         expect(response).to have_http_status(:success) |         expect(response).to have_http_status(:success) | ||||||
|         expect(response.body).to include(agent_bot.name) |         expect(response.body).to include(agent_bot.name) | ||||||
|  |         expect(response.body).to include(agent_bot.access_token.token) | ||||||
|       end |       end | ||||||
|  |  | ||||||
|       it 'will show a global agent bot' do |       it 'will show a global agent bot' do | ||||||
| @@ -56,6 +59,7 @@ RSpec.describe 'Agent Bot API', type: :request do | |||||||
|  |  | ||||||
|         expect(response).to have_http_status(:success) |         expect(response).to have_http_status(:success) | ||||||
|         expect(response.body).to include(global_bot.name) |         expect(response.body).to include(global_bot.name) | ||||||
|  |         expect(response.body).not_to include(global_bot.access_token.token) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| @@ -113,6 +117,7 @@ RSpec.describe 'Agent Bot API', type: :request do | |||||||
|  |  | ||||||
|         expect(response).to have_http_status(:success) |         expect(response).to have_http_status(:success) | ||||||
|         expect(agent_bot.reload.name).to eq('test_updated') |         expect(agent_bot.reload.name).to eq('test_updated') | ||||||
|  |         expect(response.body).to include(agent_bot.access_token.token) | ||||||
|       end |       end | ||||||
|  |  | ||||||
|       it 'would not update the agent bot when agent' do |       it 'would not update the agent bot when agent' do | ||||||
| @@ -134,6 +139,7 @@ RSpec.describe 'Agent Bot API', type: :request do | |||||||
|  |  | ||||||
|         expect(response).to have_http_status(:not_found) |         expect(response).to have_http_status(:not_found) | ||||||
|         expect(agent_bot.reload.name).not_to eq('test_updated') |         expect(agent_bot.reload.name).not_to eq('test_updated') | ||||||
|  |         expect(response.body).not_to include(global_bot.access_token.token) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sojan Jose
					Sojan Jose