From 95f5bec324b876ae54532d79ba3766f54389ce05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen?= Date: Sun, 28 Dec 2025 21:45:54 +0100 Subject: [PATCH] update to constraints --- .../Modules/ChannelSync.lua | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/TradeSkillMaster_AuctionDB/Modules/ChannelSync.lua b/TradeSkillMaster_AuctionDB/Modules/ChannelSync.lua index f653e5a..9e6c1d1 100644 --- a/TradeSkillMaster_AuctionDB/Modules/ChannelSync.lua +++ b/TradeSkillMaster_AuctionDB/Modules/ChannelSync.lua @@ -9,11 +9,11 @@ -- Channel sync for sharing AuctionDB scan data between players. local TSM = select(2, ...) -local ChannelSync = TSM:NewModule("ChannelSync", "AceComm-3.0", "AceEvent-3.0") +local ChannelSync = TSM:NewModule("ChannelSync", "AceEvent-3.0") local CHANNEL_NAME = "TSM_AuctionDB" local COMM_PREFIX = "TSMAuctionDB" -local CHUNK_SIZE = 220 +local CHUNK_SIZE = 180 local BUNDLE_TIMEOUT = 45 local private = { @@ -27,7 +27,7 @@ local strbyte = string.byte local libS = LibStub:GetLibrary("AceSerializer-3.0") local libC = LibStub:GetLibrary("LibCompress") -local libCE = libC:GetAddonEncodeTable() +local libCE = libC:GetChatEncodeTable("", "\031") local function HashString(str) local hash = 0 @@ -49,15 +49,15 @@ end local function ChatFilter(_, _, msg, _, _, _, _, _, channelName) if channelName ~= CHANNEL_NAME then return end - if strsub(msg, 1, #COMM_PREFIX) == COMM_PREFIX then + if strsub(msg, 1, #COMM_PREFIX + 1) == COMM_PREFIX .. "|" then return true end end function ChannelSync:OnEnable() - self:RegisterComm(COMM_PREFIX) self:RegisterEvent("PLAYER_ENTERING_WORLD", "OnPlayerEnteringWorld") self:RegisterEvent("CHAT_MSG_CHANNEL_NOTICE", "OnChannelNotice") + self:RegisterEvent("CHAT_MSG_CHANNEL", "OnChannelMessage") if ChatFrame_AddMessageEventFilter then ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", ChatFilter) end @@ -105,7 +105,7 @@ function ChannelSync:BroadcastScanData(scanType) return end EnsureChannel() - if not private.channelName then return end + if not private.channelName or not private.channelId then return end TSM:Serialize() local payload = { @@ -123,7 +123,7 @@ function ChannelSync:BroadcastScanData(scanType) for i = 1, total do local chunk = strsub(encoded, (i - 1) * CHUNK_SIZE + 1, i * CHUNK_SIZE) local msg = strjoin("|", COMM_PREFIX, hash, i .. "/" .. total, chunk) - self:SendCommMessage(COMM_PREFIX, msg, "CHANNEL", private.channelName) + SendChatMessage(msg, "CHANNEL", nil, private.channelId) end end @@ -151,7 +151,10 @@ local function MergeIncomingData(payload) TSM:Serialize() end -function ChannelSync:OnCommReceived(_, msg, _, source) +function ChannelSync:OnChannelMessage(_, msg, source, _, _, _, _, _, channelName) + if channelName ~= CHANNEL_NAME then return end + if strsub(msg or "", 1, #COMM_PREFIX + 1) ~= COMM_PREFIX .. "|" then return end + source = ("-"):split(source or "") if strlower(source or "") == strlower(UnitName("player") or "") then return end