/** * @param {SlackChan} chan * @return {Element} **/ function createChanListItem(chan) { var dom = document.createElement("li"); dom.id = chan.id; dom.className = R.klass.chatList.entry; dom.textContent = chan.name; return dom; } /** * @param {SlackIms} ims * @return {Element} **/ function createImsListItem(ims) { var dom = document.createElement("li"); dom.id = ims.id; dom.className = R.klass.chatList.entry; dom.textContent = ims.user.name; return dom; } function onContextUpdated() { var chanListFram = document.createDocumentFragment(); for (var chanId in SLACK.context.self.channels) { var chan = SLACK.context.channels[chanId] ,chanListItem = createChanListItem(chan); if (chanListItem) { chanListFram.appendChild(chanListItem); } } for (var userId in SLACK.context.users) { var ims = SLACK.context.users[userId].ims ,imsListItem = createImsListItem(ims); if (imsListItem) { chanListFram.appendChild(imsListItem); } } document.getElementById(R.id.chanList).textContent = ""; document.getElementById(R.id.chanList).appendChild(chanListFram); } function onRoomSelected() { var name = SELECTED_ROOM.name || (SELECTED_ROOM.user ? SELECTED_ROOM.user.name : undefined); if (!name) { var members = []; for (var i in SELECTED_ROOM.members) { members.push(SELECTED_ROOM.members[i].name); } name = members.join(", "); } document.getElementById(R.id.currentRoom.title).textContent = name; } function onChanClick(e) { while (e.target !== e.currentTarget && e.target) { if (e.target.classList.contains(R.klass.chatList.entry)) { var room = (SLACK.context.channels[e.target.id] || SLACK.context.ims[e.target.id] || SLACK.context.groups[e.target.id]); if (room && room !== SELECTED_ROOM) { selectRoom(room); } return; } e.target = e.target.parentElement; } } document.addEventListener('DOMContentLoaded', function() { document.getElementById(R.id.chatList).addEventListener("click", onChanClick); startPolling(); });