discourse/plugins/chat
Martin Brennan ac7bf98ad1
DEV: Load client site settings YML into JS tests (#18413)
Our method of loading a subset of client settings into tests via
tests/helpers/site-settings.js can be improved upon. Currently we have a
hardcoded subset of the client settings, which may get out of date and not have
the correct defaults. As well as this plugins do not get their settings into the
tests, so whenever you need a setting from a plugin, even if it has a default,
you have to do needs.setting({ ... }) which is inconvenient.

This commit introduces an ember CLI build step to take the site_settings.yml and
all the plugin settings.yml files, pull out the client settings, and dump them
into a variable in a single JS file we can load in our tests, so we have the
correct selection of settings and default values in our JS tests. It also fixes
many, many tests that were operating under incorrect assumptions or old
settings.

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2022-11-08 09:17:43 +10:00
..
app FIX: Make chat editor IDs not null (#18903) 2022-11-08 09:06:13 +10:00
assets FIX: follow up to #7fca078 (#18915) 2022-11-07 19:31:08 +01:00
config UX: Add back button in chat browse screen on mobile (#18849) 2022-11-03 09:06:30 +01:00
db FIX: Make chat editor IDs not null (#18903) 2022-11-08 09:06:13 +10:00
lib FIX: Make chat editor IDs not null (#18903) 2022-11-08 09:06:13 +10:00
public DEV: Move `discourse-chat` to the core repo. (#18776) 2022-11-02 10:41:30 -03:00
spec FIX: Make chat editor IDs not null (#18903) 2022-11-08 09:06:13 +10:00
test/javascripts DEV: Load client site settings YML into JS tests (#18413) 2022-11-08 09:17:43 +10:00
README.md DEV: Move `discourse-chat` to the core repo. (#18776) 2022-11-02 10:41:30 -03:00
plugin.rb DEV: initial system tests for chat and plugins (#18881) 2022-11-04 15:06:24 +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"]