discourse/plugins/chat
Loïc Guitaut 9c482a645c FIX: Allow deletion of categories when chat channel is not present
Currently it’s not possible to delete a category if an associated chat
channel is present even if there are no messages in this channel.
This can lead to annoying situations for our users.

This patch addresses the issue by checking if the channel is empty
instead of just checking if there is a channel.
2022-11-08 10:25:39 +01:00
..
app FIX: Allow deletion of categories when chat channel is not present 2022-11-08 10:25:39 +01: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: Allow deletion of categories when chat channel is not present 2022-11-08 10:25:39 +01:00
public DEV: Move discourse-chat to the core repo. (#18776) 2022-11-02 10:41:30 -03:00
spec FIX: Allow deletion of categories when chat channel is not present 2022-11-08 10:25:39 +01:00
test/javascripts DEV: Load client site settings YML into JS tests (#18413) 2022-11-08 09:17:43 +10:00
plugin.rb DEV: initial system tests for chat and plugins (#18881) 2022-11-04 15:06:24 +01: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"]