Tumble files around a bit
This commit is contained in:
121
WeakAuras/Projects/ChannelJoiner/init.lua
Normal file
121
WeakAuras/Projects/ChannelJoiner/init.lua
Normal file
@@ -0,0 +1,121 @@
|
||||
---@type string[]
|
||||
local channelNames = {}
|
||||
---@type string[]
|
||||
local channelPasswords = {}
|
||||
---@type string|nil
|
||||
local err
|
||||
---@type string
|
||||
local chatFrameName = aura_env.config.chatFrameName or "Auto"
|
||||
---@type string[]
|
||||
local subscribedMessageGroups = {}
|
||||
---@type string[]
|
||||
local subscribedChannels = {}
|
||||
|
||||
---@param input string
|
||||
---@param deliminer string
|
||||
---@return string[], string|nil
|
||||
local function StrSplit(input, deliminer)
|
||||
if not deliminer then return {}, "deliminer is nil" end
|
||||
if not input then return {}, "input is nil" end
|
||||
local parts = {}
|
||||
for part in string.gmatch(input, "([^" .. deliminer .. "]+)") do
|
||||
table.insert(parts, strtrim(part))
|
||||
end
|
||||
return parts, nil
|
||||
end
|
||||
|
||||
channelNames, err = StrSplit(aura_env.config.channels, ",")
|
||||
if err then
|
||||
print(string.format("Error splitting channels: %s", err))
|
||||
return
|
||||
end
|
||||
|
||||
channelPasswords, err = StrSplit(aura_env.config.channelPasswords, ",")
|
||||
if err then
|
||||
print(string.format("Error splitting channel passwords: %s", err))
|
||||
return
|
||||
end
|
||||
|
||||
subscribedMessageGroups, err = StrSplit(aura_env.config.subscribedMessageGroups, ",")
|
||||
if err then
|
||||
print(string.format("Error splitting subscribed message groups: %s", err))
|
||||
return
|
||||
end
|
||||
|
||||
subscribedChannels, err = StrSplit(aura_env.config.subscribedChannels, ",")
|
||||
if err then
|
||||
print(string.format("Error splitting subscribed channels: %s", err))
|
||||
return
|
||||
end
|
||||
|
||||
aura_env.JoinChannels = function()
|
||||
for i, channelName in ipairs(channelNames) do
|
||||
channelName = strtrim(channelName)
|
||||
local password = nil
|
||||
if i <= #channelPasswords then password = strtrim(channelPasswords[i]) end
|
||||
JoinPermanentChannel(channelName, password)
|
||||
end
|
||||
end
|
||||
|
||||
aura_env.FindOrCreateChatWindow = function()
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
local name = GetChatWindowInfo(i)
|
||||
if name == chatFrameName then
|
||||
print(string.format("Found chat window %s", name))
|
||||
local frame = _G["ChatFrame" .. i]
|
||||
if FCF_IsValidChatFrame(frame) then
|
||||
print(string.format("Frame %s is valid", name))
|
||||
return frame
|
||||
else
|
||||
print(string.format("Frame %s is invalid", name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("Opening new chat window")
|
||||
FCF_OpenNewWindow(chatFrameName)
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
local name = GetChatWindowInfo(i)
|
||||
if name == chatFrameName then
|
||||
print(string.format("Found chat window %s", name))
|
||||
local frame = _G["ChatFrame" .. i]
|
||||
if FCF_IsValidChatFrame(frame) then
|
||||
print(string.format("Frame %s is valid", name))
|
||||
return frame
|
||||
else
|
||||
print(string.format("Frame %s is invalid", name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
aura_env.ConfigureChatWindow = function()
|
||||
local general = _G["ChatFrame1"]
|
||||
local chatFrame = aura_env.FindOrCreateChatWindow()
|
||||
if not chatFrame then
|
||||
print(string.format("Chat window %s not found", chatFrameName))
|
||||
return
|
||||
end
|
||||
|
||||
--SetChatWindowName(chatFrame, chatFrameName)
|
||||
print("Removing all message groups")
|
||||
ChatFrame_RemoveAllMessageGroups(chatFrame)
|
||||
print("Removing all channels")
|
||||
ChatFrame_RemoveAllChannels(chatFrame)
|
||||
print("Adding message groups")
|
||||
for _, messageGroup in ipairs(subscribedMessageGroups) do
|
||||
print(string.format("Adding message group: %s", messageGroup))
|
||||
ChatFrame_AddMessageGroup(chatFrame, strtrim(messageGroup))
|
||||
ChatFrame_RemoveMessageGroup(general, strtrim(messageGroup))
|
||||
end
|
||||
print("Adding channels")
|
||||
for _, channel in ipairs(subscribedChannels) do
|
||||
print(string.format("Adding channel: %s", channel))
|
||||
ChatFrame_AddChannel(chatFrame, strtrim(channel))
|
||||
ChatFrame_RemoveChannel(general, strtrim(channel))
|
||||
end
|
||||
end
|
||||
|
||||
aura_env.ConfigureChatWindow()
|
||||
Reference in New Issue
Block a user