Quantcast
local function OnEvent(self, event, ...)
	if(event == 'UI_ERROR_MESSAGE') then
		local str = ...
		if(pErrorDB2.all) then
			return
		else
			for k,v in ipairs(pErrorDB2.blacklist) do
				if(string.find(string.lower(str), string.lower(v))) then return end
			end
		end
	end

	return UIErrorsFrame_OnEvent(self, event, ...)
end

local function OnLoad(self, event, addon)
	if(addon ~= 'pError') then return end

	pErrorDB2 = pErrorDB2 or {all = false, blacklist = {}}

	UIErrorsFrame:SetScript('OnEvent', OnEvent)
	self:UnregisterEvent(event)
end

local function pprint(...)
	print(string.format('|cffff8080pError:|r %s', ...))
end

local addon = CreateFrame('Frame')
addon:RegisterEvent('ADDON_LOADED')
addon:SetScript('OnEvent', OnLoad)

SLASH_PERROR1 = '/perror'
SlashCmdList.PERROR = function(str)
	if(str == 'reset') then
		pErrorDB2 = {all = false, blacklist = {}}
		pprint('Savedvariables is now reset')
	elseif(str == 'all') then
		pErrorDB2.all = not pErrorDB2.all
		pprint(string.format('Filtering of all events turned %s', pErrorDB2.all and 'on' or 'off'))
	elseif(str == 'list') then
		if(pErrorDB2.all) then
			pprint('Filtering all events!')
		elseif(not pErrorDB2.blacklist[1]) then
			pprint('Database is empty')
		else
			pprint('Listing database of events:')
			for k,v in pairs(pErrorDB2.blacklist) do
				pprint(format('  \'%s\'', v))
			end
		end
	elseif(#str > 0) then
		if(pErrorDB2.all) then
			pprint('Can\'t add to database, pError is filtering all events')
		else
			local num = 0
			for k,v in ipairs(pErrorDB2.blacklist) do
				num = num + 1
				if(string.find(string.lower(str), string.lower(v))) then
					table.remove(pErrorDB2.blacklist, num)
					pprint(format('\'%s\' removed', v))
					return
				end
			end

			table.insert(pErrorDB2.blacklist, str)
			pprint(format('Added \'%s\' to the database', str))
		end
	else
		pprint('Please provide an error string')
	end
end