local _, shared = ... ---@cast shared HeimdallShared local ModuleName = "Network" ---@diagnostic disable-next-line: missing-fields shared.Network = {} function shared.Network.Init() if not shared.network then shared.network = {} end local updatePending = false local function FriendListUpdate() updatePending = false if not Heimdall_Data.config.network.enabled then return end ---@type table local friends = {} for i = 1, GetNumFriends() do local name, _, _, _, connected, _, _, _ = GetFriendInfo(i) if name then friends[name] = connected if Heimdall_Data.config.network.debug then print(string.format("[%s] Friend %s is %s", ModuleName, name, connected and "online" or "offline")) end else if Heimdall_Data.config.network.debug then print(string.format("[%s] Friend %s is nil", ModuleName, i)) end end end for _, member in ipairs(Heimdall_Data.config.network.members) do if friends[member] == nil and member ~= UnitName("player") then if Heimdall_Data.config.network.debug then print(string.format("[%s] Adding friend %s", ModuleName, member)) end AddFriend(member) end end friends[UnitName("player")] = true shared.networkNodes = {} -- Why are we skipping this again...? -- if false then shared.networkNodes[#shared.networkNodes + 1] = UnitName("player") end for _, player in ipairs(Heimdall_Data.config.network.members) do if friends[player] then shared.networkNodes[#shared.networkNodes + 1] = player if Heimdall_Data.config.network.debug then print(string.format("[%s] Adding network node %s", ModuleName, player)) end end end if Heimdall_Data.config.network.debug then print(string.format("[%s] Network nodes:", ModuleName)) shared.dumpTable(shared.networkNodes) end end local friendsFrame = CreateFrame("Frame") friendsFrame:RegisterEvent("FRIENDLIST_UPDATE") friendsFrame:SetScript("OnEvent", function(self, event, ...) end) local function NetworkTick() if Heimdall_Data.config.network.debug then print("Network module is updating.") end ShowFriends() updatePending = true C_Timer.After(1, function() if updatePending then FriendListUpdate() end end) shared.network.ticker = C_Timer.NewTimer(Heimdall_Data.config.network.updateInterval, NetworkTick, 1) end NetworkTick() print("[Heimdall] Network module loaded") end