Force category watching based on group membership only once

Continuing the discussion from Ability to force subscription to a category:

There is a solution for making all new users watch a category by default (and users can change that as they like).

There is also a solution to force users to watch a category based on their group membership (and users are not able to permanently unwatch that category as long as they are a member of the group that triggered the watching).

What I am missing is the ability to make users watch a category based on group membership once (i.e. when they join the group) but not enforce if they choose to untwatch. I suppose this would be a matter of extending this plugin to make sure that every user is forced into watching any particular category only once:

https://github.com/amical/discourse-watch-category

Or is there an easier way?

1 Like

Another useful modification of this plugin would be to apply it only to each user’s primary group. How would I do that? @techAPJ @alehandrof

Oh, and here is another idea that does not require any code changes, but would it work? What if I include various private categories in default categories watching first post, will that entail that whenever a user first acquires access to that category (by joining a specific group) s/he will be made to watch that category?

This is going to require a plugin of sorts.

I talked about workflows here interestingly enough:

You are going to need a plugin for now.

1 Like

I suspected that. And luckily, there is already one that makes people watch based on group membership. So what would it take to modify that so that when a users unwatch a force-watched category they will not be re-forced to watch it?

I suppose the plugin would have to maintain a table that keeps track of which categories a user has ever been watching and check against that table before making any user watch a particular category (if that user-category combination is in the table, don’t force-watch). Right?

I think we have an event that is fired when a user is added to a group so you would subscribe to that and just do the once off adding there. No need then to worry about tracking anything fancy to catch the 0.01% edge cases.

1 Like