diff options
| author | 2022-10-13 08:35:02 +0100 | |
|---|---|---|
| committer | 2022-10-13 08:35:02 +0100 | |
| commit | f49cfd2f302354cc821ed3372af6fba200c16933 (patch) | |
| tree | 43a5d48903681bf2c7e45641b1b0233d29497ea6 /src/modules/m_auditorium.cpp | |
| parent | Clean up various socket-related code. (diff) | |
| parent | Fix the default case in GetFirstVisibleChannel and document it. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_auditorium.cpp')
| -rw-r--r-- | src/modules/m_auditorium.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp index 83c959895..ba22e50c5 100644 --- a/src/modules/m_auditorium.cpp +++ b/src/modules/m_auditorium.cpp @@ -68,6 +68,7 @@ class ModuleAuditorium final : public Module , public Names::EventListener , public Who::EventListener + , public Who::VisibleEventListener { CheckExemption::EventProvider exemptionprov; AuditoriumMode aum; @@ -81,6 +82,7 @@ public: : Module(VF_VENDOR, "Adds channel mode u (auditorium) which hides unprivileged users in a channel from each other.") , Names::EventListener(this) , Who::EventListener(this) + , Who::VisibleEventListener(this) , exemptionprov(this) , aum(this) , joinhook(this) @@ -188,6 +190,12 @@ public: return MOD_RES_PASSTHRU; return MOD_RES_DENY; } + + ModResult OnWhoVisible(const Who::Request& request, LocalUser* source, Membership* memb) override + { + // Never pick a channel as the first visible one if the channel is in auditorium mode. + return IsVisible(memb) || CanSee(source, memb) ? MOD_RES_PASSTHRU : MOD_RES_DENY; + } }; JoinHook::JoinHook(ModuleAuditorium* mod) |
