aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_auditorium.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-10-13 08:35:02 +0100
committerGravatar Sadie Powell2022-10-13 08:35:02 +0100
commitf49cfd2f302354cc821ed3372af6fba200c16933 (patch)
tree43a5d48903681bf2c7e45641b1b0233d29497ea6 /src/modules/m_auditorium.cpp
parentClean up various socket-related code. (diff)
parentFix 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.cpp8
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)