function SlackTeam(teamData){this.id=teamData["id"];this.name=teamData["name"];this.domain=teamData["domain"];this.callApp=teamData["prefs"]["calling_app_id"];this.callAppName=teamData["prefs"]["calling_app_name"];this.fileUploadPermission=teamData["prefs"]["disable_file_uploads"];this.fileEditPermission=teamData["prefs"]["disable_file_editing"];this.fileDeletePermission=teamData["prefs"]["disable_file_deleting"];this.icons={image_34:teamData["icon"]["image_34"],image_44:teamData["icon"]["image_44"], image_68:teamData["icon"]["image_68"],image_88:teamData["icon"]["image_88"],image_102:teamData["icon"]["image_102"],image_132:teamData["icon"]["image_132"],image_230:teamData["icon"]["image_230"],image_default:teamData["icon"]["image_default"]}} function SlackChan(chanData,slackData){this.id=chanData["id"];this.name=chanData["name"];this.created=chanData["created"];this.creator=slackData.getMember(chanData["creator"]);this.archived=chanData["is_archived"];this.isMember=chanData["is_member"];this.lastRead=chanData["last_read"];this.members={};if(chanData["members"])for(var i=0,nbMembers=chanData["members"].length;iknownVersion)res[i]=this.history[i].getUpdates(knownVersion);return res}; SlackData.prototype.buildStatic=function(){var res={"team":this.team.toStatic(),"channels":[],"groups":[],"ims":[],"users":[],"bots":[],"self":{"id":this.self.id}};for(var chanId in this.channels)res["channels"].push(this.channels[chanId].toStatic());for(var userId in this.users){res["users"].push(this.users[userId].toStatic());res["ims"].push(this.users[userId].ims.toStatic())}for(var botId in this.bots)res["bots"].push(this.bots[botId].toStatic());return res}; SlackData.prototype.getUpdates=function(knownVersion){var res={};if(this.liveV>knownVersion)res["live"]=this.buildLive(knownVersion);if(this.staticV>knownVersion)res["static"]=this.buildStatic();return res};(function(){if(typeof module!=="undefined")module.exports.SlackData=SlackData})();var R={id:{chanList:"chanList",chatList:"chatList",currentRoom:{title:"currentRoomTitle"}},klass:{selected:"selected",noRoomSelected:"no-room-selected",chatList:{entry:"slack-context-room"}}};function createChanListItem(chan){var dom=document.createElement("li");dom.id=chan.id;dom.className=R.klass.chatList.entry;dom.textContent=chan.name;return dom}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()});var SLACK;function SlackWrapper(){this.lastServerVersion=0;this.context=new SlackData(null)}SlackWrapper.prototype.update=function(data){if(data.v)this.lastServerVersion=data.v;if(data["static"]){this.context.updateStatic(data["static"]);onContextUpdated()}if(data.live)console.log("updated LIVE");console.log(this)};SLACK=new SlackWrapper;var NEXT_RETRY=5,SELECTED_ROOM=null; function poll(callback){var xhr=new XMLHttpRequest;xhr.timeout=1E3*60*1;xhr.onreadystatechange=function(e){if(xhr.readyState===4){if(xhr.status===0){poll(callback);NEXT_RETRY=5;return}var resp=null,success=Math.floor(xhr.status/100)===2;if(success){NEXT_RETRY=5;resp=xhr.response;try{resp=JSON.parse((resp))}catch(e){resp=null}}else{NEXT_RETRY+=Math.floor(NEXT_RETRY/2);NEXT_RETRY=Math.min(60,NEXT_RETRY)}callback(success,resp)}};xhr.open("GET","api?v="+SLACK.lastServerVersion,true);xhr.send(null)} function onPollResponse(success,response){if(success){if(response)SLACK.update(response);startPolling()}else setTimeout(startPolling,NEXT_RETRY*1E3)}function startPolling(){poll(onPollResponse)}function selectRoom(room){if(SELECTED_ROOM)unselectRoom();document.getElementById(room.id).classList.add(R.klass.selected);document.body.classList.remove(R.klass.noRoomSelected);SELECTED_ROOM=room;onRoomSelected()} function unselectRoom(){document.getElementById(SELECTED_ROOM.id).classList.remove(R.klass.selected)};