ui.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * @param {SlackChan} chan
  3. * @return {Element}
  4. **/
  5. function createChanListItem(chan) {
  6. var dom = document.createElement("li");
  7. dom.id = chan.id;
  8. dom.className = R.klass.chatList.entry;
  9. dom.textContent = chan.name;
  10. return dom;
  11. }
  12. function onContextUpdated() {
  13. var chanListFram = document.createDocumentFragment();
  14. for (var chanId in SLACK.context.self.channels) {
  15. var chan = SLACK.context.channels[chanId]
  16. ,chanListItem = createChanListItem(chan);
  17. if (chanListItem) {
  18. chanListFram.appendChild(chanListItem);
  19. }
  20. }
  21. document.getElementById(R.id.chanList).textContent = "";
  22. document.getElementById(R.id.chanList).appendChild(chanListFram);
  23. }
  24. function onRoomSelected() {
  25. var name = SELECTED_ROOM.name;
  26. if (!name) {
  27. var members = [];
  28. for (var i in SELECTED_ROOM.members) {
  29. members.push(SELECTED_ROOM.members[i].name);
  30. }
  31. name = members.join(", ");
  32. }
  33. document.getElementById(R.id.currentRoom.title).textContent = name;
  34. }
  35. function onChanClick(e) {
  36. while (e.target !== e.currentTarget && e.target) {
  37. if (e.target.classList.contains(R.klass.chatList.entry)) {
  38. var room = (SLACK.context.channels[e.target.id] ||
  39. SLACK.context.ims[e.target.id] ||
  40. SLACK.context.groups[e.target.id]);
  41. if (room && room !== SELECTED_ROOM) {
  42. selectRoom(room);
  43. }
  44. return;
  45. }
  46. e.target = e.target.parentElement;
  47. }
  48. }
  49. document.addEventListener('DOMContentLoaded', function() {
  50. document.getElementById(R.id.chatList).addEventListener("click", onChanClick);
  51. startPolling();
  52. });