AllYourBot / hostedgpt

An open version of ChatGPT you can host anywhere or run locally.
MIT License
228 stars 92 forks source link

Refactor communication between Stimulus controllers #194

Open krschacht opened 3 months ago

krschacht commented 3 months ago

Reddit suggested we should use Outlets for this: https://www.reddit.com/r/rails/comments/1bal22t/how_should_two_stimulus_controllers_share/

I just unpacked an event-approach vs an outlets-approach. I think I outlets is a little bit nicer: https://twitter.com/keithschacht/status/1785736647327236484

Potential solution:

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static outlets = [ "destination" ]

  call(event) {
    console.log(`calling ${event.params.name} with`, event.params)
    this.destinationOutlets.forEach(dest => dest[event.params.name](event.params))
  }
}