mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-30 18:47:51 +00:00 
			
		
		
		
	chore: Increase custom filter limit from 50 to 1000 per user (#12603)
# Pull Request Template ## Description This PR increases the custom filter limit from 50 to 1000 per user ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? ### Screenshot <img width="1264" height="71" alt="image" src="https://github.com/user-attachments/assets/e12667bb-147c-4115-b8a8-9113fca471db" /> ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
This commit is contained in:
		| @@ -17,7 +17,6 @@ | |||||||
| #  index_custom_filters_on_user_id     (user_id) | #  index_custom_filters_on_user_id     (user_id) | ||||||
| # | # | ||||||
| class CustomFilter < ApplicationRecord | class CustomFilter < ApplicationRecord | ||||||
|   MAX_FILTER_PER_USER = 50 |  | ||||||
|   belongs_to :user |   belongs_to :user | ||||||
|   belongs_to :account |   belongs_to :account | ||||||
|  |  | ||||||
| @@ -25,7 +24,7 @@ class CustomFilter < ApplicationRecord | |||||||
|   validate :validate_number_of_filters |   validate :validate_number_of_filters | ||||||
|  |  | ||||||
|   def validate_number_of_filters |   def validate_number_of_filters | ||||||
|     return true if account.custom_filters.where(user_id: user_id).size < MAX_FILTER_PER_USER |     return true if account.custom_filters.where(user_id: user_id).size < Limits::MAX_CUSTOM_FILTERS_PER_USER | ||||||
|  |  | ||||||
|     errors.add :account_id, I18n.t('errors.custom_filters.number_of_records') |     errors.add :account_id, I18n.t('errors.custom_filters.number_of_records') | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -100,7 +100,7 @@ en: | |||||||
|       validations: |       validations: | ||||||
|         name: should not start or end with symbols, and it should not have < > / \ @ characters. |         name: should not start or end with symbols, and it should not have < > / \ @ characters. | ||||||
|     custom_filters: |     custom_filters: | ||||||
|       number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. |       number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. | ||||||
|       invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. |       invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. | ||||||
|       invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. |       invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. | ||||||
|       invalid_query_operator: Query operator must be either "AND" or "OR". |       invalid_query_operator: Query operator must be either "AND" or "OR". | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ module Limits | |||||||
|   GREETING_MESSAGE_MAX_LENGTH = 10_000 |   GREETING_MESSAGE_MAX_LENGTH = 10_000 | ||||||
|   CATEGORIES_PER_PAGE = 1000 |   CATEGORIES_PER_PAGE = 1000 | ||||||
|   AUTO_ASSIGNMENT_BULK_LIMIT = 100 |   AUTO_ASSIGNMENT_BULK_LIMIT = 100 | ||||||
|  |   MAX_CUSTOM_FILTERS_PER_USER = 1000 | ||||||
|  |  | ||||||
|   def self.conversation_message_per_minute_limit |   def self.conversation_message_per_minute_limit | ||||||
|     ENV.fetch('CONVERSATION_MESSAGE_PER_MINUTE_LIMIT', '200').to_i |     ENV.fetch('CONVERSATION_MESSAGE_PER_MINUTE_LIMIT', '200').to_i | ||||||
|   | |||||||
| @@ -93,9 +93,9 @@ RSpec.describe 'Custom Filters API', type: :request do | |||||||
|         expect(json_response['name']).to eq 'vip-customers' |         expect(json_response['name']).to eq 'vip-customers' | ||||||
|       end |       end | ||||||
|  |  | ||||||
|       it 'gives the error for 51st record' do |       it 'gives the error for 1001st record' do | ||||||
|         CustomFilter.delete_all |         CustomFilter.delete_all | ||||||
|         CustomFilter::MAX_FILTER_PER_USER.times do |         Limits::MAX_CUSTOM_FILTERS_PER_USER.times do | ||||||
|           create(:custom_filter, user: user, account: account) |           create(:custom_filter, user: user, account: account) | ||||||
|         end |         end | ||||||
|  |  | ||||||
| @@ -107,7 +107,7 @@ RSpec.describe 'Custom Filters API', type: :request do | |||||||
|         expect(response).to have_http_status(:unprocessable_entity) |         expect(response).to have_http_status(:unprocessable_entity) | ||||||
|         json_response = response.parsed_body |         json_response = response.parsed_body | ||||||
|         expect(json_response['message']).to include( |         expect(json_response['message']).to include( | ||||||
|           'Account Limit reached. The maximum number of allowed custom filters for a user per account is 50.' |           'Account Limit reached. The maximum number of allowed custom filters for a user per account is 1000.' | ||||||
|         ) |         ) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sivin Varghese
					Sivin Varghese