diff --git a/src/renderer/scr.exec.js b/src/renderer/scr.exec.js index 4774cd9..03cbf08 100644 --- a/src/renderer/scr.exec.js +++ b/src/renderer/scr.exec.js @@ -53,8 +53,8 @@ document.addEventListener("DOMContentLoaded", () => { GUI.updateUserList(users); }); - STATE.onChannelsRefreshed(channels => { - GUI.updateChannelList(channels, STATE.selectChannel); + STATE.onChannelsRefreshed((channels, selected) => { + GUI.updateChannelList(channels, selected, STATE.selectChannel); }); STATE.onMessagesRefreshed(messages => { diff --git a/src/renderer/scr.gui.js b/src/renderer/scr.gui.js index 5674c18..9b5f4f1 100644 --- a/src/renderer/scr.gui.js +++ b/src/renderer/scr.gui.js @@ -193,7 +193,7 @@ var GUI = (function(){ /* * Updates the channel list and sets up their click events. The callback is triggered whenever a channel is selected, and takes the channel ID as its argument. */ - updateChannelList: function(channels, callback){ + updateChannelList: function(channels, selected, callback){ var eleChannels = DOM.id("channels"); if (!channels){ @@ -218,6 +218,11 @@ var GUI = (function(){ callback(ele.getAttribute("data-channel")); }); }); + + if (selected){ + var activeChannel = eleChannels.querySelector("[data-channel='"+selected+"']"); + activeChannel && activeChannel.classList.add("active"); + } } }, diff --git a/src/renderer/scr.state.js b/src/renderer/scr.state.js index af7bf48..4720a10 100644 --- a/src/renderer/scr.state.js +++ b/src/renderer/scr.state.js @@ -21,8 +21,8 @@ var STATE = (function(){ var eventOnMessagesRefreshed; var eventOnUsersRefreshed; - var triggerChannelsRefreshed = function(){ - eventOnChannelsRefreshed && eventOnChannelsRefreshed(ROOT.getChannelList()); + var triggerChannelsRefreshed = function(selectedChannel){ + eventOnChannelsRefreshed && eventOnChannelsRefreshed(ROOT.getChannelList(), selectedChannel); }; var triggerMessagesRefreshed = function(){ @@ -52,6 +52,8 @@ var STATE = (function(){ ROOT.uploadFile = function(file){ FILE = file; MSGS = null; + + selectedChannel = null; currentPage = 1; triggerUsersRefreshed(); @@ -83,6 +85,10 @@ var STATE = (function(){ }; ROOT.getChannelList = function(){ + if (!FILE){ + return []; + } + var channels = FILE.getChannels(); return Object.keys(channels).map(key => ({ @@ -146,8 +152,11 @@ var STATE = (function(){ break; } - triggerChannelsRefreshed(); - ROOT.selectChannel(selectedChannel); // resets current page and updates messages + triggerChannelsRefreshed(selectedChannel); + + if (selectedChannel){ + ROOT.selectChannel(selectedChannel); // resets current page and updates messages + } }; // -----