Adding a mixin to a class in a plugin?

I need to modify a javascript controller (create-account). If I were writing it from scratch, I’d add a mixin called something like (FooValidation), the same way the mixins PasswordValidation and UsernameValidation are applied ( I can’t figure out how, though.

I could just add the relevant properties/methods to the create account controller using PluginApi.modifyClass, but that doesn’t feel right, especially seeing as I’ll want to reuse the mixin.

What’s the best way to achieve this?

I believe the modifyClass method accepts a mixin as an argument, so I’d try something like this:

api.modifyClass("controller:create-account", FooValidation);

Ah you’re right, modifyClass calls Ember’s reopen, which can take mixins as an argument. I couldn’t get it to work at first but I got it! Thanks!


can you share some sample code?

I do it in Topic List Previews: discourse-topic-previews/preview-edits.js.es6 at master · paviliondev/discourse-topic-previews · GitHub

Specific example: api.modifyClass('component:topic-list', Settings);

I did this to break out shared code that would otherwise have been repeated and almost a cut and paste.