Fix deselecting channel when changing filter & not deselecting on upload

This commit is contained in:
chylex 2018-02-16 16:57:21 +01:00
parent 226b3702de
commit fe065a50d8
3 changed files with 21 additions and 7 deletions

View File

@ -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 => {

View File

@ -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");
}
}
},

View File

@ -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
}
};
// -----