Build a new workflow that adds a dropdown in place of the old assign button with the ability to
Re-assign a new user / group to an assigned topic
Re-assign yourself to an assigned topic
Unassign a user / group from an assigned topic
Change `topic_id` to polymorphic approach (In the next step we will allow assigning to individual post)
`topic_id` column is still used for efficient display of assigned users on topic list (to avoid scanning posts)
The first issue is using `updateCurrentUser` when code was conditional
in an initializer. Instead we need to use `needs.user()`.
The second issue was trickier to track down but we were using an
observer in a syncrhnous way which is not allowed in newer Embers. This
removes the observer (and some dead code around it!) so that we can
execute that code synchronously.
If the user selected Never for their frequency of assigned topic
reminder PMs, the option automatically set back to the default
value (Monthly) because of the user of the `or` computed helper,
which considered the 0 value of Never to be falsey.
This is the same problem that occurred in core which was fixed by
d3779d4cf7
We need to be careful around using the `or` helper if any of the
options could be considered falsey.
On the group assignment page, we should be able to display
- all topics assigned to that group + to user belonging to that group
- all topics assigned directly to group
- all topics assigned to individual user
Ability to assign groups.
To assign group, user must have a right to send a message to that group.
In addition, 2 jobs were introduced, - AssignNotification and UnassignNotification to inform interested users in the background about the new assignment.
Since this commit
195dcc92cb
the updateUsername function was missing an @action decorator. This adds
it back and extends the assign acceptance tests to click the
mobile/desktop assign buttons and open the modal and click the
suggestion to save the assignment.
Included:
* DEV: Post-release cleanup
* DEV: Tests cleanup
* DEV: Import cleanup
* DEV: Drop a compatibility fix
* DEV: Use index_by
* DEV: Use ember imports
* DEV: Use discourseDebounce
* DEV: Use @action
* DEV: Use the optional chaining operator
* DEV: Fix an invalid test
* DEV: Use `discourseModule`
* DEV: Add .prettierrc
* DEV: Sync up the version number
The users chooser on the assign modal is the primary input field on the modal, so it makes to shift focus to it when the modal is opened. This PR needs 0f807ba85b in core to work properly, but it won't cause errors (won't have any effects) if it's deployed to a site that doesn't have that commit.
We recently merged a Discourse core's PR to replace usages of Ember's debounce and discourseDebounce with a new debounce wrapper. The new wrapper works exactly like Ember's debounce but internally calls "run" when called in test mode.
This PR replaces all usages of other debounce functions with the new wrapper and fallbacks to Ember's debounce for backward-compatibility.
Before this commit, changing the value of the reminder frequency on a user notifications page was not working.
This commit also get rid of a few deprecations warning.
This significantly reduces the amount of logic we need to carry in the discourse-assign plugin. One side effect is that I had to rename the 'q' parameter to 'search', so that it matches core's implementation.