56 lines
2.4 KiB
Lua
56 lines
2.4 KiB
Lua
pfUI:RegisterModule("updatenotify", "vanilla:tbc", function ()
|
|
local alreadyshown = false
|
|
local localversion = tonumber(pfUI.version.major*10000 + pfUI.version.minor*100 + pfUI.version.fix)
|
|
local remoteversion = tonumber(pfUI_init.updateavailable) or 0
|
|
local loginchannels = { "BATTLEGROUND", "RAID", "GUILD" }
|
|
local groupchannels = { "BATTLEGROUND", "RAID" }
|
|
|
|
-- Determine branch from toc version string.
|
|
-- experiment toc has "9.x.x (experiment version)", master does not.
|
|
-- Only notify players on the same branch about updates.
|
|
local tocversion = GetAddOnMetadata(pfUI.name, "Version") or ""
|
|
local localbranch = strfind(tocversion, "experiment") and "exp" or "master"
|
|
local versionmsg = "VERSION:" .. localversion .. ":" .. localbranch
|
|
|
|
pfUI.updater = CreateFrame("Frame")
|
|
pfUI.updater:RegisterEvent("CHAT_MSG_ADDON")
|
|
pfUI.updater:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
pfUI.updater:RegisterEvent("PARTY_MEMBERS_CHANGED")
|
|
pfUI.updater:SetScript("OnEvent", function()
|
|
if event == "CHAT_MSG_ADDON" and arg1 == "pfUI" then
|
|
local v, rv, branch = pfUI.api.strsplit(":", arg2)
|
|
local rv = tonumber(rv)
|
|
-- only process VERSION messages from the same branch
|
|
-- messages without a branch tag (old versions) are ignored
|
|
if v == "VERSION" and rv and branch == localbranch then
|
|
if rv > localversion then
|
|
pfUI_init.updateavailable = rv
|
|
end
|
|
end
|
|
end
|
|
|
|
if event == "PARTY_MEMBERS_CHANGED" then
|
|
local groupsize = GetNumRaidMembers() > 0 and GetNumRaidMembers() or GetNumPartyMembers() > 0 and GetNumPartyMembers() or 0
|
|
if ( this.group or 0 ) < groupsize then
|
|
for _, chan in pairs(groupchannels) do
|
|
SendAddonMessage("pfUI", versionmsg, chan)
|
|
end
|
|
end
|
|
this.group = groupsize
|
|
end
|
|
|
|
if event == "PLAYER_ENTERING_WORLD" then
|
|
if not alreadyshown and localversion < remoteversion then
|
|
DEFAULT_CHAT_FRAME:AddMessage(T["|cff33ffccpf|rUI: New version available! Have a look at http://shagu.org !"])
|
|
DEFAULT_CHAT_FRAME:AddMessage(T["|cffddddddIt's always safe to upgrade |cff33ffccpf|rUI. |cffddddddYou won't lose any of your configuration."])
|
|
pfUI_init.updateavailable = localversion
|
|
alreadyshown = true
|
|
end
|
|
|
|
for _, chan in pairs(loginchannels) do
|
|
SendAddonMessage("pfUI", versionmsg, chan)
|
|
end
|
|
end
|
|
end)
|
|
end)
|