@@ -327,10 +327,15 @@ end
327
327
return success
328
328
end
329
329
function module :LeaveChannels (...)
330
+ local db = self .db .profile
331
+ local map = self :GetChannelMap (unpack (db .channels ))
330
332
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
334
339
end
335
340
end
336
341
@@ -418,12 +423,18 @@ end
418
423
local num , name = select (i , ... );
419
424
dbg (" restore" , name , num )
420
425
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
423
430
index = index + 1
424
431
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
427
438
index = index + 1
428
439
end
429
440
@@ -436,18 +447,26 @@ end
436
447
local num , name = select (i , ... );
437
448
dbg (" restore" , name , num )
438
449
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
441
456
index = index + 1
442
457
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
448
468
else
449
- dbg (" addclub" , clubId , streamId )
450
- ChatFrame_AddNewCommunitiesChannel (1 , clubId , streamId )
469
+ dbg (" occupied" , name , select (2 , GetChannelName (index )))
451
470
end
452
471
index = index + 1
453
472
end
0 commit comments