mirror of
https://github.com/atom/atom.git
synced 2026-01-23 22:08:08 -05:00
Display repo and branch in buddy list
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user