discourse/plugins/chat
Martin Brennan 766bcbc684
FIX: Add editing user ids to ChatMessage and ChatMessageRevision (#18877)
This commit adds last_editor_id to ChatMessage for parity with Post in
core, as well as adding user_id to the ChatMessageRevision record since
we need to know who is making edits and revisions to messages, in case
in future we want to allow more than just the current user to edit chat
messages. The backfill for data here simply uses the record's creating
user ID, but in future if we allow other people to edit the messages it
will use their ID.
2022-11-07 09:04:47 +10:00
..
app FIX: Add editing user ids to ChatMessage and ChatMessageRevision (#18877) 2022-11-07 09:04:47 +10:00
assets FIX: prevents chat to enter in endless loop when getting 404 (#18867) 2022-11-03 19:52:44 +01:00
config UX: Add back button in chat browse screen on mobile (#18849) 2022-11-03 09:06:30 +01:00
db FIX: Add editing user ids to ChatMessage and ChatMessageRevision (#18877) 2022-11-07 09:04:47 +10:00
lib FIX: Add editing user ids to ChatMessage and ChatMessageRevision (#18877) 2022-11-07 09:04:47 +10:00
public DEV: Move discourse-chat to the core repo. (#18776) 2022-11-02 10:41:30 -03:00
spec FIX: Add editing user ids to ChatMessage and ChatMessageRevision (#18877) 2022-11-07 09:04:47 +10:00
test/javascripts FIX: prevents chat to enter in endless loop when getting 404 (#18867) 2022-11-03 19:52:44 +01: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"]