discourse/plugins/chat
Joffrey JAFFEUX b8100ad1ae
DEV: enables threadsafe for system tests
It should fix flakeys we have due to using_session. This commit is also fixing tests which were failing constantly with treadsafe enabled.

A test has also bene skipped as the issue couldn't be found so far.

More info: https://github.com/teamcapybara/capybara#threadsafe-mode
2023-01-02 15:17:21 +01:00
..
app FIX: ensures loading more doesn’t erase filter on browse (#19675) 2023-01-02 14:40:13 +01:00
assets DEV: moves channel-archive-status to channels subscriptions (#19567) 2022-12-30 15:30:36 +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 DEV: Add upload system specs for chat (#19604) 2022-12-23 08:41:10 +01:00
public
spec DEV: enables threadsafe for system tests 2023-01-02 15:17:21 +01:00
test/javascripts DEV: Modernize chat's component tests (#19577) 2022-12-22 14:35:18 +01:00
README.md
plugin.rb FIX: removes missed chat_channels legacy paths (#19634) 2022-12-27 20:56:26 +01:00

README.md

⚠️ 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"]