* FIX: adjust `full_url` method in `ChatIntegrationReferencePost` to return the correct URL
before it automation would fail because topic does not have `full_url` method
* DEV: remove logs
* Reapply "FIX: revert chat-integration move to discourse-automation (#214)" (#218)
This reverts commit f15c0fddf3.
* DEV: added more logging to the plugin
* DEV: update error logging with `.inspect` for better debugging
* FEATURE: Add chat integration reference post
This class works similar to a post but it is not a post.
* DEV: change how `excerpt` method works
* feature: Add `send_chat_integration_message` scriptable
add `send_chat_integration_message` scriptable that uses the rules to send a message to the chat provider
add locale strings for the new scriptable
update `ChatIntegrationReferencePost` `excerpt` method
add tests for `ChatIntegrationReferencePost`
* DEV: Add `get_channel_by_name` to every provider
This makes using `trigger_notification` easier with every provider as well.
* DEV: Add `get_channel_name` to all providers
This method gets the name of the channel based on how the provider identifies it.
Updates channel_name in locales yaml
Adds migrate_tag_added_filter_to_all_providers.rb to move all existing rules to use Automation
* DEV: Add removal of old migration data
Update small action locales with strings from core
* DEV: solve review comments
* DEV: update test locale strings
* DEV: remove empty line to trigger lint
* DEV: lint applied
* DEV: Add tests for automation integration
* DEV: add rails logger for when automatio error occurs
* DEV: move migration to be SQL only
Update provider helper to use hashes instead of dot notation
* DEV: update migration with correct table names
* DEV: Update migrate_tag_added_filter_to_all_providers to use smaller SQL queries
Commented out migrate_tag_added_from_filter_to_automation.rb
* DEV: update comments in migration file
* DEV: update indentation in client.en.yml
* DEV: update with review comments
* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* Update spec/integration/automation_spec.rb
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* Update lib/discourse_chat_integration/chat_integration_reference_post.rb
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* DEV: update specs with review comments
* DEV: update typos in tests
* DEV: inlined functions for getting channel name for provider in migration
---------
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
* FIX: revert chat-integration move to discourse-automation
this reverses the changes made in 57b460737c
without deleting the migration.
* Revert "DEV: removing create post for category and tag changes setting (#210)"
This reverts commit 35925c4dac.
* DEV: merge both chat-integration rules and automation rules
* FEATURE: add topic tags changed trigger to chat integration
* FEATURE: add placeholder for reply to topic trigger
add description on how to use the placeholder
* DEV: Move slack message creation to provider
Add tests to new method
* FEATURE: add ${URL} to placeholder replacements and added tags link
If triggered when a topic tag is changed, message behavior will follow what user defined in message.
* DEV: Update tests with tags
* DEV: add post to topic for testing
* DEV: update test strings
* DEV: add early return for topic tags changed trigger
* DEV: move early return to use try/catch
* DEV: update `create_slack_message` to not send a tuple of values
* DEV: refactor method to be more readable
* FEATURE: add `${ADDED_AND_REMOVED}` for default texts
* DEV: Update typo in test
* DEV: Add tests to check when if `create_slack_message` raises an error
* DEV: Remove the `tag_added` from chat-integration filter
Added migration to handle the migration of the `tag_added` filter from the chat-integration plugin.
Only removed the logic from the plugin, data removal will happen in a future PR
* DEV: lint migration file
* DEV: update chat-integration to not show "tag_added" rules
* DEV: update added and missing tags logic
* DEV: update context variable name
* DEV: update migration to include `begin/rescue` block and added a list with available filters
As part of enhancing problem checks and admin notices, we standardized the location of the problem check messages' locale keys. However, we overlooked this one in the plugin, resulting in a missing translation on the dashboard.
This PR puts the locale key in the place expected by the admin notice system.
Reverts discourse/discourse-chat-integration#191
This is causing Discourse Core CI to fail, so reverting for now.
```
64: from bin/rake:13:in `<main>'
63: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:80:in `run'
62: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:208:in `standard_exception_handling'
61: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:83:in `block in run'
60: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:132:in `top_level'
59: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:147:in `run_with_threads'
58: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:138:in `block in top_level'
57: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:138:in `each'
56: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:138:in `block (2 levels) in top_level'
55: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/application.rb:182:in `invoke_task'
54: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:188:in `invoke'
53: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `invoke_with_call_chain'
52: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `synchronize'
51: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
50: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:241:in `invoke_prerequisites'
49: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:241:in `each'
48: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:243:in `block in invoke_prerequisites'
47: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `invoke_with_call_chain'
46: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `synchronize'
45: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
44: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:241:in `invoke_prerequisites'
43: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:241:in `each'
42: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:243:in `block in invoke_prerequisites'
41: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `invoke_with_call_chain'
40: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:199:in `synchronize'
39: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
38: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:281:in `execute'
37: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:281:in `each'
36: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/task.rb:281:in `block in execute'
35: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/application.rb:506:in `block in run_tasks_blocks'
34: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/application.rb:348:in `require_environment!'
33: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.13/lib/zeitwerk/kernel.rb:34:in `require'
32: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
31: from <internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
30: from <internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
29: from /__w/discourse/discourse/config/environment.rb:7:in `<main>'
28: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/application.rb:372:in `initialize!'
27: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/initializable.rb:60:in `run_initializers'
26: from /usr/local/lib/ruby/3.2.0/tsort.rb:205:in `tsort_each'
25: from /usr/local/lib/ruby/3.2.0/tsort.rb:226:in `tsort_each'
24: from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each_strongly_connected_component'
23: from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `call'
22: from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each'
21: from /usr/local/lib/ruby/3.2.0/tsort.rb:349:in `block in each_strongly_connected_component'
20: from /usr/local/lib/ruby/3.2.0/tsort.rb:431:in `each_strongly_connected_component_from'
19: from /usr/local/lib/ruby/3.2.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
18: from /usr/local/lib/ruby/3.2.0/tsort.rb:228:in `block in tsort_each'
17: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/initializable.rb:61:in `block in run_initializers'
16: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/initializable.rb:32:in `run'
15: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/initializable.rb:32:in `instance_exec'
14: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/application/finisher.rb:87:in `block in <module:Finisher>'
13: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'
12: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:75:in `each'
11: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'
10: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'
9: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'
8: from /__w/discourse/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8.1/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'
7: from /__w/discourse/discourse/config/application.rb:239:in `block in <class:Application>'
6: from /__w/discourse/discourse/lib/plugin.rb:6:in `initialization_guard'
5: from /__w/discourse/discourse/config/application.rb:239:in `block (2 levels) in <class:Application>'
4: from /__w/discourse/discourse/config/application.rb:239:in `each'
3: from /__w/discourse/discourse/lib/plugin/instance.rb:555:in `notify_after_initialize'
2: from /__w/discourse/discourse/lib/plugin/instance.rb:555:in `each'
1: from /__w/discourse/discourse/lib/plugin/instance.rb:557:in `block in notify_after_initialize'
/__w/discourse/discourse/plugins/discourse-chat-integration/plugin.rb:25:in `block in activate!': undefined method `register_problem_check' for #<Plugin::Instance:0x00007f1a7c7491e8 @metadata=#<Plugin::Metadata:0x00007f1a80b4de98 @name="discourse-chat-integration", @about="Allows integration with several external chat system providers", @meta_topic_id=66522, @version="0.1", @url="https://github.com/discourse/discourse-chat-integration">, @path="/__w/discourse/discourse/plugins/discourse-chat-integration/plugin.rb", @idx=0, @enabled_site_setting=:chat_integration_enabled, @assets=[["/__w/discourse/discourse/plugins/discourse-chat-integration/assets/stylesheets/chat-integration.scss", nil, "discourse-chat-integration"]], @directory_name="discourse-chat-integration", @initializers=[#<Proc:0x00007f1a7aea3058 /__w/discourse/discourse/plugins/discourse-chat-integration/plugin.rb:20>], @styles=[], @javascripts=[], @locales=[], @service_workers=[], @seed_data={}, @extra_js_file_path="/__w/discourse/discourse/app/assets/javascripts/plugins/discourse-chat-integration_extra.js", @asset_filters=[], @color_schemes=[]> (NoMethodError)
** INCOMPATIBLE PLUGIN **
You are unable to start Discourse due to errors in the plugin at
/__w/discourse/discourse/plugins/discourse-chat-integration
```
We're promoting problem checks to first class citizens in core. This migrates the problem check to the new API.
In the process of adding tests for this check, I discovered what seems like a mistake that likely means this check never worked until now. (See inline comment.)
We're updating core to change TL based access settings to be group based. This requires some updates of tests to work correctly. (The existing test setup gives false positives.)