-- ------------------------------------------------------------------------------ --
--                                TradeSkillMaster                                --
--                          https://tradeskillmaster.com                          --
--    All Rights Reserved - Detailed license information included with addon.     --
-- ------------------------------------------------------------------------------ --

local _, TSM = ...
local Mailing = TSM:NewPackage("Mailing")
local Event = TSM.Include("Util.Event")
local private = {
	mailOpen = false,
	frameCallbacks = {},
}



-- ============================================================================
-- Module Functions
-- ============================================================================

function Mailing.OnInitialize()
	Event.Register("MAIL_SHOW", private.MailShow)
	Event.Register("MAIL_CLOSED", private.MailClosed)
end

function Mailing.RegisterFrameCallback(callback)
	tinsert(private.frameCallbacks, callback)
end

function Mailing.IsOpen()
	return private.mailOpen
end



-- ============================================================================
-- Private Helper Functions
-- ============================================================================

function private.MailShow()
	private.mailOpen = true
	for _, callback in ipairs(private.frameCallbacks) do
		callback(true)
	end
end

function private.MailClosed()
	if not private.mailOpen then
		return
	end
	private.mailOpen = false
	for _, callback in ipairs(private.frameCallbacks) do
		callback(false)
	end
end