diff --git a/ChatSaver.lua b/ChatSaver.lua index 34e69ff..d9fc367 100644 --- a/ChatSaver.lua +++ b/ChatSaver.lua @@ -1,50 +1,64 @@ ChatSaver = LibStub('AceAddon-3.0'):NewAddon('ChatSaver','AceConsole-3.0','AceHook-3.0','AceEvent-3.0'); local core = ChatSaver; -core.verified = false; - -function core:OnInitialize() +function core:OnInitialize() self:RawHook(SlashCmdList,'JOIN','JoinChannel',true); self:RawHook(SlashCmdList,'LEAVE','LeaveChannel',true); self:Hook('ToggleChatChannel','ToggleChatChannel',true); self:RegisterChatCommand('cs','SlashCommand'); - if(ChatSaverDB == nil) then ChatSaverDB = {}; end + if(ChatSaverDB == nil) then + core.firstrun = true; + ChatSaverDB = {}; + else + core.firstrun = false; + end end function core:OnEnable() self:RegisterEvent('CHAT_MSG_CHANNEL_NOTICE','RejoinChannels'); + + --store curret channels if this is our first run + if(core.firstrun) then + for frame = 1,10 do + local frameChannels = { GetChatWindowChannels(frame) }; + for i = 1,#frameChannels,2 do + local name,zone = frameChannels[i], frameChannels[i+1] + + if(zone == 0) then + if(ChatSaverDB[name] == nil) then + ChatSaverDB[name] = {}; + ChatSaverDB[name]['frames'] = {}; + ChatSaverDB[name]['index'] = GetChannelName(name); + end + + ChatSaverDB[name]['frames'][frame] = true; + end + end + end + end end function core:SlashCommand() - core.verified = false core:RejoinChannels(); end function core:RejoinChannels(event,message,...) - if(core.verified == true) then - return; - end - - local currentChannels = {}; - for i = 1,select("#",GetChannelList()),2 do - local index,channel = select(i,GetChannelList()); - currentChannels[channel] = true; - end + local currentChannels = { GetChannelList() }; for channel,information in pairs(ChatSaverDB) do if(currentChannels[channel] == nil) then JoinPermanentChannel(channel); for index,shown in pairs(ChatSaverDB[channel].frames) do if(shown) then - _G['ChatFrame'..index].channelList[table.getn(_G['ChatFrame'..index].channelList) + 1] = channel; + ChatFrame_AddChannel(_G['ChatFrame'..index],channel); end end end end - core.verified = true; + self:UnregisterEvent('CHAT_MSG_CHANNEL_NOTICE'); end function core:JoinChannel(msg)