Skip to content

Commit 44ac97d

Browse files
committed
Memory: Smarter channel leaving behavior - only leave channels that are incorrect. Prevents most instances of #114
1 parent 9227252 commit 44ac97d

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

modules/Memory.lua

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,15 @@ end
327327
return success
328328
end
329329
function module:LeaveChannels(...)
330+
local db = self.db.profile
331+
local map = self:GetChannelMap(unpack(db.channels))
330332
for i = 1, select("#", ...), 3 do
331-
local num, name = select(i, ...);
332-
dbg("leave", num, name)
333-
LeaveChannelByName(num)
333+
local snum, sname = select(i, ...);
334+
local num, name = map[sname], map[snum];
335+
if snum ~= num or sname ~= name then
336+
dbg("leave", snum, sname, num, name)
337+
LeaveChannelByName(snum)
338+
end
334339
end
335340
end
336341

@@ -418,12 +423,18 @@ end
418423
local num, name = select(i, ...);
419424
dbg("restore", name, num)
420425
while index < num do
421-
JoinTemporaryChannel("LeaveMe" .. index)
422-
dbg("join", "LeaveMe" .. index)
426+
if GetChannelName(index) == 0 then
427+
JoinTemporaryChannel("LeaveMe" .. index)
428+
dbg("join", "LeaveMe" .. index)
429+
end
423430
index = index + 1
424431
end
425-
dbg("join", name)
426-
JoinChannelByName(name)
432+
if GetChannelName(index) == 0 then
433+
dbg("join", name)
434+
JoinChannelByName(name)
435+
else
436+
dbg("occupied", name, selct(2, GetChannelName(index)))
437+
end
427438
index = index + 1
428439
end
429440

@@ -436,18 +447,26 @@ end
436447
local num, name = select(i, ...);
437448
dbg("restore", name, num)
438449
while index < num do
439-
JoinTemporaryChannel("LeaveMe" .. index)
440-
dbg("join", "LeaveMe" .. index)
450+
if GetChannelName(index) == 0 then
451+
JoinTemporaryChannel("LeaveMe" .. index)
452+
dbg("join", "LeaveMe" .. index)
453+
else
454+
dbg("skip", index)
455+
end
441456
index = index + 1
442457
end
443-
local clubId, streamId = ChatFrame_GetCommunityAndStreamFromChannel(name);
444-
if not clubId or not streamId then
445-
dbg("join", name)
446-
447-
JoinChannelByName(name)
458+
if GetChannelName(index) == 0 then
459+
local clubId, streamId = ChatFrame_GetCommunityAndStreamFromChannel(name);
460+
if not clubId or not streamId then
461+
dbg("join", name)
462+
463+
JoinChannelByName(name)
464+
else
465+
dbg("addclub", clubId, streamId)
466+
ChatFrame_AddNewCommunitiesChannel(1, clubId, streamId)
467+
end
448468
else
449-
dbg("addclub", clubId, streamId)
450-
ChatFrame_AddNewCommunitiesChannel(1, clubId, streamId)
469+
dbg("occupied", name, select(2, GetChannelName(index)))
451470
end
452471
index = index + 1
453472
end

0 commit comments

Comments
 (0)