-------------------------------------------------------------------------------
-- Module Declaration
--

local plugin = BigWigs:NewPlugin("BossBlock", "AceHook-3.0")
if not plugin then return end

-------------------------------------------------------------------------------
-- Locals
--

local fnd = string.find
local type = type

-------------------------------------------------------------------------------
-- Event Handlers
--

local function filter(self, event, msg)
	if plugin:IsSpam(msg) then return true end
end

function plugin:OnRegister()
	ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER", filter)
	ChatFrame_AddMessageEventFilter("CHAT_MSG_RAID", filter)
	ChatFrame_AddMessageEventFilter("CHAT_MSG_RAID_WARNING", filter)
	ChatFrame_AddMessageEventFilter("CHAT_MSG_RAID_LEADER", filter)
end

function plugin:OnPluginEnable()
	self:RawHook("RaidNotice_AddMessage", "RWAddMessage", true)
end

local rwf = RaidWarningFrame
local rbe = RaidBossEmoteFrame
function plugin:RWAddMessage(frame, message, colorInfo)
	if frame == rwf and self:IsSpam(message) then
		return
	elseif frame == rbe and not BigWigs.db.profile.showBlizzardWarnings then
		return
	end
	self.hooks["RaidNotice_AddMessage"](frame, message, colorInfo)
end

function plugin:IsSpam(text)
	if not BigWigs.db.profile.showBossmodChat and type(text) == "string" and fnd(text, "%*%*%*") then
		return true
	end
end

