Display repo and branch in buddy list

This commit is contained in:
Kevin Sawicki
2013-07-08 15:01:19 -07:00
parent b127492c9f
commit 05748cd7dc
2 changed files with 31 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
url = require 'url'
{$$} = require 'space-pen'
SelectList = require 'select-list'
{getAvailablePeople} = require './presence-utils'
@@ -6,12 +7,18 @@ module.exports =
class BuddyList extends SelectList
@viewClass: -> "#{super} peoples-view overlay from-top"
filterKey: 'name'
filterKey: 'filterText'
initialize: ->
super
@setArray(getAvailablePeople())
people = getAvailablePeople()
people.forEach (person) ->
segments = []
segments.push(person.user.login)
segments.push(person.user.name) if person.user.name
person.filterText = segments.join(' ')
@setArray(people)
@attach()
attach: ->
@@ -20,8 +27,11 @@ class BuddyList extends SelectList
rootView.append(this)
@miniEditor.focus()
itemForElement: ({info}) ->
itemForElement: ({user, state}) ->
$$ ->
@li class: 'two-lines', =>
@div info.login, class: 'primary-line'
@div info.name, class: 'secondary-line'
@div "#{user.login} (#{user.name})", class: 'primary-line'
if state.repository
[owner, name] = url.parse(state.repository.url).path.split('/')[-2..]
name = name.replace(/\.git$/, '')
@div "#{owner}/#{name}@#{state.repository.branch}", class: 'secondary-line'

View File

@@ -19,19 +19,31 @@ module.exports =
oauth_token: token
channel = pusher.subscribe('presence-atom')
channel.bind 'pusher:subscription_succeeded', (members) ->
availablePeople[members.me.id] = members.me
console.log 'subscribed to presence channel'
event = id: members.me.id
event.state = {}
if git?
event.repository =
event.state.repository =
branch: git.getShortHead()
url: git.getConfigValue('remote.origin.url')
channel.trigger('client-details', event)
channel.trigger('client-state-changed', event)
# List self as available for debugging UI when no one else is around
self =
id: members.me.id
user: members.me.info
state: event.state
availablePeople[self.id] = self
channel.bind 'pusher:member_added', (member) ->
console.log 'member added', member
availablePeople[member.id] = member
availablePeople[member.id] = {user: member.info}
channel.bind 'pusher:member_removed', (member) ->
console.log 'member removed', member
availablePeople.delete(member.id)
channel.bind 'client-state-changed', (event) ->
console.log 'client state changed', event
if person = availablePeople[event.id]
person.state = event.state