This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/plugins/chat
Martin Brennan 819efb0434
Revert "DEV: enables threadsafe for system tests"
This reverts commit b8100ad1ae.

This was causing many issues in CI, including AR connections
not being expired because of threading issues, which was also
causing rails_helper to raise an error because we had busy
connections at the end of spec runs.

```
Cannot expire connection, it is owned by a different thread:
/__w/discourse/discourse/vendor/bundle/ruby/3.1.0/gems/puma-6.0.1/lib/puma/thread_pool.rb:106
sleep_forever>. Current thread: #<Thread:0x00007f541966fcc8 run>.
```

And:

```
Failure/Error: raise ActiveRecord::Base.connection_pool.stat.inspect

RuntimeError:
  {:size=>5, :connections=>2, :busy=>2, :dead=>0, :idle=>0, :waiting=>0, :checkout_timeout=>5.0}
```

See https://github.com/discourse/discourse/actions/runs/3825882529/jobs/6509204143
for examples.
2023-01-03 11:38:51 +10:00
..
app FIX: correctly uses request_uri to generate load_more_url (#19680) 2023-01-03 00:19:13 +01:00
assets FIX: at this point in time component can be destroyed (#19677) 2023-01-02 19:17:10 +01:00
config Update translations (#19663) 2022-12-30 17:49:48 +01:00
db DEV: Make recent creation of chat index idempotent (#19603) 2022-12-23 10:23:57 +08:00
lib PERF: Make chat mention notifications async. (#19666) 2023-01-02 11:54:52 -03:00
public DEV: Move discourse-chat to the core repo. (#18776) 2022-11-02 10:41:30 -03:00
spec Revert "DEV: enables threadsafe for system tests" 2023-01-03 11:38:51 +10:00
test/javascripts DEV: Modernize chat's component tests (#19577) 2022-12-22 14:35:18 +01:00
plugin.rb PERF: Make chat mention notifications async. (#19666) 2023-01-02 11:54:52 -03:00
README.md DEV: Move discourse-chat to the core repo. (#18776) 2022-11-02 10:41:30 -03:00

⚠️ This plugin is still in active development and may change frequently

Documentation

The Discourse Chat plugin adds chat functionality to your Discourse so it can natively support both long-form and short-form communication needs of your online community.

For documentation, see Discourse Chat

Plugin API

registerChatComposerButton

Usage

api.registerChatComposerButton({ id: "foo", ... });

Options

Every option accepts a value or a function, when passing a function this will be the chat-composer component instance. Example of an option using a function:

api.registerChatComposerButton({
  id: "foo",
  displayed() {
    return this.site.mobileView && this.canAttachUploads;
  },
});
Required
  • id unique, used to identify your button, eg: "gifs"
  • action callback when the button is pressed, can be an action name or an anonymous function, eg: "onFooClicked" or () => { console.log("clicked") }

A button requires at least an icon or a label:

  • icon, eg: "times"
  • label, text displayed on the button, a translatable key, eg: "foo.bar"
  • translatedLabel, text displayed on the button, a string, eg: "Add gifs"
Optional
  • position, can be "inline" or "dropdown", defaults to "inline"
  • title, title attribute of the button, a translatable key, eg: "foo.bar"
  • translatedTitle, title attribute of the button, a string, eg: "Add gifs"
  • ariaLabel, aria-label attribute of the button, a translatable key, eg: "foo.bar"
  • translatedAriaLabel, aria-label attribute of the button, a string, eg: "Add gifs"
  • classNames, additional names to add to the buttons class attribute, eg: ["foo", "bar"]
  • displayed, hide/or show the button, expects a boolean
  • disabled, sets the disabled attribute on the button, expects a boolean
  • priority, an integer defining the order of the buttons, higher comes first, eg: 700
  • dependentKeys, list of property names which should trigger a refresh of the buttons when changed, eg: ["foo.bar", "bar.baz"]